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保存退出,出现如下页面:
该任务表示在当前时间的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
当到达执行时间后,计划任务执行,验证查看结果如下:
正如所想的那样,在系统时间是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查看该程序已经正常运行,如:
crontab相关的命令语法如下:
crontab 选项参数
其中选项参数有如下几个常用的:
-e: 编辑计划任务
-l: 查看计划任务
-u: 指定用户
-r: 删除计划任务
说明:当前哪个用户登录创建的计划任务,就为当前用户创建。如果超级管理员想给其它用户创建计划任务,可以通过-u后跟具体用户名来创建对应的计划任务。
通过crontab -e 命令可以创建编辑计划任务,但是格式具体是什么样的呢,我们可以参考/etc/crontab这个文件的格式,如下图:
简单来说,创建一条计划任务如图中红色圈起的那样,图中有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
删除计划任务,可以针对某个任务进行注释,也可以通过crontab -r删除所有任务,如:
[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root
[root@localhost ~]#
经过本章的学习,就想让大家知道,其实linux下的计划任务功能可以帮我们很人性化的去执行某些任务,方便快捷。想想如果没有这些计划任务,每天天去周期循环执行某些任务时,是多么的麻烦吧。关于计划任务的使用技巧还有很多,希望大家可以自己再去好好消化消化,争取更大的进步。
发表评论
登录后可评论,请前往 登录 或 注册