零基础学习Linux系统计划任务cron

零基础学习Linux系统计划任务cron记录

简介

计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。
在Linux中,我们经常用到 cron 服务器来完成这项工作。
cron服务器可以根据配置文件约定的时间来执行特定的任务。

一次性调度执行 at

at命令 – 一次性定时计划任务
at命令允许指定运行脚本时间,at的守护进程atd会以后台模式运行,检查系统上的一个特殊目录来获取at命令的提交的作业。
默认情况下,atd守护进程每60秒检查一次目录。
有作业时会检查作业运行时间,如果与当前时间匹配,则运行此作业。

语法格式:at [参数]
参数:
	atq	查看系统中的等待作业
	-d	删除系统中的等待作业(等效于atrm命令)
	-c	打印任务的内容
	-q	使用指定的列队
	-f	将指定文件提交等待作业
	-t	以时间的形式提交运行作业

查看系统中的等待作业

[root@study ~]# atq

使用”at -d”或者”atrm”(二者同效)指定id来删除系统中的等待作业,id为”atq”命令输出的第一行顺序数字

[root@study ~]# at -d 1
Cannot find jobid 1

立即执行at_test.sh脚本

[root@study ~]# at -f at_test.sh now
job 1 at Sat Nov 19 13:56:00 2022

在2分钟之后运行 at_test.sh脚本

[root@study ~]# at -f at_test.sh now+2 min
job 2 at Sat Nov 19 14:01:00 2022

在14:10运行 at_test.sh 脚本

[root@study ~]# at -f at_test.sh 14:05
job 3 at Sat Nov 19 14:05:00 2022

在2022年11月20日运行 at_test.sh脚本

[root@study ~]# at -f at_test.sh 11/20/2022
job 4 at Sun Nov 20 14:02:00 2022

循环调度执行 cron

crond 服务的启动和自启动

crontab命令 – 管理定时计划任务
crontab命令来自于英文词组“cron table”的缩写,其功能是管理定时计划任务。
定时计划任务,故名意思就计划好的任务,到了时间就会自动执行,在Linux系统中的crond是一个定时计划任务服务,
用户只要能够按照正确的格式(分、时、日、月、星期、命令)写入到配置文件中,
那么就会按照预定的周期时间自动的执行下去,而crontab命令则是用于配置的工具名称。

语法格式:crontab [参数]
参数:
	-e	编辑任务
	-l	列出任务
	-r	删除任务
	-u	指定用户名字

管理当前用户的计划任务

[root@study ~]# crontab -e
#进入 crontab 编辑界面。会打开Vim编辑你的任务
* * * * * 执行的任务

这个文件中是通过 5 个“”来确定命令或任务的执行时间的,这 5 个“”的具体含义如下表 所示。

项目含义范围
第一个"*"一小时当中的第几分钟(minute)0~59
第二个"*"一天当中的第几小时(hour)0~23
第三个"*"一个月当中的第几天(day)1~31
第四个"*"一年当中的第几个月(month)1~12
第五个"*"一周当中的星期几(week)0~7(0和7都代表星期日)

在时间表示中,还有一些特殊符号需要学习,如下表所示。

特殊符号含义
*(星号)代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。
,(逗号)代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠)代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线)代表每隔多久执行一次。比如"/10***命令",代表每隔 10 分钟就执行一次命令。

当“crontab -e”编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。而且 crontab 命令只要保存就会生效,只要 crond 服务是启动的。

crontab举例

时间含义
45 22 *** 命令在 22 点 45 分执行命令
0 17 ** 1 命令在每周一的 17 点 0 分执行命令
0 5 1,15** 命令在每月 1 日和 15 日的凌晨 5 点 0 分执行命令
40 4 ** 1-5 命令在每周一到周五的凌晨 4 点 40 分执行命令
*/10 4 *** 命令在每天的凌晨 4 点,每隔 10 分钟执行一次命令
0 0 1,15 * 1 命令在每月 1 日和 15 日,每周一个 0 点 0 分都会执行命令,注意:星期几和几日最好不要同时出现,因为它们定义的都是天,非常容易让管理员混淆

案例:
让系统每隔 3 分钟就向 /tmp/test 文件中写入一行“hello world!”,验证一下系统定时任务是否会执行。

[root@study ~]# crontab -e
#进入编辑界面
*/3 * * * * /bin/echo "hello world!" >> /tmp/test

查看当前用户的已有计划任务列表

[root@study ~]# crontab -l
*/3 * * * * /bin/echo "hello world!" >> /tmp/test

删除当前用户下所有的定时任务。如果只想删除某个定时任务,则可以执行“crontab -e”命令进入编辑模式手工删除

[root@study ~]# crontab -r
[root@study ~]# crontab -l
no crontab for root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值