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個*分別代表着