Linux定时(计划)任务

本文详细介绍了Linux系统中一次性计划任务的at命令及其使用,以及周期性任务调度的crontab服务,包括crontab文件配置、系统与用户任务调度的实战操作。

一次性计划任务

at命令

计划任务,在特定的时间执行某项工作,在特定的时间执行一次,需要安装at服务

安装at服务

[root@localhost ~]# yum install at-3.1.13-24.el7.x86_64

启动atd服务

[root@localhost ~]# systemctl start atd

设置一个5分钟后打印222,退出(ctrl+D)
atq查看待执行任务

[root@localhost ~]# at now +5 minutes 
at> echo 222
at> <EOT>
job 6 at Thu Oct 29 21:40:00 2020
[root@localhost ~]# atq
6 Thu Oct 29 21:40:00 2020 a root

删除待处理任务

[root@localhost ~]# atq
7 Thu Oct 29 22:48:00 2020 a root
[root@localhost ~]# atrm 7

查看待执行作业详情

[root@localhost ~]# atq
8 Thu Oct 29 22:56:00 2020 a root
[root@localhost ~]# at -c 8

周期性计划任务

Linux系统是由cron(crond)这个系统服务来控制的。Linux系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。
crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,当安装完操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

系统任务调度

系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就说系统任务调度的配置文件。

[root@localhost ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

前四行是用来配置cronb任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户。
注意:
(1)每一行定义一个周期性任务,共7个字段;
五个*:定义周期性时间
user-name:运行任务的用户身份
command to be executed:任务
(2)此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量;
(3)执行结果邮件发送给MAILTO指定的用户

用户任务调度

用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用crontab工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致。
使用者权限文件
/etc/cron.deny:该文件中所列用户不允许使用crontab命令
/etc/cron.allow:该文件中所列用户允许使用crontab命令
/var/spool/cron/:所有用户crontab文件存放的目录,以用户名命令
用户cronb的配置格式:/var/spool/cron/USERNAME

crontab命令

-e编辑任务
-l列出所有任务
-r移除所有任务;即删除/var/spool/cron/USERNAME文件
-i在使用-r选项移除所有任务时提示用户确认
-uuser:root用户可为指定用户管理cron任务
[root@localhost ~]# crontab -l
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
MAILTO=root
* * * * *  echo "crontab" > /tmp/root.txt
#############################
#移除所有任务
[root@localhost ~]# crontab -ri
crontab: really delete root's crontab? y
[root@localhost ~]# crontab -l
no crontab for root
#############################
#给test01用户编辑计划任务
[root@localhost ~]# crontab -u test01 -e

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值