Centos
pidof 服務不存在
我正在嘗試為某些服務設置 init.d 腳本 - 讓它成為位於 /usr/bin/uptime 中的正常執行時間。這是我的腳本:
#!/bin/bash # description: read service #Source function library . /etc/rc.d/init.d/functions RETVAL=0 UPTIME=/usr/bin/uptime PIDFILE=/var/run/read.pid start() { echo -n $"Starting $UPTIME service: " /usr/bin/uptime & echo $! > $PIDFILE; RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/uptime echo return $RETVAL } stop() { echo -n $"Shutdown $UPTIME service: " killproc /usr/bin/uptime rm -f $PIDFILE RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/uptime echo return $RETVAL } restart() { echo -n $"Restarting $UPTIME service: " killproc /usr/bin/uptime /usr/bin/uptime & } status() { if [ `pidof /var/run/read.pid` ];then echo "Running" else echo "Not running" fi } case "$1" in start) start ;; stop) stop ;; status) status /usr/bin/uptime ;; restart|reload) stop start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit $?
啟動後我的腳本
PIDFILE=/var/run/read.pid
已成功創建。但是當我用於status
我的服務時 - 它沒有執行。這意味著pidof /var/run/read.pid
沒有找到我的服務的pid。ps -ef
也沒有顯示任何東西。我要怎麼做才能使我的讀取服務在後台正常執行並且由於我的腳本而顯示我的status
命令。/etc/init.d/read.sh status``running
我認為您沒有正確使用 pidof,pidof 採用程序名稱並返回它的 PID,例如
pidof httpd 19420 7273 7272 7271 7270 7269 7268 7267 7266
您將文件名傳遞給 pidof 而不是程序名稱。我猜你想要做的是檢查 pid 文件中儲存的 pid 程序是否仍在執行。
您之前遇到困難的函式文件似乎有一個名為的函式
status
,看起來幾乎可以滿足您的需求status -p pidfile processname
例如
status -p /var/run/read.pid someprocess someprocess (pid 7272) is running...
該
$?
變數也被適當地設置。另請注意,您提供的程序名稱可以是任何未檢查的名稱。