Linux计划任务详解,很详细,每一行命令都有相对应的白话解释。

计划任务

计划任务的作用是:做一些周期性的任务,目前最主要的用途是定期备份数据。

计划任务主要分为一次性调度执行at和循环调度执行cron,下面我就围绕着at和cron来讲解。

一次性调度执行at

at一次性调度的语法格式是:at timespec

timespec示例:一:at now +1min 一分钟后执行计划任务

二:at 16:00 tomorrow  明天下午16点执行

三:at 10:00 1/1/2021 (在2021年的1月1日上午十点执行)

四:at 10:00 AM tomorrow (在明天上午10点执行)

五:at 10:00 +4 days (在四天后的上午十点执行)

at 查询任务的语法是:atq

at 删除任务的语法是:atrm 任务ID

下面是实测环节,设置两个定时创建用户的任务,一个1分钟后创建,一个明天创建,查询任务,验证结果,把明天创建用户的任务删除。

[root@localhost ~]# at now +1 min       //at命令在1分钟后创建一个用户qqt
at> useradd qqt                         //
at>                                //按Ctrl+d结束
job 4 at Tue Aug 11 01:34:00 2020       //
[root@localhost ~]# at now +30 min      //at命令在30分钟后创建一个用户bbt
at> useradd bbt                         //
at>                                //
job 5 at Tue Aug 11 02:03:00 2020       //
[root@localhost ~]# atq                 //查看计划任务列表
4	Tue Aug 11 01:34:00 2020 a root     //
5	Tue Aug 11 02:03:00 2020 a root     //
[root@localhost ~]# id qqt              //查看qqt用户
uid=1675(qqt) gid=1675(qqt) 组=1675(qqt)
[root@localhost ~]# atq                
5	Tue Aug 11 02:03:00 2020 a root
[root@localhost ~]# atrm 5              //删除任务号5的计划任务
[root@localhost ~]# atq                 //查看下任务列表还有没有任务5的计划任务

 循环调度执行cron

cron的概念和crontab是不可分割的。crontab是一个命令,常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“/etc/crontab”文件中,以供之后读取和执行。

crond程序运行是计划任务执行的根本,因此首先要查看crond状态命令在下面

[root@localhost ~]# systemctl status crond.service

cron管理方式有三种,创建计划,查询计划,删除计划,分别是以下三条命令;注:管理员可以使用 -u username, 去管理其他用户的计划任务;计划任务存储位置在/var/spool/cron/中

[root@localhost ~]# crontab -e    //创建计划任务
[root@localhost ~]# crontab -l    //查询计划任务
[root@localhost ~]# crontab -r    //删除计划任务

cron语法格式是:

 | .------------- 分钟 (0 - 59)
 |  | .---------- 小时(0 - 23)
 |  |   | .------- 日(1 - 31)
 |  |  |   | .---- 月(1 - 12) OR jan,feb,mar,apr ...
 |  |  |   |   | 周(0 - 6) (周日=0 or 7) 
 * * * * * 命令

示例:0 * * * * /mysql_back.sh   每小时的0分执行       0 2 1,4,6 * * /mysql_back.sh  每月的1,4,6日的2点整执行

*/5 * * * * /mysql_back.sh      每五分钟执行       0 2 5-9 * * /mysql_back.sh  每月5日到9日的两点整执行

* * * * * /mysql_back.sh   每分钟执行        0 2 * * * /mysql_back.sh    每天两点整执行

0 2 14 * * /mysql_back.sh      每月14号的2点整执行     0 2 14 2 * /mysql_back.sh   2月14日2点整执行

0 2 * * 5 /mysql_back.sh       不写月日,仅周生效,每月的周五,两点执行

0 2 2 6 5 /mysql_back.sh     书写月和日,月或日,月日周均生效 6月2日的两点整执行和6月的周五两点整执行

示例,创建一个每隔一分钟执行创建文件的计划任务

[root@localhost ~]touch 9.sh    //创建一个文件9.sh
[root@localhost ~]echo "/usr/bin/touch /root/`date +%F-%H-%M-%S`.txt">9.sh
//向9.sh中写入程序,/usr/bin/touch 这是一个创建文件命令,您也可以换成其他命令;/root/ 这是创建的文件存放的位置,存放在/root/下,您也可以更改;`date +%F-%H-%M-%S`.txt 这是创建文件的名称,%F等价于 %Y-%m-%d即年月日,%H-%M-%S是时分秒,.txt是文件名的一部分
[root@localhost ~]# chmod +x 9.sh     //为文件9.sh加上执行权限
[root@localhost ~]# crontab -e  //创建任务计划
* * * * * /root/9.sh        //在任务计划中写上这段话,每分钟执行一次/root/9.sh这个命令
[root@localhost ~]# crontab -l    //查看循环计划任务
* * * * * /root/9.sh
2020-08-11-02-21-02.txt     //这是计划任务自动创建的文件
2020-08-11-02-22-01.txt
2020-08-11-02-23-01.txt
[root@localhost ~]# crontab -r //删除计划任务,否则他会一直自动创建文件。

 

 

你可能感兴趣的:(linux,centos)