赞
踩
今天继续给大家介绍Linux基础知识,本文主要内容是Linux定时任务。
计划任务是需要在指定时间执行的任务或者是周期性执行的任务,比如凌晨3点重启设备,每周对日志文件备份等。Linux系统会内置at和cron服务,at服务用来在指定时间执行任务,cron用来周期性执行任务。
at定时任务依赖于Linux系统的atd服务,如果atd服务不开启,则at则不起作用,查看atd服务开启命令如下:
systemctl status atd
如果显示如下,则表示atd服务已经开启:
如果没有atd服务,或者是没有at命令,则可能是系统在最小化安装的时候没有装at,此时我们可以yum安装at软甲,命令如下:
yum install -y at
at定时任务相关文件主要有以下2个:
/etc/at.deny
/etc/at.allow
at.deny表明不允许哪个用户执行at服务,at.allow表明允许哪个用户执行at服务。默认情况下,at.deny文件存在而at.allow文件不存在,而当at.deny和at.allow文件同时存在时,at.allow文件则会失效,只有当at.deny文件不存在时,at.allow文件才会生效。
at命令常用参数如下:
-l 表示列出所有的at定时任务
-d 表示删除指定的at定时任务
-c 表示查看指定的at定时任务
-t 表示后面跟字符串化的时间参数
at命令使用实例如下:
at 00:00
at 2:30pm
at now+10min
at now+3days
at 4pm+4days
at 10 Jan 31
at -t 202111111300
上述命令分别表示凌晨0点执行、下午两点半执行、10分钟以后执行、3天以后执行、4天以后的下午四点执行、1月31号的上午(不指名上午还是下午就使用24h)10点执行和2021年11月11日13点执行。
我们在键入上述命令并回车后,就会进入at任务的交互式界面,此时就可以键入我们的定时任务了。在写完以后,ctrl+d表示保存任务并退出,ctrl+c表示不保存退出。
at定时任务编辑如下:
如果定时任务比较长,我们也可以写成脚本,然后使用输入重定向或者-f参数的方式来编辑,如下所示:
如果我们想删除at定时任务,就可以使用-d参数,删除过程如下所示:
cron周期性任务依赖于系统后台的crond进程,类似于at,我们也要首先确认cron服务是否开启,执行命令:
systemctl status crond
如果出现如下结果,就表示crond任务已经开启。
cron定时任务分为系统的定时任务和用户的定时任务。
crond定时任务主要文件如下:
1、/var/spool/cron/
该文件主要用于存放用户设置的定时任务,会以用户名来命名,当用户创建cron定时任务时,就会在该目录下生成一个同名文件,该文件存储了用户定时任务的具体信息。
2、/etc/cron.deny /etc/cron.allow
与at定时任务类似,cron.allow存放了运行创建定时任务的用户,而cron.deny则存放了不允许创建定时任务的用户,只有当cron.deny不存在时,cron.allow才会生效。
3、/etc/cron.monthly/
该文件用来存放系统每个月需要执行的脚本
4、/etc/cron.weekly/
该文件用来存放系统每周需要执行的脚本
5、/etc/cron.daily/
该文件用来存放系统每天需要执行的脚本
6、/etc/cron.hourly/
该文件用来存放系统每小时需要执行的脚本
执行命令crontab可以使我们创建定时任务,该命令常用参数如下:
-e 表示新创建或编辑定时任务
-r 表示删除定时任务
-l 表示显示定时任务
因此,执行命令:
crontab -e
即可以创建一个定时任务了。
创建定时任务需要遵循一定的规范, 在crond文件中,前面的五列都代表一个时间,从左到右分别是分钟、小时、天、月、星期,如果不做设置,可以用*跳过,最后一列表示要执行的任务。
在每一列对应的地方写入具体数值就可以表示定时执行,还可以使用短杠表示一段时间,如果*后面加入斜杠,则表示没隔该端时间执行一次。
crond定时任务时间设置示例如下:
0 3 * * *
表示每天3点执行
0 */3 * * *
表示每隔3小时执行
0 3 2 * 3
表示每个月2号的3点或者每周三的3点执行
* * * * *
表示每分钟执行一次
* 1-10 * **
表示每天的1点到10执行
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。