发行版是 RHEL 5。
该脚本已添加到 chkconfig 中,如下所示:
# chkconfig --add script
# chkconfig script on
但拿起机器时它拒绝启动,可能是什么问题呢?
#!/bin/bash
#
# chkconfig: 2345 20 80
# description: starts script
. /etc/rc.d/init.d/functions
PATHB=/xxxx/opt/virtualenvs/primary/bin
USER=userx
function start() {
/usr/bin/sudo /bin/su - $USER -c "$PATHB/script start"
}
function stop() {
/usr/bin/sudo /bin/su - $USER -c "$PATHB/script stop"
}
function status() {
/usr/bin/sudo /bin/su - $USER -c "$PATHB/script status"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
答案1
初始化脚本由 root 运行,因此无需添加 sudo。使用 sudo 的唯一原因是当您是非特权用户,需要以更高的权限运行某些操作时 - 如果您已经是 root,则不会出现这种情况。
由于 sudo 只能在命令行中使用,而不能在 init 脚本中使用,所以我敢打赌你的 sudoers 文件包含requiretty
。这使得 sudo 只能在具有 tty 的 shell 中使用,因此它无法被试图通过恶意 php 脚本或其他东西闯入的人运行 - 但当然,它也会禁用 cron 和 init 中的 sudo。
答案2
您是否已使脚本可执行?即通过运行 chmod +x