linux-计划任务atcrontab
Posted 可乐卷儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux-计划任务atcrontab相关的知识,希望对你有一定的参考价值。
文章目录
一、计划任务的分类
- 一次性计划任务:计划任务只执行一次
- 周期性计划任务:周期性的执行任务
二、一次性计划任务-at
1、at命令简介
at命令允许指定Linux系统何时运行脚本,at命令会将作业提交到队列中,指定shell在何时运行该作业。at的守护进程atd会以后台模式运行,检查作业队列来运行作业。atd守护进程会检查系统上的一个特殊目录来获取at命令的提交的作业。默认情况下,atd守护进程每60秒检查一次目录。有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
2、at命令格式
在使用at命令的时候,一定要保证atd进程启动
at [ HH:MM] [yyyy-mm-dd] //创建一次性任务;若在任务内创建系统已存在的文件,会更改文件的创建时间为当前
ctrl+d //结束at命令的输入
atq:查询一次性任务:查询没有完成的任务,完成时间之前
atrm id号:删除一次性的任务
/var/spool/at/:计划任务的存储目录
/var/spool/mail:到执行任务时间时,不会显示在前台进行,系统会发送一个邮件mail,进入存储目录查询
3、时间设置
at允许使用一套相当复杂的指定时间的方法
at now +2min:2分钟之后执行创建的任务
at teatime:默认代表当天下午四点执行任务
at teatime +3day:代表三天后的下午四点执行任务
at noon:默认代表当天中午12点
at May 30 2021:2021年5月30日执行任务
at 3pm:下午三点执行任务
4、实例
- 2天后晚上8点拷贝网卡配置文件到/op目录下,3天后中午12点再把拷贝的文件
/etc/sysconfig/network- scripts/ifcfg- ens33 //网卡配置文件
[root@localhost ~]$at 8pm +2day
at> cp -p /etc/sysconfig/network-scripts/ifcfg-ens33 /opt/ens33.bak
at> <EOT>
job 11 at Sat May 15 20:00:00 2021
[root@localhost ~]$at noon +3day
at> cp -p /opt/ens33.bak /etc/sysconfig/network-scripts/ifcfg-ens33
at> <EOT>
job 12 at Sun May 16 12:00:00 2021
三、周期性计划任务-crontab
1、命令简介
按照预先设置的时间周期重复执行用户指定的命令操作;执行此命令需要运行守护进程:crond,但是现在系统一般都是自动运行的。
主要配置文件
全局配置文件:/etc/crontab
系统默认的设置:/rtc/cron.*/
用户定义的设置:/var/spool/cron/用户
其中全局配置文件内容看一下:/etc/crontab
2、命令格式
字段 | 取值 |
---|---|
分钟 | 0-59之间任意整数 |
小时 | 0-24之间任意整数 |
日期 | 1-31之间任意整数 |
月份 | 1-12之间任意整数 |
星期 | 0-7之间任意整数;*0或7代表星期日 |
命令 | 要执行的命令或程序脚本;命令最好用绝对路径 |
时间数值的额数表示方法
符号 | 含义 |
---|---|
* | 表示该范围内的任意时间 |
, | 表示间隔的多核不连续时间点 |
- | 表示一个连续的时间范围 |
/ | 指定间隔的时间评率 |
3、命令选项crontab
编辑周期性任务
-e:编辑周期性任务;打开vi编辑器,最好加上绝对路径
-l:查看周期性任务
修改周期性任务
-e:打开vi编辑器进行删除操作
-r:删除当前用户所有的任务;慎用!
超级用户root可以通过命令管理其他用户
-u 用户名 -e
-u 用户名 -l
-u 用户名 -r
4、实例
- 每月10日10点复制/etc/hostname 到opt目录下,并查看任务
首先查询cp的绝对路径
crontab -e
crontab -l
- 每三天的16点复制文件:0 16 *3/ * * /usr/bin/cp -p/erc/hostname /opt
- 0 0 1 * *:每天12点(0代表12点)
- 50 7 * * * :每天7点50
- 0 * */5 * * :每隔5天的每个整点
- crontad -u zhangsan -e:通过用户zhangsan创建任务计划
四、计划任务crontab执行.sh脚本
实验步骤如下,结合实例说明
- 新建一个目录(可以是你当前的项目,如果.sh脚本执行结果和你项目相关的话。如果是系统本身相关的,建议放在其他位置)
cd /opt
- 在新建的目录下创建一个hell.sh文件内容:echo “hello world”
vim hello.sh
echo “hello world”
3. 运行脚本文件的两种方法
- sh hello.sh【hello.sh可以没有x权限】
- 使用绝对路径运行脚本文件:/opt/hello.sh【需要赋予执行权限】
- 赋予文件属主执行权限:执行chmod u+x hello.sh;
/opt/hello.sh 就变成一个命令
- crontab -e:打开计划任务的列表
- 将内容写入计划任务表
*/1 * * * * /opt/hello.sh (需赋予可执行权限的内容)
五、计划任务crontab权限设置
-
crontab默认所有用户都可以执行crontab设置计划任务。若有需要可以通过在/etc/cron.deny中添加用户来禁止该用户设置计划任务,也可以自行创建/etc/cron.allow来使用白名单
-
黑名单cron.deny目录:/etc | grep “cron.deny”
-
当系统安排任务计划时
- 查找allow文件–>查找deny文件
- 若两个文件中存在同一用户,因为allow权限更高,所以还是允许该用户创建计划任务
- 白名单是系统默认没有的,需要自己创建cron.allow//vim cron.allow
以上是关于linux-计划任务atcrontab的主要内容,如果未能解决你的问题,请参考以下文章