我需要检查某个进程是否正在运行,并在该进程终止、停止或关闭时发出警报。
我已经使用了 pgrep 和 processName,然后发出警报,如下所示:
pgrep processName && notifiy-send
但是这只能给我进程的 pid,还有其他方法吗?
答案1
使用pgrep
提供的信息最少。ps -aux | grep
有时使用可以提供太多信息:
$ pgrep eyesome
1200
1217
1226
$ ps -aux | grep eyesome
root 1197 0.0 0.0 4504 696 ? Ss 07:36 0:00 /bin/sh -c /usr/local/bin/eyesome.sh
root 1200 0.0 0.0 13380 3912 ? S 07:36 0:01 /bin/bash /usr/local/bin/eyesome.sh
root 1217 0.0 0.0 12768 3308 ? S 07:36 0:00 /bin/bash /usr/local/bin/eyesome-dbus.sh
root 1226 0.0 0.0 12768 2368 ? S 07:36 0:00 /bin/bash /usr/local/bin/eyesome-dbus.sh
root 10567 0.0 0.0 54792 3964 pts/18 S 10:27 0:00 sudo eyesome/movie.sh asdf
root 10568 0.0 0.0 12896 3380 pts/18 S 10:27 0:08 /bin/bash eyesome/movie.sh asdf
rick 26612 0.0 0.0 14224 1020 pts/19 S+ 16:52 0:00 grep --color=auto eyesome
因此,让我们缩小范围,同时使其易于使用:
$ ps -aux | grep "sudo eyesome/movie" | grep -v grep
root 10567 0.0 0.0 54792 3964 pts/18 S 10:27 0:00 sudo eyesome/movie.sh asdf
现在将其放入已在启动应用程序中加载的脚本中:
#!/bin/bash
# Name: checkrunning.sh
# For: https://askubuntu.com/questions/1160844/check-for-running-proccess-constantly
while true; do
Running=$(ps -aux | grep "sudo eyesome/movie" | grep -v grep)
if [[ "$Running" == "" ]]
then
echo "NOT Running"
else
echo "Running: $Running"
fi
sleep 10
done
使用以下方法将文件标记为可执行文件:
chmod /path/to/checkrunning.sh
将命令替换echo
为notify-send
。