Bash 苏多诺胡普尼斯<;——按什么顺序?
因此,我有一个脚本,我想作为root用户运行,不需要挂断,而且很好。我应该把命令按什么顺序排列 sudo nohup nice foo.bash& 或 nohup nice sudo foo.bash& 等等Bash 苏多诺胡普尼斯<;——按什么顺序?,bash,unix,sudo,nohup,nice,Bash,Unix,Sudo,Nohup,Nice,因此,我有一个脚本,我想作为root用户运行,不需要挂断,而且很好。我应该把命令按什么顺序排列 sudo nohup nice foo.bash& 或 nohup nice sudo foo.bash& 等等 我想这没关系,但我想从那些真正知道的人那里得到一些启示。sudo应该排在最后,这样nohup和nice就不会以root权限运行 那么后者呢 ~ $ sudo nohup nice whoami nohup: ignoring input and appending output to `n
我想这没关系,但我想从那些真正知道的人那里得到一些启示。sudo应该排在最后,这样nohup和nice就不会以root权限运行 那么后者呢
~ $ sudo nohup nice whoami
nohup: ignoring input and appending output to `nohup.out'
~ $ sudo cat nohup.out
root
第一种方法和第二种方法的区别在于谁拥有nohup.out文件
sudo
首先将其归root所有,nohup
然后sudo将其归您的用户所有。我猜他们都会执行exec*syscall将球传给下一个,因此,无论顺序如何,都不会留下任何挂起过程
我认为nohup应该是最后一个,这样其他两个就不会影响信号处理器。(我肯定尼斯不会玩信号,但sudo会。)
然后,sudo和nice,这完全取决于您想用nice改变调度优先级的方式
- 如果你想提高优先级(也就是说,给nice一个负值),那么在之前先做sudo
- 如果您想降低优先级(给nice一个正值),请在sudo之前执行,因为您不需要root权限
- sudo可能不尊重礼貌。至少在我的机器上没有(Ubuntu 9.04)。运行此:
nice sudo nice
sudo nice nice
打印出0和10。(请注意,没有命令的“nice”会打印出当前的niceness。)如果需要负niceness,我会: sudo nohup nice命令 因为根据'info coreutils'的说法,诺胡普应该表现得很好。如果我想要一个负的nice值,sudo必须在前面,因为只有root可以使用负的nice值 如果需要正面的精确性,我会简单地做: nohup尼斯sudo命令
这确保nohup和nice不会以root权限运行。不同意其他答案。我建议:
sudo nohup nice foo.sh
我观察到nohup sudo#fail——即nohup并不总是被转移到sudo的子进程中(这是Ubuntu上的某些/etc/init.d脚本委托给其他脚本)。不知道为什么,当然令人惊讶,但情况确实如此,并花了很长时间进行调试
(我注意到其他人报告说niceness没有通过,所以似乎最好把它放在最后……尽管如果对您的操作系统有疑问,请将nice放在前面,因为nice没有生效通常比nohup没有生效的问题要小!)
请注意,sudo nohup将nohup.out归root所有,也如前所述,但这是由一个:
sudo nohup nice foo.sh>/tmp/foo.stdout.log 2>/tmp/foo.stderr.log
谢谢您的回复。你能详细解释一下sudo在玩信号吗?(或者只是提供一个链接:)谢谢!每一个其他的答案都是错误的。Debian挤压是一样的:美好不会坚持到底。这也是一个遗憾,因为细粒度的sudoers
会很好地阻止允许的命令运行。