質問

だから私は、ハングアップなしで、根のように実行したいスクリプトを持っています。コマンドをどのように注文すればよいですか?

sudo nohup nice foo.bash&

また

nohup nice sudo foo.bash&

私はそれが問題ではないと思いますが、 本当 知る。

役に立ちましたか?

解決

否定的な素晴らしさが望ましい場合、私はします:sudo nohupいいコマンドは「情報coreutils」nohupによるとすべきだからです 前処理 良い。ネガティブな値が必要な場合は、sudoのみがネガティブな値を使用できるため、sudoが前に来なければなりません。

肯定的な素晴らしさが望ましい場合、私は単純に行います:Nohup Nice Sudo Commandこれは、NohupとNiceがルートの特権で実行されないことを保証します。

他のヒント

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

nice sudo nice
sudo nice nice

0と10を印刷します。

sudoは最後に進むべきで、nohupとniceがルートの特権で実行されないようにします。

したがって、後者

~ $ sudo nohup nice whoami
nohup: ignoring input and appending output to `nohup.out'
~ $ sudo cat nohup.out 
root

最初の方法と2番目の方法の違いは、誰がnohup.outファイルを所有しているかです。 sudo 最初にルートが所有し、 nohup Sudoがユーザーが所有する前に。

同意しない 他の答えと。私はお勧め:

sudo nohup nice foo.sh

私は観察しました nohup sudo #不合格 -IE Nohupは常にSudo'dサブサブプロセスに転送されるとは限りません(これは、まだ他のスクリプトに委任されたubuntuの特定の /etc/init.dスクリプト向けでした)。理由はわかりませんが、確かに驚くべきことですが、事実であり、デバッグするのに少しずつかかりました。

(私は他の人が渡されていないということを報告しているので、最後にそれを置くのが最善のようです...ただし、あなたのOSに疑問がある場合は早く良いことです。

ご了承ください sudo nohup 言及されているように、rootが所有するnohup.outを残しますが、それは次のことで固定されています。

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

私は彼ら全員がエグゼクティブ* syscallを行い、ボールを次のボールに渡すために行うと思います。したがって、順序が何であれ、それは吊りプロセスを残さないでしょう。

他の2人が信号ハンドラーを閉じないように、nohupは最後であるべきだと思います。 (私は確かに信号で遊んでいませんが、sudoはそうです。)

それから、sudoとnice、それはすべて、あなたがどのようにスケジューリングの優先順位をNICEで変更したいかに依存します。

  • 優先順位を上げたい場合(つまり、否定的な値をいい人に与えてください)、前にsudoを行います。
  • ルートの特権を必要としないので、優先順位を下げたい場合(良い価値を与える)、sudoの前にそれをしてください。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top