linux自啟動、定時啟動腳本


linux開機自啟動

想讓一個程序、腳本開機自啟動,可以在/etc/rc.d目錄下面找到rc.local文件,編輯該文件,在尾部加上需要運行的命令即可。

如:

#cd /etc/rc.d
#sudo vim rc.local

我需要讓服務器在開機時運行一個php程序(ZMQServer.php),就加上這樣一句話。

#前面是php的絕對路徑,后面的部分是需要運行的程序的絕對路徑
/usr/local/bin/php /web/app/ZMQServer.php

這樣就ok了。

 

linux定時啟動腳本

以上運行的php腳本會因為程序上的不可預知的錯誤而報錯停止,這樣客戶端就無法連接到服務器了,因此需要一個定時檢測該程序是否存在進程中,如果不存在就要重啟的腳本,並且讓它定時啟動進行檢測。

1.第一步,需要看看進程里是否有這個程序運行,使用如下的命令

#ps aux | grep ZMQServer.php | grep -v grep

第一部分是顯示出所有的進程信息。

第二部分是將前面的結果拿來正則ZMQServer.php,結果是必然有一條grep進程,如果有ZMQServer.php運行了,則有ZMQServer.php。

第三部分是將grep進程自身給屏蔽掉。最后的結果就是如果后台運行了ZMQServer.php則有結果,否則是空的結果。

 

2.不可能人工手動的使用這條命令檢查是否進程在運行,所以將它寫成一個腳本(/bin/isRun)封裝起來。

#!/bin/sh
ret=`ps aux|grep ZMQServer.php|grep -v grep`
if [ -n "$ret" ]
then
echo "is running!";
echo &date "+%x %X----->ZMQServer.php is running"
else
/usr/local/bin/php /web/app/ZMQServer.php&
echo &date "+%x %X----->ZMQServer.php have restarted"
fi

這條腳本的作用顯而易見,就是判斷ZMQServer.php是否運行,如果運行了就將當前的時間與信息輸出,如果沒有運行就重啟ZMQServer.php並輸出信息。

 

3.做到這一步,已經算是半自動化了,為了能實現完全自動化,就得將上面的腳本放入自動運行的程序中。

定時執行的程序叫cron,先要檢查下它是否在進程中運行了。

#ps aux | grep cron

如果沒有運行可以通過下面的命令讓它啟動起來。

#cron停止
/etc/rc.d/init.d/crond stop
#cron啟動
/etc/rc.d/init.d/crond start

/etc下有一個crontab文件,該文件記錄了一些定時啟動的內容。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
*/1 * * * * root /bin/isRun >> /web/log/zmqlog.txt 2>&1

前面的5個*分別代表着

分鍾 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
 
*表示任意的意思。
*/5 * * * * 表示每天每5分鍾執行一次
* */2 * * * 表示每天每兩小時執行一次
* 2 * * * 表示每天的02:00執行一次
 
上面的 run-parts指的是運行目錄里的內容,后面的 cron.dailycron.weekly等都是文件夾,里面放了一些腳本文件,我為了圖方便,就直接寫在這個文件上了,我想讓檢測腳本( /bin/isRun)每分鍾執行一次(實際上* * * * *和*/1 * * * *)是一樣的效果,就加上最后面的那條就行了。
 
需要注意的一點就是,所有的東西都寫成絕對路徑,這樣是最妥當的。
 
這么一來,服務器每分鍾都會執行下 /bin/isRun來判斷ZMQServer.php有沒有正常的運行,基本上保證了客戶端能夠正常請求了。


免責聲明!

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



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