Linux一次性计划任务和周期计划任务
一次性计划任务 at
一次性计划任务可以理解成在未来某个时间节点,执行某个命令
他的服务名称是atd服务
启动服务
systemctl start atd.service
这个东西就相当于倒计时
at now +1 min #在一分钟后执行某个命令
at now +1 min #回车
echo "i love linux" > /tmp/message
at now +1 min #回车
iptables-restore < 防火墙的配置
如果说我想在16:27的一个小时候执行pwd命令
at 16:27 +1 hour
pwd
这个后面可以跟多个命令写完之后想退出怎么办
那就输入CTRL+d就能退出并创建好我们 的一次性任务计划
我们使用at -l 来查看一下我们的计划任务
我们可以看到他的id是2那看一下计划里有什么内容at -c 2
这个任务暂时不需要了那我们取消吧at -r 2
我们可以看到以及没有计划了
一次性计划也可以设置详细的时间点比如:
at 8:00 2100-01-01 #在未来的这个时间执行
如果说未设置了13.00进行从其那么我14.00才对点脑开机会怎么样呢?
如果设定的时间处于关机等状态无法执行计划任务那么开机就会立即执行
查看计划任务列表 | at -l |
---|---|
查看计划任务内容 | at -c 计划任务的id |
删除计划任务 | at -r 计划任务的id |
周期性计划任务
周期性计划任务就是每隔多长时间就要执行某个命令
周期性计划任务的服务是crond服务
启动服务
systemctl start crond.service
crond服务的配置文件是在/etc/crontab里存储着
它分为7个字段分 时 日 月 周 用户 执行命令
如果有多个时间可以用,分割列如
12月份的第七天第八天的
0 0 7,8 12 * root pwd>/tmp/1.txt
全为*号代表每天每秒钟都执行
在执行命令中需要加绝对路径 怎么查看文件的路径whereis 加文件名
如果出现错误会发送邮件给我们里面会告诉我们怎么做
这个邮件的位置是在var下的spool下的mail目录下
tail /var/spool/mail/root
查看邮件
如何看计划是否执行
可以查看系统日志来确定是否执行了命令
cron的系统日志在/var/log/cron文件里
编辑计划任务
无需打开配置文件可直接编辑计划任务
crontab -e
需要6个字段
分 时 日 月 周 执行命令
这边没有用户因为系统是认为谁编辑了此文件就以谁的身份执行
查看计划任务列表
crontab -l
删除计划任务
crontab -r
案例
1.利用一次性计划任务,在五分钟之后还原iptables 防火墙规则
导入防火墙规则iptables-restore /etc/sysconfig/iptables
2.设置一个周期性计划任务,还原防火墙规则。
iptables-restore需要加绝对路径