【问题标题】:How to make upstart execute a daemon application at startup (linux)如何让暴发户在启动时执行守护程序应用程序(linux)
【发布时间】:2014-01-26 15:50:13
【问题描述】:

在我的 Linux mint(Olivia) 系统中,我将一个可执行的 shell 脚本放在我的主目录中 在那个 shell 脚本 (daemonize_me.sh) 中有一个调用 daemonize 应用程序的命令, daemonize 应用程序任务是将作为参数传递给它的应用程序作为守护程序执行。

daemonize.sh里面如下

#!/bin/bash
REG_WRK_DIR="/home/sina/`Desktop`/CollectedDaemons/regulator_workdir/"
REG_LOG_DIR=$REG_WRK_DIR"log/"
REG_EXEC_FILE=$REG_WRK_DIR"QtProjectWork"
REG_STDERR_LOG_FILE=$REG_WRK_DIR"log/error.log"
REG_STDOUT_LOG_FILE=$REG_WRK_DIR"log/output.log"
REG_PID_FILE=$REG_WRK_DIR"reg_daemon.pid"
REG_LOCK_FILE=$REG_WRK_DIR"lock_pid.lock"

myExec="daemonize -a -c "${REG_WRK_DIR}" -e "${REG_STDERR_LOG_FILE}" -o "${REG_STDOUT_LOG_FILE}" -p "${REG_PID_FILE}" -l "${REG_LOCK_FILE}" "${REG_EXEC_FILE}
echo $myExec
eval $myExec
result=$?
if [ $result -eq 0 ];then
    result=`echo -e "Daemon started at :">>${REG_STDERR_LOG_FILE};date >> ${REG_STDERR_LOG_FILE}`
        echo -e "Daemon has started"
        echo -e $result
else
        echo -e "Daemon did not start (may be it has already started!)"
        echo -e $result
fi

当我以用户身份运行此 bash 脚本时,它在终端中运行良好,运行后它返回到 shell 提示符,我可以在 top/htop 中看到该进程仍在内存中运行,即使我关闭终端或...。 (所以没有挂断信号......确实会杀死进程) 虽然我会在守护进程启动后得到输出、错误日志文件、锁和 PID 号。

挑战是,我必须在系统启动时运行这个脚本 (daemonize_me.sh)。 所以我尝试使用 upstart(已经安装)来执行 daemonizeme.sh

我添加以下配置(regulator.conf)文件,内容如下:

respawn
script      
    export HOME="/home/sina/Desktop/CollectedDaemons/regulator_workdir"
    echo -e "Going to start regulating Daemon" > /home/sina/Desktop/CollectedDaemons/regulator_workdir/log/upstart.info
    exec sudo -u /home/sina/Desktop/CollectedDaemons/daemonize_me.sh
end script

在 /etc/init/regulator.conf 中保存配置文件并将文件权限修复为 -rw-r--r-- 1 root root 685 jan 8 14:35ulator.conf

什么都没有开始!我没有通过回显创建文件,没有守护进程,......什么都没有?

实际上deamonize_me.sh及其目录和子目录都拥有0755权限。 那么有什么问题,我必须使用 monit 来监控我的守护进程,如果 upstart 不能正常工作,我必须将它添加到我不知道如何的 init.d 中。

提前致谢

【问题讨论】:

    标签: daemon startup init spawn upstart


    【解决方案1】:

    如果你想在启动时启动你的守护进程,你需要在你的 Upstart 脚本中使用start on 节。要手动启动它,请尝试service regulator start

    【讨论】:

      猜你喜欢
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多