最近工作上遇到需要時不時重啟php服務的情況,于是乎想到利用定時執行腳本的方式重啟php進程,于是利用linux寫個執行腳本,步驟如下:
第一步:創建一個定時腳本文件cron.sh(文件名隨意以.sh結尾)。
參考代碼如下(log.txt是個日志文件方便查看是否有輸出內容):
echo?"supervisorctl?restart..."?>>?/var/www/html/log.txt start_time=$(date) echo?$start_time?>>?/var/www/html/log.txt echo?>>?/var/www/html/log.txt supervisorctl?restart?all end_time=$(date) echo?"supervisorctl?end"?>>?/var/www/html/log.txt echo?$end_time?>>?/var/www/html/log.txt echo?>>?/var/www/html/log.txt
我這邊利用supervisorctl來管理php進程(關于supervisorctl的使用可以查看官方文檔),當然也可以利用其他方式。
這里舉個例子來簡單說明supervisorctl的使用。
立即學習“PHP免費學習筆記(深入)”;
首先需要安裝supervisorctl,在終端下執行 yum install -y supervisor,
supervisorct默認安裝在/etc/supervisor目錄下;
完成后,在/etc/supervisor 路徑下有個配置文件supervisord.conf,打開后在最后有個[include]后配置一下files如下:
files?=?/etc/supervisor/conf.d/*.conf
然后就可以在/etc/supervisor/conf.d目錄下創建自己的配置文件;
例如創建文件test.conf(我這邊是php laravel框架執行的一個消費任務隊列)文件內容配置如下:
[program:rabbitmq-comsumer-1] process_name=%(program_name)s_1 command=php?/var/www/html/app/artisan?rabbitmq:consumer?1 autostart=true autorestart=true user=root numprocs=1 redirect_stderr=true stdout_logfile=/var/www/html/app/storage/logs/rabbitmq-comsumer-log-1.log
第二步:其次編寫定時任務內容,在終端控制臺輸入 vim /etc/crontab 回車;在文件里寫入如下代碼:
0?*/2?*?*?*?root??/var/www/html/cron.sh
注:0 */2 * * *(這是定時任務執行語法,我這邊是每2小時執行,也就是0:00,2:00,…自動執行;相關語法請百度查閱)
第三步:保存文件,然后使其生效(這一步很重要!)執行如下命令:
crontab?/ect/crontab
最后可以使用以下命令查看修改后的結果,如果看到出現 0 */2 * * * root? /var/www/html/cron.sh 則說明已經生效:
crontab?-l
總結: