【问题标题】:How to execute the command after sudo susudo su后如何执行命令
【发布时间】:2016-11-03 11:50:42
【问题描述】:

我需要在 sudo su 之后执行“monit restart haproxy”命令。

这是我的脚本.sh

sudo su
monit restart haproxy.

在这里,如果我将执行 script.sh 文件,那么它将挂起并且不执行 monit restart haproxy 命令。

有什么想法吗?

【问题讨论】:

    标签: shell sh monit cf-bosh


    【解决方案1】:

    sudo 命令要求您输入密码,这就是它会挂起的原因,您可以使用管道将密码传递给命令,如下所示:

    echo <password> | sudo su
    monit restart haproxy.
    

    【讨论】:

    • 其实 sudo su 命令不要指望密码。好像我会手动执行 sudo su。然后它会在不提供密码的情况下跳转到根终端。所以基本上问题是,一旦它移动到 root 用户,那么它就不会执行 monit 命令。
    • root用户是否有权执行命令monit restart haproxy.
    • 是的..我可以在 sudo su 之后执行 monit restart haproxy 命令。
    【解决方案2】:

    Here 提供了一些关于 sudo su 的信息。您需要输入 sudo 或 su 命令的密码,这是我发布的链接中的一些引用,这可能是您问题的根源:

    sudo - sudo 旨在以 root 权限运行单个命令。但与 su 不同的是,它会提示您输入当前用户的密码。此用户必须在 sudoers 文件中(或在 sudoers 文件中的组)。 默认情况下,Ubuntu 会“记住”你的密码 15 分钟,这样你就不必每次都输入密码了。

    【讨论】: