用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


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM