Debian
使用 LSBInitScripts 在啟動時添加程序
我使用 Debian Lenny(我知道 lenny 很老,其他 bla bla)並且想在啟動時放置一個程序。我
update-rc.d
通過在/etc/init.d
. 通過參考http://wiki.debian.org/LSBInitScripts,我需要在/etc/init.d/myprogram
### BEGIN INIT INFO # Provides: myprogram # Required-Start: $all # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO
那麼我是否需要附加任何腳本,例如:
DAEMON_PATH="/home/myprogram" DAEMON=node DAEMONOPTS="-my opts" NAME=node DESC="myprogram" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME case "$1" in start) printf "%-50s" "Starting $NAME..." cd $DAEMON_PATH PID=`$DAEMON $DAEMONOPTS > /dev/null 2>&1 & echo $!` #echo "Saving PID" $PID " to " $PIDFILE if [ -z $PID ]; then printf "%s\n" "Fail" else echo $PID > $PIDFILE printf "%s\n" "Ok" fi ;; status) printf "%-50s" "Checking $NAME..." if [ -f $PIDFILE ]; then PID=`cat $PIDFILE` if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then printf "%s\n" "Process dead but pidfile exists" else echo "Running" fi else printf "%s\n" "Service not running" fi ;; stop) printf "%-50s" "Stopping $NAME" PID=`cat $PIDFILE` cd $DAEMON_PATH if [ -f $PIDFILE ]; then kill -HUP $PID printf "%s\n" "Ok" rm -f $PIDFILE else printf "%s\n" "pidfile not found" fi ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {status|start|stop|restart}" exit 1 esac
我覺得 LSBInitScripts 和上面的腳本是不同的東西,但是當我檢查一些文件時
/etc/init.d
,它們有相似的腳本。您能否澄清我是否需要上述腳本。如果我需要使用上面的腳本,我需要創建一個 .pid 文件還是會自動創建?
就在這種情況下而言,它們是同一回事。LSB 資訊只是添加到腳本的 init 開頭的 shell 註釋形式的元數據。
只需將這兩個塊結合起來。它應該包含:
- 解釋器行(例如,
#!/bin/sh
)- LSB 資訊,根據您的應用程序的需要進行編輯。
- 腳本的其餘部分(啟動/停止函式等)。
如果您需要一個範例,您可以查看
/etc/init.d/skeleton
. 完成後,將文件放入/etc/init.d/
並使用insserv
,而不是update-rc.d
安裝符號連結。