21

そのため、ハングアップせずに適切にルートとして実行したいスクリプトがあります。コマンドはどのような順序で配置すればよいですか?

sudo nohup 素敵な foo.bash &

また

nohup すてきな sudo foo.bash &

関係ないと思いますが、詳しい方の意見をお願いします

4

6 に答える 6

12

負のナイスネスが必要な場合は、次のようにします。「info coreutils」によると、nohup はナイスに先行する必要があるため、sudo nohup nice コマンドを実行します。負のナイス値が必要な場合は、root だけが負のナイス値を使用できるため、sudo を先に指定する必要があります。

nohup nice sudo コマンド これにより、nohup と nice が root 権限で実行されないようになります。

于 2010-05-09T11:19:44.313 に答える
11

sudo は良さを尊重しないかもしれません。少なくとも、私のマシンにはありません (Ubuntu 9.04)。これを実行する:

nice sudo nice
sudo nice nice

0 と 10 を出力します (コマンドなしの 'nice' は、現在のナイス度を出力することに注意してください)。

于 2009-12-15T20:22:37.300 に答える
6
~ $ sudo nohup nice whoami
nohup: ignoring input and appending output to `nohup.out'
~ $ sudo cat nohup.out 
root

最初の方法と2番目の方法の違いは、nohup.outファイルの所有者です。sudo最初にrootが所有するようにし、nohup次にsudoがユーザーが所有するようにします。

于 2008-12-08T18:32:27.540 に答える
5

nohupとniceがroot権限で実行されないように、sudoは最後に実行する必要があります。

後者

于 2008-12-08T18:31:48.243 に答える
3

他の回答に同意しません。私はお勧め:

sudo nohup nice foo.sh

nohup sudo #failを観察しました。つまり、nohup が常に sudo されたサブサブプロセスに転送されるわけではありません (これは、さらに他のスクリプトに委任された Ubuntu の特定の /etc/init.d スクリプトに対するものでした)。理由はわかりませんが、確かに驚くべきことですが、実際にはそうであり、デバッグにはかなりの時間がかかりました。

(niceness が通過しないと他の人が報告しているので、最後に配置するのが最善のようです... ただし、OS に疑問がある場合は、nice を先に配置します。通常、nice が有効にならないことは、nohup が有効にならないことよりも問題が少ないからです!)

sudo nohupは、前述のように nohup.out を root が所有することに注意してください。ただし、これは次のように修正されます。

sudo nohup nice foo.sh >> /tmp/foo.stdout.log 2>> /tmp/foo.stderr.log

于 2012-06-11T10:44:42.597 に答える
1

それらのすべてがexec*syscallを実行して、ボールを次のボールに渡すと思います。したがって、順序が何であれ、ハングしているプロセスが残ることはありません。

他の2つがシグナルハンドラーを壊さないように、nohupは最後にする必要があります。(niceはシグナルで再生されないと確信していますが、sudoでは再生されます。)

次に、sudoとniceは、スケジューリングの優先順位をniceで変更する方法によって異なります。

  • 優先度を上げたい場合(つまり、niceに負の値を指定したい場合)は、前にsudoを実行してください。
  • 優先度を下げたい場合(正の値を指定してください)は、root権限は必要ないため、sudoの前に行ってください。
于 2008-12-08T18:32:37.133 に答える