Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 苏多诺胡普尼斯<;——按什么顺序?_Bash_Unix_Sudo_Nohup_Nice - Fatal编程技术网

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

因此,我有一个脚本,我想作为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 `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
      会很好地阻止允许的命令运行。