2019年12月24日 星期二

使用 Shell script 檢查 process 是否執行中


除了各式高階語言以外,

一些簡單的判別或者執行命令可透過 Shell script 方式做到,

今天的範例:

使用 Shell script 檢查 process 是否執行中

在系統執行一個或一個以上的命令,

一個一個執行的話太沒有效率,

這時就能夠透過 Shell script 方式來執行,


例如之前提到過的 Django 排程工具 Django-Q 套件,

必須在系統執行


python manage.py qcluster


才能夠正常運作的話,

就能夠以 Shell script 的方式加入 Cron Jobs 中,

當然重複執行程式是會出現錯誤訊息的,

這時就能夠在 script 檔案中加入判別式,


#!/bin/sh

if ps ax | grep 'manage.py qcluster' then    echo "qcluster service running, everything is fine"else    echo "qcluster is not running"    source 虛擬環境路徑/cms/3.7/bin/activate && cd 專案路徑/cms
    python manage.py qcluster&
fi


這段程式碼是透過內建的 ps ax 得到所有執行中的 process,

再以 grep 擷取相關的字串,

此範例是以 if 來作判別,

如果程式執行中就顯示

檢查 qcluster 是否已經執行中就顯示:


"qcluster service running, everything is fine"


否則就執行虛擬環境與程式碼:


python manage.py qcluster


至於執行的方式有許多種,



sh start.sh



bash start.sh

或者

source start.sh

都是執行 Shell script 的方法,

至於以

./start.sh

方式執行的話,

須先給予檔案執行的權限:

chmod +x start.sh









沒有留言: