Linux

這個腳本不會在啟動時執行,想法?

  • November 18, 2013

分佈是 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

初始化腳本由 root 執行,因此不需要將 sudo 添加到混合中。使用 sudo 的唯一原因是當您是需要以更高權限執行某些東西的非特權使用者時 - 當您已經是 root 時絕不會出現這種情況。

由於使用 sudo 從命令行而不是從 init 腳本工作,我會打一個小賭注,你的 sudoers 文件包含requiretty. 這使得 sudo 只能從具有 tty 的 shell 中使用,因此它不能被試圖通過惡意 php 腳本或其他東西闖入的人執行 - 但當然它也會從 cron 和 init 禁用 sudo。

引用自:https://serverfault.com/questions/555668