crontab 执行定时任务如何控制前一个任务执行完后再启动下一个任务?
来源:互联网 发布:上海php培训机构 编辑:程序博客网 时间:2024/06/08 00:12
在 Linux 下使用 crontab 执行定时任务,如果任务自身运行时间超过任务执行的间隔时间,就有可能导致两次任务发生冲突,请问如何控制前一个任务执行完后再启动下一个任务?
Eclipse
2 票
加个文件锁就OK了。
每次任务执行时先判断锁文件是否存在,存在则退出任务,不存在则建立锁文件,任务执行完毕时删除该文件。
在超出crontab执行的间隔时间的情况下,如果你还想继续执行之前没有执行的任务,则需要在脚本中判断当次任务执行时间,如果超过了crontab的间隔时间,那么在当前任务结束时进行系统调用执行该定时任务。
张洪保
1 票
你可以用队列形式设置定时任务,这样先来先执行后来后执行;或者弄个cron配置文件设置每个任务的依赖关系,比如你如果知道那个任务大概超出了间隔时间,就把它后面的任务与之设置成依赖关系,这样这个任务必须执行完后面的才执行。这样避免任务冲突!
天梦
0 票
crontab的确只能在指定的时间进行对应的任务,但是办法还是有的,可以使用一个标志位(创建一个文件或者文件中特定的内容)来实现控制:
比如计划任务A和B,其中B必须在A后执行才能执行:
1、设置好Crontab的内容,分别是A和B的对应时间。
2、然后A在执行后会创建一个文件,B脚本中在执行前检查这个文件是否存在,如果不存在的话,可以将B程序设计成周期性检测(这样子的话就不会因为A还没有执行完成导致B脚本跳过)
这种方法挺不错的,当然是依靠Crontab的前提下,其实我感觉你甚至自己写个定时计划任务算了,可以不依靠系统本身的crontab功能的。
gipsa
0 票
可以考虑用一个 run.sh 来代理定时任务的启动。
crontab中写作:
1 1 * * * run.sh task_path.sh >> log_file 2>&1
在 run.sh 中用 ps 来检测 task_path 是否已经在运行,进而决定是否启动task_path.sh。
这种方法,除了可以控制任务的运行外,还可以做一些数据投递,监控定时任务的运行情况。
- crontab 执行定时任务如何控制前一个任务执行完后再启动下一个任务?
- crontab定时启动执行任务
- Crontab 定时执行任务 (
- crontab 定时执行任务
- crontab执行定时任务
- crontab --定时执行任务
- Linux crontab定时执行任务
- Linux crontab 定时执行任务
- Linux crontab定时执行任务
- crontab 定时任务没有执行
- Linux crontab定时执行任务
- Linux定时任务执行crontab
- linux crontab定时执行任务
- PHP定时执行任务 crontab
- Linux crontab定时执行任务
- 【Linux】crontab定时执行任务
- 使用Crontab定时执行任务
- crontab定时时间段执行任务
- Machine Learning 学习之神经网络(1)
- [进击吧shader]初识shader
- 各种音视频编解码学习详解
- JAVA-4-Static笔记
- 软考嵌入式系统设计师2010年上午试题总结
- crontab 执行定时任务如何控制前一个任务执行完后再启动下一个任务?
- LeetCode-448. Find All Numbers Disappeared in an Array
- 会话追踪技术及状态跟踪,持久化的状态
- Android Studio 离线开发(offline)
- Color conversions
- 51nod 1445:变色DNA(最短路变形)
- java初始篇
- 函数相关的技术细节-10
- 安卓常用工具类-LogUtils【日志打印工具类】