标签:shell linux cron synchronization crontab
我在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
标签:shell,linux,cron,synchronization,crontab 来源: https://codeday.me/bug/20190717/1489597.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。