如何在init.d进程中运行和停止bash脚本?

时间:2014-11-04 20:25:35

标签: bash shell service process init

我有一个进程脚本,我想让它运行并停止(如果已经运行)一个bash脚本。

我已经尝试了pkill -x test,但它似乎无效。在任何情况下,我相信我需要一个if声明,看看test.sh是否正在运行..

编辑:在停止时我添加了for i in ps ax | grep'test'| awk'{print $ 1}'; do kill -9 $i; done

这似乎解决了..需要做更多的测试

这是代码:

#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....

# Source function library.
. /etc/init.d/functions

prog="test"
NEWLINE=$'\n'

start() {
    STR=$"Starting $prog ${NEWLINE}"
    echo "$STR"

    /var/www/html/test.sh
    # code to start app comes here
    # example: daemon program_name &
}

stop() {
    STR=$"Stopping $prog ${NEWLINE}"
    echo "$STR"

    pkill -x test
    # code to stop app comes here
    # example: killproc program_name
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        ${0} stop
        sleep 1
        ${0} start
        ;;
    status)
        ;;
    *)
       echo "Usage: $0 {start|stop|status|restart}"
esac

exit 0

任何想法?

1 个答案:

答案 0 :(得分:0)

也许如果脚本test.sh将文件放在/ var / run中,并使用它的pid。您可以使用变量$$。 然后,您可以在init脚本中使用带有ps和grep的pid查找进程并轻松查找。