如何制作一个守护进程来检查程序是否正在运行(定期),如果未运行则启动它?

如何制作一个守护进程来检查程序是否正在运行(定期),如果未运行则启动它?

我在带有 GNOME 3.18 的 Ubuntu GNOME 15.10 上,但我不喜欢普通的应用程序启动器,所以我安装了 Docky,但 Docky 经常突然关闭,我不得不手动重新启动它,所以我想知道如何制作一个在后台一直运行的守护进程,定期检查 Docky 是否正在运行,如果没有,则运行它?

答案1

在您想要的任意位置创建脚本,最好在您的主目录中。我喜欢将我的脚本命名为 。check_docky.bsh在您的脚本中,执行以下几行:

#!/bin/bash

ps -ef | grep -i docky.exe | grep -v grep >/dev/null

case $? in
1) sh -c "mono /usr/lib/docky/Docky.exe";;
0) exit 0;;
esac

在上面的脚本中,将ps -ef | grep查看 是否Docky正在运行。如果它未运行,则返回的退出代码为1,因此 case 语句将Docky自动重新启动。否则,脚本将正常退出并返回代码0

确保脚本是可执行的:

chmod +x check_docky.bsh

然后cron为脚本创建一个作业。

首先,crontab按照以下方式运行:

$ crontab -e

然后作为新条目添加以下内容,以便它从:00整点开始每 10 分钟检查一次:

# m h  dom mon dow   command
*/10 * * * * /home/<username>/check_docky.bsh

为了证明此命令有效:

~$ ps -ef | grep wookie | grep -v grep
~$ echo $?
1
~$ ps -ef | grep wookie
terrance  20978  6976  0 13:53 pts/17   00:00:00 grep --color=auto wookie
~$ echo $?
0

希望这可以帮助!

相关内容