Linux 检查进程是否正在运行的脚本,如果它没有运行,则执行代码行
如何创建一个脚本来检查一个进程是否正在运行,当它没有运行时执行一行代码?让脚本每分钟检查一次 我在想这样的事情:Linux 检查进程是否正在运行的脚本,如果它没有运行,则执行代码行,linux,bash,process,debian,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) &am
#! /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:如果发现流程,则不执行任何操作
*:如果找到多个进程,请停止最后一个进程
有两个代码需要执行:
mono runtime Program.exe-选项1是-选项2否-选项3 6
分号后面是:1
这样做正确吗
(mono runtime Program.exe-option1 yes-option2 no-option3 6;1)&monit(小型软件)将为您完成所有这些工作:
请看这里:
https://mmonit.com/monit/documentation/
IIUC您正在尝试确保您的程序始终有一个实例在计算机上运行。您是否考虑过将此程序添加到
/etc/inittab
?使用此文件,您可以配置init系统,以便在程序退出(崩溃)时为您运行程序并重新启动。
更多信息:我更愿意建议一些锁定机制,例如从program.exe中打开套接字、创建私有MMAP、锁定特定的临时文件等。如果锁获取失败,则不做任何操作退出在您的bash脚本中,只需触发新的进程启动。@anishsane这是为了使它更仔细?是的,这似乎是一个选项,我想我也可以使用Crontab来计时检查。那么您就不需要cron了。Monit的工作原理就像一个恶魔,它会检查进程是否正在运行,若并没有,Monit会重新启动它,所以它可以帮助您始终保持进程正常运行。