【问题标题】:Run service using sudo in bash/shell script在 bash/shell 脚本中使用 sudo 运行服务
【发布时间】:2016-08-10 21:23:14
【问题描述】:

我必须使用 bash/shell 脚本来运行 apollo-broker-service

为此,我使用以下脚本

#!/bin/bash

if pidof -x "apollo" >/dev/null; then
echo "Apollo MQTT is Running."
exit 0
else
echo "Apollo MQTT is Stopped."
sudo service apollo-broker-service start
exit 2
fi

如果我的服务停止。它不是启动“apollo-broker-service”服务。

我已经在 /etc/sudoers

中添加了以下行
guest ALL = NOPASSWD: /usr/sbin/service

我使用的是 CentOS 7。

【问题讨论】:

  • 当您运行该脚本时会发生什么?它输出什么?运行该脚本的帐户是什么?用bash -x $script 输出运行该脚本有什么作用?
  • @EtanReisner 来宾用户运行此脚本。运行此脚本时,仅打印“Apollo MQTT is Stopped”没有错误。
  • @EtanReisner 我试过“bash -x $(sudo service apollo-broker-service start)”但没有任何改变。
  • 这不是我告诉你运行的命令。虽然我说的命令在这种情况下不太可能有太大帮助。服务脚本是什么样的?另外我希望您的问题可能是 service != /usr/sbin/servicesudo 很挑剔。

标签: linux bash shell centos


【解决方案1】:
strace ./apollo-broker-service

这应该会给你一个答案,为什么它不起作用。 IMO 它与权限有关。

【讨论】: