script % touch proc.sh
script % chmod 755 proc.sh
proc.sh:
#!/usr/bin/env bashSTATUS=0if [ -z $1 ];then # 检查是否传了PID参数echo please enter a PIDexit 1
fiecho watching PID $1while [ $STATUS -eq 0 ] # 如果是我们初始的值,说明程序的状态还没有改变
dops $1 > /dev/null # 查询程序状态STATUS=$? # 更新状态值
doneecho PID $1 is terminated
exit 0
测试过程:
- 在一个新终端,打开nano程序:
~ % nano
2.在另一个新终端,查询nano程序的PID:
~ % ps -aPID TTY TIME CMD
22133 ttys000 0:00.02 login -pf juklinglee
22134 ttys000 0:00.02 -zsh
22150 ttys000 0:00.01 ps -a
10610 ttys001 0:00.02 login -pf juklinglee
10611 ttys001 0:00.96 -zsh
22109 ttys001 0:00.02 vim proc.sh
19138 ttys002 0:00.02 login -pf juklinglee
19139 ttys002 0:00.02 -zsh
22130 ttys002 0:00.01 nano
22130 是nano程序的PID
- 执行我们的脚本:
script % ./proc.sh 22130
watching PID 22130
4.关闭nano程序:
script % ./proc.sh 22130
watching PID 22130
PID 22130 is terminated