用shell脚本守护后台进程

假如现在在 crond 中添加了一个每分钟执行的定时任务如下:

*/1 * * * * root cd /data/sbin; sh test.sh >/dev/null 2>&1

 

为了防止上一个进程还没完成,下一个进程就启动,我们可以创建一个shell来守护该进程,方法如下:

#!/bin/sh
ps aux | grep test/init | grep -v  grep > /dev/null

if [ $? != 0 ]
then
    echo "Yii test not runing"
    cd /data/web/; /usr/bin/php yii test/init 1>/dev/null 2>/tmp/test.txt &
fi

注意:

如果使用文本编辑是在windows下通过记事本编写的这个文件,运行 在linux环境下。

报  unexpected end of file 的错,原因是 windows 和 Linux的换行符不同导致的。

解决思路:

DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。

【在windows里,换行用的两个符号,回车\r,换行符号\n,在linux下只需一个符号\n就可以了.】

解决方案:

使用下面的命令将文件格式设置为unix格式即可解决上述错误。
vim  test.sh
:set fileformat=unix
:wq


 

posted @ 2018-06-29 17:51  Chrdai  阅读(1584)  评论(0编辑  收藏  举报