linux管理:任务计划

linux工具  ·  2020-11-21

crontab调用date时%需转义:

* 17 * * * who > /tmp/`date '+\%F'`.log

crontab格式

45 4  1,10,22  * *       #逗号分隔
0,30 18-23 * * *         #- 连续
0 */8 * * *              #每隔8小时重启一次
* 23-7/2 * * *           #23点-早上7点, 每两小时
0 11 4 * mon-wed date    #周一 ~ 周三
0 4 1 jan * date         #一月

防止脚本冲突 flock/lockf

间隔任务,当次未完成时, 下次任务不会执行

*/10 * * * * (lockf -s -t 0 /tmp/create.lock python /data/task.py >> /tmp/task.log 2>&1)


linux下的其他2种任务计划

at服务:
  • 指定一个时间执行一个任务,==执行一次==后就不用
  • 需要一个atd的系统后台进程
  • /var/spool/at目录
  • /etc/at.allow和/etc/at.deny控制用户使用at权限

    #at now+2 minutes 回车
    >输入要执行的命令
    >ctrl+d 结束输入
命令描述
atq查询当前的待执行任务(任务编号id)
atrm 删除等待任务,无指定id,删除所有
anacrontab系统级别的计划任务及其扩展

配置文件: /etc/anaconrtab

  • 了解就行了,不要更改
  • /etc/cron.deny这个配置文件来控制, 同时写入allow 及deny

/etc/anaconrtab格式:

period(频率.天数)delay(延迟,分钟)job-identifiercommand
165cron.dailyrun-parts /etc/cron.daily
770cron.weeklyrun-parts /etc/cron.weekly
3075cron.monthlyrun-parts /etc/cron.monthly

第一行的意思是:每天开机65分钟后就检查cron.daily文件是否被执行了,如果今天没有被执行就执行他

第二行的意思是:每隔7天开机后70分钟检查cron.weekly文件是否被执行了,如果一周内没有被执行就执行他

 
评论
Glab. All Rights Reserved. Theme Jasmine by Kent Liao.