用于检查进程是否正在运行的脚本,如果它没有运行执行代码行

时间:2014-10-07 13:01:32

标签: linux bash process debian

如何创建一个脚本来检查进程是否正在运行,何时运行不执行一行代码?让脚本每分钟检查一次?

我在考虑这样的事情:

#! /bin/bash
case "$(pidof Program.exe | wc -w)" in
0)  echo "Restarting Program: $(date)" >> /var/log/ProgramLog.txt
(mono-runtime Program.exe -option1 yes -option2 no -option3 6; 1) &
;;
1)  # all ok
;;
*)  echo "Removed double Program: $(date)" >> /var/log/ProgramLog.txt
kill $(pidof Program.exe | awk '{print $1}')
;;
esac

0:如果没有找到进程,请执行代码

1:如果发现进程什么都不做

*:如果发现有多个进程停止最后一个

要执行2个代码:

mono-runtime Program.exe -option1 yes -option2 no -option3 6

和分号后面:1

这是一种正确的方法吗?: (mono-runtime Program.exe -option1 yes -option2 no -option3 6; 1)&

2 个答案:

答案 0 :(得分:1)

monit(小软件)将为您完成所有这些工作:

请看这里:

https://mmonit.com/monit/documentation/

答案 1 :(得分:0)

IIUC您试图确保计算机上始终存在一个程序实例。您是否考虑过将此计划添加到/etc/inittab?使用此文件,您可以将init系统配置为为您运行程序,并在退出时重新启动(崩溃)。 更多信息:http://unixhelp.ed.ac.uk/CGI/man-cgi?inittab+5