该脚本不会在启动时执行,有什么想法吗?

该脚本不会在启动时执行,有什么想法吗?

发行版是 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

相关内容