sudo nohup nice < - どの順序で?
質問
だから私は、ハングアップなしで、根のように実行したいスクリプトを持っています。コマンドをどのように注文すればよいですか?
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の前にそれをしてください。