【问题标题】:Linux Daemon that runs in the Background在后台运行的 Linux 守护进程
【发布时间】:2015-02-04 17:25:24
【问题描述】:

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

#!/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

提前谢谢你!

【问题讨论】:

    标签: linux bash process background daemon


    【解决方案1】:

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

    【讨论】:

    • 感谢您的指导!我只需要更多信息,位于“/usr/share/doc/initscripts-9.03.46/”的指南“sysvinitfiles”(我没有找到任何“骨架”文件)不包含任何关于“背景”。我应该在指南中搜索任何其他术语吗?
    • 我已将RUN 变量更改如下:RUN='cd / && nohup $DAEMON $PARAMETERS > $LOGFILE 2>&1 &' 在 ubuntu 下可以工作,但现在在 cent os 下。此外,该脚本不会在启动时启动。是否有可能 python 脚本必须位于 /etc/rc.d/
    猜你喜欢
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多