概念-计划任务:在某个时段自动执行某个任务 at:只执行一次
语法:at 时间
服务:atd 必须开启
如没有:yum install at -y
查看服务状态是否开启 systemctl status | start | stop | restart atd
实战-使用 at 创建计划任务
1、实例
[root@localhost ~]# date # 查看当前时间
2018年 05月 21日 星期一 08:24:26 PDT
[root@localhost ~]# at 08:26 # 创建at计划任务 + 时间
at> mkdir ./haha # 在08:26 创建文件夹 haha
at> <EOT> # Ctrl+D 结束
job 1 at Mon May 21 08:26:00 2018 [root@localhost ~]# at -l # 查看计划任务
1 Mon May 21 08:26:00 2018 a root
任务编号 执行时间 执行者
[root@localhost ~]# ls # 过一会查看 已创建文件夹 haha
anaconda-ks.cfg haha nohup.out
2、也可以这样写--在某天
[root@localhost ~]# at 20:00 2018-5-22
at> mkdir test3
at> <EOT>
job 4 at Tue May 22 20:00:00 2018
3、在十分钟后
[root@localhost ~]# at now +5min
at> mkdir min-test
at> <EOT>
job 5 at Mon May 21 08:39:00 2018
4、删除计划任务
[root@localhost ~]# at -l
2 Mon May 21 08:36:00 2018 a root
4 Tue May 22 20:00:00 2018 a root
5 Mon May 21 08:39:00 2018 a root
6 Mon May 21 08:37:00 2018 a root
[root@localhost ~]# atrm 6
[root@localhost ~]# at -l
2 Mon May 21 08:36:00 2018 a root
4 Tue May 22 20:00:00 2018 a root
5 Mon May 21 08:39:00 2018 a root
二、周期性计划任务:在生产环境中,一般都是周期性的去执行某个计划任务,例如备份日志。
cron 主程序
crond服务
1、系统级别 2、用户级别的计划任务
主文件: /etc/crontab
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
* * * * *
分 时 日 月 年
[root@localhost ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 一 2018-05-21 07:33:13 PDT; 1h 14min ago
Main PID: 1483 (crond)
CGroup: /system.slice/crond.service
└─1483 /usr/sbin/crond -n 5月 21 07:33:13 localhost.localdomain systemd[1]: Started Command Scheduler.
5月 21 07:33:13 localhost.localdomain systemd[1]: Starting Command Scheduler...
5月 21 07:33:13 localhost.localdomain crond[1483]: (CRON) INFO (RANDOM_DELAY will be scal....)
5月 21 07:33:15 localhost.localdomain crond[1483]: (CRON) INFO (running with inotify support)
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# systemctl restart crond
[root@localhost ~]# systemctl enable crond
2、针对用户级别
# crontab -e 创建一个计划任务
# crontab -i 显示
# crontab -r 删除计划任务
# crontab -e # 写法
分 时 日 月 星 谁做后面的事情 命令
每个取值范围:
分: 0-59
时: 0-23
日: 1 -31
月: 1 -12
周: 0-7 0 7 都是周日
例: # 每月9,18 , 22 号这几天凌晨1点1分,执行一个备份脚本
1 1 9,18,22 * * /root/backup.sh
# 每5分钟执行一次
*/ * * * * /root/backup.sh
anacron
情景: cron 用控制循环执行例行性工作,如果我要设定机器每早8点进行备份服务。除非机器保证在8点这个时间不会关机,如果关机了,cron中的脚本,在下次开机不会被执行
解决cron 错过时间后,不执行 cron 计划任务的问题。
anacron 并没有取代 cron 的意思,anacron的作用:机器重启后,会侦测停机期间,有没有 cron 没有执行的计划任务,如果有,会立即执行一下没有执行的任务。