linux – 安排cron条目仅在尚未运行时运行脚本

我在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
上一篇:java – ConcurrentHashMap文档说明


下一篇:错误:无法使用哈希字符串’android-28’查找目标