# 監控 "nginx -c /etc/nginx.conf",重啟腳本為 restart_nginx.sh
./process_monitor.sh "nginx -c /etc/nginx.conf" ./restart_nginx.sh
self_count=$(ps -C $self_name -o euser,args | awk -v uid=$uid -v cur_user=$cur_user -v cmd="$self_cmdline" '
BEGIN {num=0}
($1==uid || $1==cur_user) && index($0, cmd) {++num}
END {print num}')
self_count > 2 視為已有實例運行(含當前 grep 進程),直接退出。
process_count=$(ps -C $process_name -o euser,args | awk -v uid=$uid -v cur_user=$cur_user -v cmd="$process_cmdline" '
BEGIN {num=0}
($1==uid || $1==cur_user) && index($0, cmd) {++num}
END {print num}')
if [ $process_count -lt 1 ]; then
echo "restart \"$process_cmdline\""
sh -c "$restart_script" # 必須用 sh -c 執行支援複雜命令列
fi
/etc/init.d/ 或 systemd 服務實現開機自啟ps 支援 -C 選項(procps-ng)