logo

linux计划任务竟可以这样玩,再也不用熬夜执行任务了

作者:皮皮的皮2021.07.12 13:49浏览量:166

简介:其实linux下的计划任务功能可以帮我们很人性化的去执行某些任务,方便快捷.

来源:浩道linux

linux中的计划任务指的就是除了用户立即执行的命令操作以外,还可以根据实际需要,通过配置在指定的时间、指定的日期执行预先计划好的相关任务,如实际工作中可能要定期备份、定期删除日志等任务,此时就可以利用计划任务去执行该操作了。linux中的计划任务可以通过atd、crond这两个系统服务分别实现一次、周期性计划任务的功能。当然,要执行这些计划任务,得必须先通过at、crontab相关命令进行具体的计划任务设置。以下我们就一一去讲解计划任务的具体实现。

1、一次性计划任务的实现之at

如果系统不带at命令,可以先安装下该命令。
安装命令如下:

yum install -y at

运行at命令如下:

systemctl start atd

设置at开机自启动命令:

systemctl enable atd

at用法:

at +时间

执行at +时间命令后,进入创建at任务命令行页面,此时再创建相关任务,可以创建多个任务,任务创建后,通过ctrl+D键保存退出任务的创建。

at创建计划任务举例如下:

[root@localhost ~]# date
2021年 06月 25日 星期五 20:45:45 CST
[root@localhost ~]# at now +5min
at> touch /tmp/haodao.txt
at> touch /tmp/linux.sh

创建完以下任务后,直接按ctrl+D保存退出,出现如下页面:
1626068287385.jpg

该任务表示在当前时间的5分钟后执行该计划任务,计划任务的内容是:
在/tmp/目录下创建haodao.txt文件和linux.sh文件,该命令如上图看到的将在系统时间20:51:00执行该计划任务。

此时可以通过atq命令或at -l查看相关的还未执行的计划任务,如:

[root@localhost ~]# atq
3       Fri Jun 25 20:51:00 2021 a root

当到达执行时间后,计划任务执行,验证查看结果如下:
1626068332845.jpg
正如所想的那样,在系统时间是20:51分的时候,创建了计划任务中的两个文件。当该计划任务执行后,就自动结束了计划任务,只执行一次。

当然通过at创建计划任务时,后面可以直接跟上具体时间,如:

at 21:21

以上表示在系统时间21:21时去执行创建的计划任务。

at 02:00 2021-09-01

以上表示在系统时间2021-09-01 02:00去执行创建的计划任务。

at 02:00 +6days

以上表示在当前系统时间6天后的02:00去执行创建的计划任务。

计划任务的删除,具体命令如下:

atrm 任务编号

任务编号就是利用atq或者at -l命令查看计划任务时候,第一个字段的数字,如删除具体的计划任务:

[root@localhost ~]# at 21:08
at> touch /tmp/2108.c
at> touch /tmp/2108.sh
at> <EOT>
job 4 at Fri Jun 25 21:08:00 2021
[root@localhost ~]# atq
4       Fri Jun 25 21:08:00 2021 a root
[root@localhost ~]# at -l
4       Fri Jun 25 21:08:00 2021 a root
[root@localhost ~]# at -l
4       Fri Jun 25 21:08:00 2021 a root
[root@localhost ~]# atrm 4
[root@localhost ~]# at -l
[root@localhost ~]#
2、周期性计划任务之crontab

at创建的计划任务执行一次后就自动结束了该任务,而crontab创建的计划任务可以周期性循环执行对应的计划任务。实际生产环境中使用最多,如我们想每天凌晨3点去执行我们的计划任务,就可以通过crontab去创建对应的任务,不用人工每天守着系统到凌晨3点去手工执行了。

centos7系统自带crond服务程序,通过命令systemctl status crond查看该程序已经正常运行,如:
1626068444544.jpg

crontab相关的命令语法如下:

crontab 选项参数

其中选项参数有如下几个常用的:

  • -e: 编辑计划任务

  • -l: 查看计划任务

  • -u: 指定用户

  • -r: 删除计划任务

说明:当前哪个用户登录创建的计划任务,就为当前用户创建。如果超级管理员想给其它用户创建计划任务,可以通过-u后跟具体用户名来创建对应的计划任务。

通过crontab -e 命令可以创建编辑计划任务,但是格式具体是什么样的呢,我们可以参考/etc/crontab这个文件的格式,如下图:
1626068518781.jpg
简单来说,创建一条计划任务如图中红色圈起的那样,图中有5个间隔的是空格,后面跟的命令(一般写命令的绝对路径)就是具体的计划任务。而5个在实际编写计划任务时,对应的是5个具体的时间。其中第一个表示分(0-59),第二个表示时(0-23),第三个表示日(1-31),第四个表示月(1-12),第五个*表示周(0-6)或(星期天=0或星期天=7)

以下crontab -e进入编辑模式,就像vi,vim编辑一样,针对实际常用实例做具体的计划任务说明:

[root@localhost ~]# crontab -e

#1、表示每一天每小时10分执行/tmp/auto_beifen.sh脚本
10 * * * * /tmp/auto_beifen.sh

#2、表示每一天2时10分执行/tmp/auto_beifen.sh脚本
10 2 * * * /tmp/auto_beifen.sh

#3、表示每月1日2时10分执行/tmp/auto_beifen.sh脚本
10 2 1 * * /tmp/auto_beifen.sh

#4、表示每月1日,10日,20日的2时10分执行/tmp/auto_beifen.sh脚本
10 2 1,10,20 * * /tmp/auto_beifen.sh

#5、表示每年的3月1日2时10分执行/tmp/auto_beifen.sh脚本
10 2 1 3 * /tmp/auto_beifen.sh

#6、表示每月的10日-15日的每一天2时10分执行/tmp/auto_beifen.sh脚本
10 2 10-15 * * /tmp/auto_beifen.sh

#7、表示每一天每小时每隔10分执行/tmp/auto_beifen.sh脚本
*/10 * * * * /tmp/auto_beifen.sh

#8、表示每一天每小时每分钟执行/tmp/auto_beifen.sh脚本
* * * * * /tmp/auto_beifen.sh

#9、表示每一天每小时0分(整点)执行/tmp/auto_beifen.sh脚本
0 * * * * /tmp/auto_beifen.sh

#10、表示每月的周三2时0分执行/tmp/auto_beifen.sh脚本
0 2 * * 3 /tmp/auto_beifen.sh

列出计划任务,命令为:

[root@localhost ~]# crontab -l

1626068606282.jpg

删除计划任务,可以针对某个任务进行注释,也可以通过crontab -r删除所有任务,如:

[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root
[root@localhost ~]#

经过本章的学习,就想让大家知道,其实linux下的计划任务功能可以帮我们很人性化的去执行某些任务,方便快捷。想想如果没有这些计划任务,每天天去周期循环执行某些任务时,是多么的麻烦吧。关于计划任务的使用技巧还有很多,希望大家可以自己再去好好消化消化,争取更大的进步。

相关文章推荐

发表评论