Linux 中计划任务-at-cron

概念-计划任务:在某个时段自动执行某个任务  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 没有执行的计划任务,如果有,会立即执行一下没有执行的任务。

猜你喜欢

转载自www.cnblogs.com/sunshine-long/p/9069958.html