因此,我有一个脚本,我想作为root运行,而无需挂起并且很好。我应该放入什么顺序?

sudo nohup nice foo.bash&

或者

nohup nice sudo foo.bash&

等等

我怀疑这没关系,但是希望从那些人那里得到一些见解 真的 知道。

有帮助吗?

解决方案

如果需要负面的问题,我会做:sudo nohup nice命令,因为根据“信息coreutils” Nohup应该 早期 好的。如果我想要一个负值的值,那么sudo必须以前出现,因为只有root才能使用负良好值。

如果需要积极的善意,我会简单地做:Nohup nice sudo命令确保Nohup和Nice不会具有根特权。

其他提示

Sudo可能不尊重NICES。至少,它不在我的机器上(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

您完成的第一和第二种方式之间的区别是谁拥有Nohup.out文件。 sudo 首先将其由根拥有, nohup 在Sudo将其拥有您的用户之前。

不同意 还有其他答案。我建议:

sudo nohup nice foo.sh

我已经观察到 Nohup Sudo #失败 - IE Nohup并不总是转移到Sudo'd Sub-Sub-processes(这是针对Ubuntu上的某些/etc/init.d脚本,该脚本已委派给其他脚本)。不确定为什么,当然令人惊讶,但是是这种情况,并且在调试时花了很多时间。

(我注意到其他人报告没有传递的好处,所以最好把它持续下去……尽管如果对您的操作系统有疑问,请更早地提早,因为不善于生效通常比Nohup没有生效!)

注意 Sudo Nohup 如前所述,也剩下root拥有的nohup。

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

我想他们所有人都会做一个执行人* syscall将球传给下一个球,因此,无论订单如何,它都不会留下任何悬挂的过程。

我会说Nohup应该是持久的,以便其他两个不关闭信号处理程序。 (我敢肯定,不错的情况不会使用信号,但是苏多会发出信号。)

然后,苏多(Sudo)和尼斯(Nice),这完全取决于您要使用NICE更改计划优先级的方式。

  • 如果您想提高优先级(即,对nice给出负值)。
  • 如果您想降低优先级(给予良好的正值)在sudo之前做到这一点,因为您不需要根特权。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top