【问题标题】:sudo nohup nice <-- in what order?sudo nohup nice <-- 按什么顺序?
【发布时间】:2010-09-25 21:49:11
【问题描述】:

所以我有一个脚本,我想以 root 身份运行,没有挂断并且很好。我应该按什么顺序输入命令?

sudo nohup nice foo.bash &

nohup nice sudo foo.bash &

等等

我怀疑这无关紧要,但希望真正了解的人提供一些见解。

【问题讨论】:

    标签: bash unix sudo nohup nice


    【解决方案1】:

    如果需要消极的友善,我会这样做: sudo nohup 不错的命令 因为根据`info coreutils' nohup 应该之前很好。如果我想要一个负的 nice 值,sudo 必须在前面,因为只有 root 可以使用负的 nice 值。

    如果需要积极的友善,我会这样做: nohup 不错的 sudo 命令 这确保 nohup 和 nice 不会以 root 权限运行。

    【讨论】:

      【解决方案2】:

      sudo 可能不尊重友善。至少,它不在我的机器上(Ubuntu 9.04)。运行这个:

      nice sudo nice
      sudo nice nice
      

      打印出 0 和 10。(请注意,没有命令的 'nice' 会打印出当前的 niceness。)

      【讨论】:

      • 所有其他答案都会出错。 Debian Squeeze 也是如此:友善并不会坚持sudo。这也是一种耻辱,因为细粒度的sudoers 会阻止允许的命令正常运行。
      【解决方案3】:
      ~ $ sudo nohup nice whoami
      nohup: ignoring input and appending output to `nohup.out'
      ~ $ sudo cat nohup.out 
      root
      

      第一种方式和第二种方式的区别在于谁拥有 nohup.out 文件。 sudo 首先将使其归 root 所有,nohup 然后 sudo 将使其归您的用户所有。

      【讨论】:

        【解决方案4】:

        sudo 应该放在最后,这样 nohup 和 nice 就不会以 root 权限运行。

        是后者

        【讨论】:

          【解决方案5】:

          不同意其他答案。我推荐:

          sudo nohup nice foo.sh

          我观察到 nohup sudo #fail -- 即 nohup 并不总是转移到 sudo 的子子进程(这是针对某些 /etc/init .d 脚本在 Ubuntu 上委托给其他脚本)。不知道为什么,当然令人惊讶,但确实如此,并且花了很长时间进行调试。

          (我注意到其他人报告 niceness 没有通过,所以似乎最好把它放在最后......尽管如果对你的操作系统有疑问,请早点把 nice 放好,因为 nice 不生效通常比 nohup 不采取更不是问题效果!)

          请注意,sudo nohup 让 nohup.out 归 root 所有,正如已经提到的,但这已通过以下方式修复:

          sudo nohup nice foo.sh &gt;&gt; /tmp/foo.stdout.log 2&gt;&gt; /tmp/foo.stderr.log

          【讨论】:

            【解决方案6】:

            我猜他们都做了一个 exec* 系统调用来将球传给下一个,所以,无论顺序如何,它都不会留下任何挂起的进程。

            我会说 nohup 应该放在最后,这样其他两个就不会破坏信号处理程序。 (我确定 nice 不会使用信号,但 sudo 可以。)

            然后,sudo 和 nice,这一切都取决于您希望使用 nice 更改调度优先级的方式。

            • 如果您想提高优先级(即,给 nice 赋予负值),请先执行 sudo。
            • 如果您想降低优先级(给 nice 一个正值),请在 sudo 之前执行,因为您不需要 root 权限。

            【讨论】:

            • 感谢您的回复。你能详细说明 sudo 玩信号吗? (或者只是提供一个链接 :) 谢谢!
            猜你喜欢
            • 2020-10-01
            • 2013-07-02
            • 2022-01-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-23
            相关资源
            最近更新 更多