前言
- at命令
at命令允许指定Linux系统何时运行脚本,at命令会将作业提交到队列中,指定shell在何时运行该作业。
at的守护进程at 会以后台模式运行,检查作业队列来运行作业。
atd守护进程会检查系统上的一个特殊目录来获取at命令的提交的作业。
默认情况下,atd守护进程每60秒检查一次目录。有作业时,会检查作业运行时间,如果时间与当前时间匹配,
则运行此作业
- 周期性命令
crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,
当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,
crond进程每分钟会定期检查是否有要执行的任 务,如果有要执行的任务,则自动执行该任务。
一、at 临时性任务
选项 | 描述 |
---|---|
at | 创建一次性任务;若在任务内创建系统已存在的文件,会更改文件的创建时间为当前 |
ctrl+d | 结束at命令的输入 |
atq | 查询一次性任务:查询没有完成的任务,完成时间之前 |
atrm id号 | 删除一次性的任务 |
:/var/spool/at/ | 计划任务的存储目录 |
/var/spool/mail | 到执行任务时间时,不会显示在前台进行,系统会发送一个邮件mail,进入存储目录查询 |
- 时间设置
at允许使用一套相当复杂的指定时间的方法
项目 | Value |
---|---|
at now +3min | 3分钟之后执行创建的任务 |
at teatime | 默认代表当天下午四点执行任务 |
at teatime +4day | 代表四天后的下午四点执行任务 |
at noon | Column 2 默认代表当天中午12点 |
:at May 30 2021 | 2021年5月30日执行任务 |
at 5pm | 下午三点执行任务 |
at [ HH:MM] [yyyy-mm-dd] //创建一次性任务;若在任务内创建系统已存在的文件,会更改文件的创建时间为当前
ctrl+d //结束at命令的输入
atq:查询一次性任务:查询没有完成的任务,完成时间之前
atrm id号:删除一次性的任务
/var/spool/at/:计划任务的存储目录
/var/spool/mail:到执行任务时间时,不会显示在前台进行,系统会发送一个邮件mail,进入存储目录查询
at now +2min:2分钟之后执行创建的任务
at teatime:默认代表当天下午四点执行任务
at teatime +3day:代表三天后的下午四点执行任务
at noon:默认代表当天中午12点
at May 30 2021:2021年5月30日执行任务
at 3pm:下午三点执行任务
二 周期性计划任务-
3.1 命令简介
- 按照预先设置的时间周期重复执行用户指定的命令操作;执行此命令需要运行守护进程:
crond
,但是现在系统一般都是自动运行的。 - 主要配置文件
全局配置文件:/etc/crontab
系统默认的设置:/rtc/cron.*/
用户定义的设置:/var/spool/cron
/用户
三 周期性计划任务-crontab
3.1 主要配置文件
主要配置文件全局配置文件:/etc/crontab
系统默认的设置:/rtc/cron.*/
用户定义的设置:/var/spool/cron/用户
/etc/crontab文件包括下面几行:
cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=HOME=/
3.2 run-parts
**51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
3.3命令选项crontab
前 四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行 命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。
编辑周期性任务
编辑周期性任务命令 | 语法 |
---|---|
-e | 编辑周期性任务;打开vi编辑器,最好加上绝对路径 |
-el | 查看周期性任务 |
-r | 删除当前用户所有的任务 |
超级用户root可以通过命令管理其他用户
星号(*):代表所有可能的值.
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
3.4 .黑白名单
-
计划任务crontab权限设置
crontab默认所有用户都可以执行crontab设置计划任务。若有需要可以通过在/etc/cron.deny中添加用户来禁止该用户设置计划任务,也可以自行创建/etc/cron.allow来使用白名单 -
黑名单cron.deny目录:
/etc | grep “cron.deny”