1. 程式人生 > >linux監控某個程序的執行shell指令碼

linux監控某個程序的執行shell指令碼

     該指令碼實現了對指定程序名的程序進行每隔2的掃描監控,一旦發現程序不存在便重新啟動。

#!/bin/sh

a=10;

while [[ @a -gt 5 ]]; do

     if test $(pgrep -f $1|wc -l) -eq 2;then

             sh stop.sh

            gnome-terminal -x sh start.sh &

    fi;

    sleep 2;

done;

總結:(1)&表示當前程序又啟動一個程序執行gnome-terminal命令;(2)linux下父程序掛掉,子程序不會掛,而是將子程序的父程序設為1(init程序);(3)檢視後臺執行程序的命令jobs -l;檢視程序20197的父程序的方法 ps -ef|grep 20197。

我的問題:pgrep -f  $1|wc -l 在sh中的執行情況和在終端下執行的結果是不一樣的,為啥在sh中執行不存在時,是2?,歡迎評論討論~~