经验丰富的系统运维工程师可以使得Linux在无需人为介

入的情况下,在指定的时间段自动启用或停止某些服务或

命令,从而实现运维的自动化。

 作用:计划任务主要是做一些周期性的任务,目前最主要的

用途是定期备份数据

 分类:

1 一次性计划任务:今晚11点30分开启网站服务。

2 长期性计划任务:每周一的凌晨2点20分把/data/wwwroot目

录打包备份为backup.tar.gz。


 一次性计划任务只执行一次,一般用于满足临时的工作需求。我

们可以用at命令实现这种功能,只需要写成“at 时间”的形式就

可以。

 at的语法结构为:

at [OPTION]... TIME

TIME可以设定为以下的形式,非常灵活多变:

HH:MM [YYYY-mm-dd]

noon,midnight, teatime

tomorrow

now+#

UNIT:minutes, hours, days, OR weeks

比如:

now +5minutes 表示任务将在5分钟后执行;

now +1hours 表示任务将在1小时候执行;

now + 31days 表示任务将在1个月后执行;

now +1weeks表示任务将在1周后执行;

12:32 表示任务将在今天的12:32分的时候执行;


一次性计划任务:

[root@node2 ~]# yum install at -y

[root@node2 ~]# systemctl enable atd.service

[root@node2 ~]# systemctl start atd.service 

[root@node2 ~]# systemctl status atd

● atd.service - Job spooling tools

   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)

   Active: active (running) since Thu 2020-06-25 11:30:40 CST; 6s ago

 Main PID: 12376 (atd)

   CGroup: /system.slice/atd.service

           └─12376 /usr/sbin/atd -f


Jun 25 11:30:40 node2 systemd[1]: Started Job spooling tools.


一次性计划任务:

1 一次性计划任务:Ctrl + D组合键来结束编写计划任务

2 at命令接收前面echo命令的输出信息,以达到通过非交互式的方式创建计划一次性任务的目的


创建计划任务:at 

[root@node2 ~]# echo "systemctl restart httpd" | at 23:30

job 1 at Thu Jun 25 23:30:00 2020

[root@node2 ~]# echo "systemctl restart tengine" | at 23:31

job 2 at Thu Jun 25 23:31:00 2020


查看计划任务:   at -l 

[root@node2 ~]# at -l

1       Thu Jun 25 23:30:00 2020 a root

[root@node2 ~]# at -l

1       Thu Jun 25 23:30:00 2020 a root

2       Thu Jun 25 23:31:00 2020 a root


删除计划任务:at -r 序号

[root@node2 ~]# at -l

1       Thu Jun 25 23:30:00 2020 a root

2       Thu Jun 25 23:31:00 2020 a root

[root@node2 ~]# at -r 2

[root@node2 ~]# at -l  

1       Thu Jun 25 23:30:00 2020 a root


 如果我们希望Linux系统能够周期性地、有规律地执行某

些具体的任务,那么Linux系统中默认启用的crond服务

 创建、编辑计划任务的命令为“crontab -e”,查看当前

计划任务的命令为“crontab -l”,删除某条计划任务的

命令为“crontab -r”。

 crontab命令中加上-u参数来编辑他人的计划任务


cron计划任务_第1张图片

cron计划任务_第2张图片

cron计划任务_第3张图片


cron计划任务_第4张图片


cron计划任务_第5张图片

cron计划任务_第6张图片

cron计划任务_第7张图片


cron计划任务_第8张图片


1.每月1,10,22日的4:45重启network服务

45  4  1,10,22  *  *      /usr/bin/systemctl restart network

2.每周六、日的1:10重启network服务

10 1 * * 6-7              /usr/bin/systemctl restart network 

3.每天18:00到23:00之间每隔30分钟重启network

0/30 18-23 * * *

4.每隔两天的上午8点到11点的第三和第十五分钟执行一次重启

3,15 8-11 */2 * *

5.每周日凌晨2点30分,执行文件的备份

30 2 * * 7

6.晚上11点到早上7点之间,每隔一小时重启smb

0 23,0-7/1 * * *   /usr/bin/systemctl restart smb


####为普通用户编辑计划任务(tom必须为真实存在的用户)

[root@auto-yunwei ~]# crontab -e -u tom

####删除计划任务

[root@auto-yunwei ~]# crontab -r -u tom


[root@node2 ~]# cat /etc/crontab 

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root


# For details see man 4 crontabs


# 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