注意到排程工作(cronjob) 如果要穩定執行不出問題,
此外檢查前一次排程是否存在最大的優點在於
$process_num = `ps aux | awk '{for(i=11;i<=NF;i++) {printf("%s",\$i OFS);} printf("%s", ORS);}' | egrep "^$cmd" | wc -l`;
這邊的$cmd是我們要抓取的排程指令,
假設我們的排程是run.sh,
則上面的指令就改成:
$process_num = `ps aux | awk '{for(i=11;i<=NF;i++) {printf("%s",\$i OFS);} printf("%s", ORS);}' | egrep "^run.sh" | wc -l`;
第一眼看到會覺得很複雜,
有個特別要處理的細節,
就是「每當排程一啟動時,如何判斷前一次排程工作是否還在執行」
如果前一次排程工作尚未做完,
一般來說我們會希望這次啟動的排程不做任何事就直接結束,
以避免同時有2個排程對同個檔案做處理 ,
執行結果彼此覆蓋,導致錯誤發生。
此外檢查前一次排程是否存在最大的優點在於
我們不用假設排程工作完成所需要的時間,就算排程間的間格設定為1分鐘啟動一次, 也能很安全的執行,一次只會有一個排程執行。
判斷前一次排程工作是否還在執行
可以使用以下指令來判斷:
假設我們的排程是run.sh,
則上面的指令就改成:
$process_num = `ps aux | awk '{for(i=11;i<=NF;i++) {printf("%s",\$i OFS);} printf("%s", ORS);}' | egrep "^run.sh" | wc -l`;
沒關係,讓我們一步步拆解這條指令,
首先,
ps aux 是用來取得目前所有執行的process,
執行結果如下圖:
接著 ps aux | awk '{for(i=11;i<=NF;i++) {printf("%s",$i OFS);} printf("%s", ORS);}'
你會發現輸出結果只剩下COMMAND這一欄了,
那這個awk是拿來幹嘛的勒,
awk是個字串處理的指令,
他會將一行字串根據空白或tab做切割,
並輸出第n格的字串,
例如:
我們有一行字串是 "Jack 3345678 jack@domain.com"
此時awk會切割成3個字串,並存在一個陣列
arr[0]="Jack 3345678 jack@domain.com"
arr[1]="Jack"
arr[2]="3345678"
arr[3]="jack@domain.com"
有趣的地方是陣列的第0個是存放原始字串的內容,
切割的內容從1開始數,
如果只要輸出第1格和第2格的內容,
則寫成如下指令:
echo "Jack 3345678 jack@domain.com" | awk '{printf("%s",$1 ORS $2 ORS);}'
這邊的$2用來指定第2格,ORS代表換行符號,OFS代表空白,
而 awk '{for(i=1;i<=2;i++) {printf("%s",$i OFS);} printf("%s", ORS);}
是上述指令的進階版,
等同於awk '{printf("%s",$1 OFS $2 ORS);}'。
最後就是用egrep抓出我們要檢查的排程指令,
為何用egrep而不是grep,
原因在於grep會抓出所有包含run.sh的字串
因此以下字串都會被grep抓出來
a_run.sh
xx_run.sh
為了防止這種情況發生,
我們使用egrep搭配正則表達式(regular expression)抓出run.sh開頭的所有字串,
執行結果如下(抓出所有/usr/sbin開頭的process):
配合wc -l 指令,算出egrep的抓取結果有幾行,
以/usr/sbin為例,可以找到14個以/usr/sbin開頭的process,
以上是針對
$process_num = `ps aux | awk '{for(i=11;i<=NF;i++) {printf("%s",\$i OFS);} printf("%s", ORS);}' | egrep "^$cmd" | wc -l`;
的完整說明。
[結論]
(1)可以利用ps aux搭配awk, egrep, wc來抓出前一次排程是否執行完成。
(2)檢查前一次排程是否存在最大的優點在於
- 我們不用假設排程工作完成所需要的時間,就算排程間的間格設定為1分鐘啟動
一次,也能很安全的執行,一次只會有一個排程執行。
Bet365 Casino App and Casino Review - JtmHub
回覆刪除Bet365 광주광역 출장안마 Casino Review for 전주 출장마사지 2021 | Check out our full 대전광역 출장샵 review of the welcome offer, game 시흥 출장안마 selection, bonus, mobile app, banking, and more. 삼척 출장샵 Rating: 4.3 · Review by JT Hub