该脚本实现了对指定进程名的进程进行每隔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?,欢迎评论讨论~~