我在crontab中有一个执行jar文件的shell脚本. Jar文件正在将文件从一台服务器移动到另一台服在高峰时段,它需要超过10分钟(然后是crontab条目).
如何确保cron作业在最后一个未完成之前不会执行进程?
解决方法:
一个简单的方法是让您的Cron启动一个bash文件来检查是否存在这样的进程.
cron的:
*/10 * * * * /path/to/bashscript.sh
(确保它具有正确的用户并且是可执行的)
pgrep命令查找具有给定名称的进程,并在找到此进程时返回processID.
#!/bin/bash
# bashscript.sh
pID=$(pgrep -n "yourjarfile")
# Check if jarfile is running
if $pID > /dev/null
then
#log something to syslog
logger $pID "already running. not restarting."
else
# start jar file
/usr/bin/java -jar /path/to/yourjarfile.jar
fi
– 编辑 –
灵感来自F. Hauri的答案(工作正常),我想出了一个更短的版本:
*/10 * * * * pgrep -n "yourjarfile." || /usr/bin/java -jar /path/to/yourjarfile.jar