9

コマンドを nohup して別のユーザーとして実行しようとしていますが、これを行うたびに 2 つのプロセスが生成されます。

例えば:

$ nohup su -s /bin/bash nobody -c "my_command" > outfile.txt &

これは間違いなく my_command を nobody として実行しますが、表示したくない余分なプロセスがあります。

$ ps -Af
.
.
.
root ... su -s /bin/bash nobody my_command
nobody ... my_command

root プロセスを強制終了しても、nobody プロセスは存続しますが、root プロセスをまったく実行しない方法はありますか? my_command の ID を取得してそれを強制終了するのは、もう少し複雑です。

4

5 に答える 5

3
nohup runuser nobody -c "my_command my_command_args....." < /dev/null >> /tmp/mylogfile 2>&1 &
于 2013-03-21T17:50:16.817 に答える
1

たとえば/usr/local/bin/start_my_command、次のような小さなスクリプトを作成することをお勧めします。

#!/bin/bash
nohup my_command > outfile.txt &

chownとを使用chmodして、実行可能で が所有するように設定してから、 を実行しnobodyますsu nobody -c /usr/local/bin/start_my_command

于 2012-07-30T19:02:43.993 に答える
0

これをセッションで実行する際の注意点は、バックグラウンドで実行すると、セッションに関連付けられたジョブがあり、バックグラウンド ジョブが強制終了される可能性があることです ( su -c はこれを回避します)。

シェルからプロセスの関連付けを解除するには (シェルを終了してもプロセスを実行し続けられるようにするため)、 を使用しますdisown

于 2020-07-02T19:59:40.037 に答える