在后台运行的Linux守护程序

时间:2015-02-04 17:25:25

标签: linux bash process background daemon

我在/etc/init.d/下的centos 6.6下运行以下代码:

#!/bin/sh

DAEMON=/usr/local/bin/csvmarine_X.py
PARAMETERS=""
LOGFILE=/var/log/somefile.log

start() {
    echo -n "starting up $DAEMON"
    RUN=`cd / && $DAEMON $PARAMETERS > $LOGFILE 2>&1`

    if [ "$?" -eq 0 ]; then
        echo "Done."
    else
        echo "FAILED."
    fi
}

stop() {
    killall $DAEMON
}

status() {
    killall -0 $DAEMON

    if [ "$?" -eq 0 ]; then
        echo "Running."
    else
        echo "Not Running."
    fi
}

case "$1" in
    start)
    start
    ;;

    restart)
    stop
    sleep 2
    start
    ;;

    stop)
    stop
    ;;

    status)
    status
    ;;

    *)
    echo "usage : $0 start|restart|stop|status"
    ;;
esac

exit 0

它工作正常,我想让它在后台运行。

我在搜索后的理解是bash参数'$'(不带引号)负责任何进程/脚本的后台运行。

所以我尝试了这条线:

RUN=`cd / && $DAEMON $PARAMETERS > $LOGFILE 2>&1

添加'&'行的末尾或管道的参数如下:

RUN=`cd / && $DAEMON $PARAMETERS > $LOGFILE 2>&1 &

RUN=`cd / && $DAEMON $PARAMETERS > $LOGFILE 2>&1 | &

任何人都可以给我一个建议/指南/教程,以进一步搜索我必须做​​的事情吗?

当然,如果有人能给我一个直接答案,那么欢迎接受:D

提前谢谢!

1 个答案:

答案 0 :(得分:1)

使用提供的'模板',在/etc/init.d/skeleton中的debian中,对于centos,它类似于/ usr / share / doc / initscripts - * / sysvinitfiles / skeleton至少在6中使用它,或者你可以通过google'init.d / skeleton'轻松下载。