一次性计划任务
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选项移除所有任务时提示用户确认 |
| -u | user: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

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

被折叠的 条评论
为什么被折叠?



