それらの間に何か違いはありますか?それらのうちの1つを他のものよりも好ましいものにするいくつかの特別なユースケース?
一般に、コマンドがroot
特権を必要としない場合は、ユーザーroot
として実行しません。
常に最小の特権で実行してください。 <command>
にバグがあり、攻撃者が<command>
を呼び出したユーザーの権限で実行されるコードを挿入できると想像してください。
誤り:ただし、この特定のケースでは、Nohup Sudo <command>
は<command>
ではなくSudo
でのハングアップを防止すると思います。だから私はSudo Nohup <command>
に行きます。
編集:実際、man fork
によると、子プロセスのシグナルは親プロセスに継承され、これはNohup
にも影響を与えるようです。これについて言及してくれたStephen Kittに感謝します。
したがって、Nohup Sudo <command>
を楽しく実行できます。
編集:実際には、私は次のテストケースを作成しました:
$ cat /tmp/test1.sh /tmp/test2.sh
#!/bin/sh
/tmp/test2.sh &
sleep 5
#!/bin/sh
echo "test"
kill -HUP $$
Nohup /tmp/test1.sh
を実行すると、出力(Nohup.outに格納)は次のようになります。
test
これは、kill -HUP $$
がNohupによってインターセプトされたことを意味します。