Linux--计划任务!
Posted handsomeboy-东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux--计划任务!相关的知识,希望对你有一定的参考价值。
linux中计划任务概述
设置某个时间来执行一些列命令实现任务,或者设置周期性的执行任务,例如提醒生日时间到了
linux计划任务种类
一、一次性的计划任务
由at命令设置一次性计划任务,注意要实现at命令必须要有atd这个服务才行,atd(这里的d表示守护进程,表示一直在后台运行的进程),事实上,我们用at这个命令产生要实现的任务,这个任务会加载进/var/spool/at目录下,然后等待atd这个服务的使用和执行
如果在at编写中的命令出现错误,at会默认发邮件给执行者,可在/var/spool/mail中查看
at 10:18 2021-08-05 :输入此命令会进入一个计划表中,我们将我们想要执行的任务写入该
执行表并按Ctrl+d,系统就会在2021-08-05 10:18这个时间段来执行这个计划任务
atq :查询已创建的一次性计划任务
at now +3min :两分钟后执行任务,后面的时间单位可以更换
atrm 任务号 :删除任务
[root@AIDEBOY ~]# at now +5min
at> touch whd
at> mv /root/whd /home<EOT>
job 7 at Thu May 13 14:59:00 2021
[root@AIDEBOY ~]# atq
7 Thu May 13 14:59:00 2021 a root
[root@AIDEBOY ~]# atrm 7
[root@AIDEBOY ~]# atq
[root@AIDEBOY ~]#
二、循环执行的计划任务
linux中用crontab这个命令来实现建立循环型计划任务,crontab命令建立任务后会记录在/var/spool/cron中
crontab -u :只有root才能执行这个任务,表示帮其他用户设置计划任务
crontab -l :查看crontab的任务内容
crontab -r :删除crontab内的所有计划任务内容
crontab -e :进入vim编辑界面,编辑计划任务
格式为: 分钟 小时 日期 月 周 命令串
时间的取值范围: 0-59 0-23 1-31 1-12 0-7
【周】中的0和7都表示星期天
时间的特殊符号:*表示该范围内的任意时间
,逗号表示表示多个时间点,比如【周】中1,3,5表示每周一、周三和周五
-表示连续的时间点,如【日期】中15-19,表示每15到19号
/表示指定时间间隔的频率,如【日期】中*/3,表示每三天,10-25/2表示10号到25号每三天执行一次
注意:后面的命令串中的命令最好用路径的方式表示
例子:编辑完跟vim编辑器一样wq退出即可
[root@AIDEBOY ~]# crontab -e
0 5-11 * * * /bin/rm -rf /var/www/html/*
#上午5点到晚上11点之间,每隔一小时清理/var/www/htmI目录-次
~
#假如你女友Luxi的生日是5月22,你想5月21日23:59给她发一封信,信在/home/lover.txt
59 23 21 5 * mail Luxi < /home/lover.txt
~
#每月每天凌晨3点30分和中午12点30分执行/tmp下的hello.sh脚本
30 3 * * * /bin/sh /tmp/hello.sh
30 12 * * * /bin/sh /tmp/hello.sh
~
#每月每天早.上8点到下午18点每隔2小时的每30分钟查看系统时间
30 8-18/2 * * /bin/date
~
-- INSERT --
注意:格式中没有几月几日且为星期几,例如本来想8月11号刚好是星期五执行任务
* * 11 8 5 命令串 :这里表示的可能为每8月内的每个星期5,而不是想要的8月11的星期5,与想要的规划不符
crontab的配置文件/etc/crontab,/etc/cron.d/
[root@AIDEBOY ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin //执行文件的查找路径
MAILTO=root //执行任务发生错误时会发送邮件给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
黑白名单
为了安全性的问题,可以设置限制at和crontab使用的账户
- 白名单:/etc/cron.allow和/etc/at.allow,默认两个文件是没有的,需要创建
将可以使用at或crontab的账号写入其中,不在这文件内的用户则不可以使用at或crontab - 黑名单:/etc/cron.deny和/etc/at.deny
记录在这文件内的账户则不可以使用at或crontab
当两名单同时存在时,比较优先级白名单比黑名单优先,两种只会存在一种名单限制
以上是关于Linux--计划任务!的主要内容,如果未能解决你的问题,请参考以下文章