在我的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:35 regulator.conf
什么都没有开始!我没有通过echo创建文件,没有守护进程,......什么都没有?
实际上deamonize_me.sh及其目录和子目录都具有0755权限。 所以有什么问题,我必须使用monit监视我的守护进程,如果upstart不能正常工作,我必须将它添加到init.d,我不知道如何。
提前致谢