Linux计划定时任务
计划任务服务程序
1 一次定时任务
- 守护进程
atd
为at
命令提供服务
1 | # 查看服务是否在运行 |
at
时间格式
1 | HH:MM 如: at 02:30 |
at
命令使用实例
1 | # 交互式 |
2 周期性定时任务
Linux中默认启用crond服务来周期性、有规律的执行某些特定任务
安装
1
yum install cronie
任务参数格式
1
2
3
4
5
6
7
8
9# 【 分钟 小时 日 月 星期 】 命令 或 脚本
0 2 * * * /bin/sh test.sh # 每天晚上2:00自动执行
crontab -e # 创建、编辑
crontab -l # 列举、查看
crontab -r # 清空所有
# 查看其他用户的Crontab命令集合
crontab -u username -l时间符号
- 逗号(,)表示多个离散的时间点 如:1,2,4 表示周一、周二、周四
- 短横线(-)表示连续的一段时间 如:12-15 表示一个月的12至15号
- 除号(/)表示任务间隔时间 如:*/10 表示每10分钟执行一次
特殊说明
- 所有的命令一定要用绝对路径 可以通过
whereis
来获取 - 包含多个计划任务时,每行只能写一条,规定一个任务
- 分钟 时间字段不能省略,最小时间间隔是1min
- 所有的命令一定要用绝对路径 可以通过
2.1 开机自启
1 | # 编辑开机加载项 |
2.2 配置corntab定时器
可以通过crontab -e
便捷编辑,也可以写入crontab文件
系统默认的crontab定时任务定义文件为: vim /etc/crontab
1 | SHELL=/bin/bash |
编辑好后重载生效
1 | crontab /etc/crontab # 重载crontab文件 |
另:启动、停止、重启服务
1 | systemctl start crond.service |
2.3 实用例子
每日任务
1
30 8 * * * /usr/bin/tar -zcvf backup.tar.gz /home/log # 每天8:30
每周六,周日
1
0 18 * * sat,sun /scripts/warn.sh # 每周六、周日 18:00
每10分钟执行一次
1
*/10 * * * * /scripts/monitor.sh
每分钟执行一次
1
* * * * * /scripts/monitor.sh
每3s执行一次
1
* * * * * sleep 3s; /scripts/monitor.sh
每年执行一次
1
@yearly /scripts/hello.sh
系统重启时执行
1
@yearly /scripts/info.sh
每个月第一个周六
1
0 17 * * sat [ $(date +%d) -le 07 ] && /script/script.sh
配置多个周期任务
1
20 */1 * * * /scripts/script1.sh; /scripts/scrit2.sh # 每4个小时执行一次这2个脚本
30 9 * * 1,3,5 /scripts/test.sh # 周一、周三、周五早上9:30执行配置多个周期任务
1
20 */1 * * * /scripts/script1.sh; /scripts/scrit2.sh # 每4个小时执行一次这2个脚本
30 9 * * 1,3,5 /scripts/test.sh # 周一、周三、周五早上9:30执行将cron结果重定向给特定的用户
1
2
3# crontab -l
MAIL=Tom
0 2 * * * /script/backup.shcron指令备份与恢复
1
2
3
4
5
6
7
8
9# crontab -l > cron-backup.txt
# cat cron-backup.txt
MAIL=Tom
0 2 * * * /script/backup.sh
# crontab cron-backup.txt
# crontab -l
MAIL=Tom
0 2 * * * /script/backup.sh
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cloud-Weblog!