计划任务
atd 服务管理单次任务
运行单次任务的程序时at命令,管理他的服务是atd
使用at这个指令来产生要运行的工作 并将这个以文本文件的方式写入/var/spool/at 目录下,atd服务到这路径下取用并执行
有两个控制文件 规定了哪些用户可以使用 哪些用户不可以使用
首先查看 /etc/at.allow文件
假如系统下有这个文件 就只允许这个里面的用户使用at 其他用户都拒绝
如果没有/etc/at.allow 文件,就看有没有/etc/at.deny文件
这个文件里面所存的是被拒绝的用户
系统里只有一个at.allow就不要创建at.deny 一个就可以了 不要自己给自己找麻烦!
具体操作
at [-mldv] time
选项参数
-m :当 at 的工作完成后,即使没有输出讯息,亦以 email 通知使用者该工作已完成。
-l :at -l 相当于 `atq` 命令,列出目前系统上面的所有该使用者的 at 调度,查看at调度
-d :at -d 相当于 `atrm` 命令 ,可以取消一个在 `at` 调度中的工作;
-v :可以使用较明显的时间格式列出 at 调度中的工作列表;
-c :可以列出后面接的该项工作的实际指令内容。
例子
[root@losaclhost ~]# at now + 5 minutes #在五分钟之后开始在第一个终端上开始输出hello
at> echo "hello" > /dev/pts/0 # /dev/pts0 意思是打开的第一个终端
at> <EOT> #后续可以接好多要在规定时间里要输出的句子
输出完毕后按下CTRL+d退出编辑
查询命令
[root@losaclhost ~]# atq
周期性任务
循环执行的例行调度则是由cron(crond)这个系统服务来控制
默认情况下每个用户都可以通过crontab管理自己的计划任务
和at一样也有两个文件控制权限
/etc/cron.allow
/etc/cron.deny
使用规则和at一.allow要比.deny优先,使用一个来控制,不要给自己找麻烦
使用格式
可以参考时间 cat /etc/crontab
image.png
周数字为0或者7 代表星期天的意思
记忆总结为: 分 时 日 月 星
特殊符号代表的意义
*代表所有的取值范围内的数字
/ 代表每的意思,*/5 表示每5个单位
- 代表从某个数字到某个数字
, 代表分隔时段的意思,就是 和 的意思
0 */2 * * * command 表示每两个小时
管理和编辑任务
调用vim打开一个临时文件
vi crontab -e
*/1 * * * * /bin/echo "ok shark"
写完后信息会保存在/var/spool/cron/目录下和用户名同名的文件中
如果是shark会保存在/var/spool/cron/shark下 每个用户只有一个
➜ ~ crontab -l
*/1 * * * * /bin/echo "ok shark"
➜ ~ cat /var/spool/cron/root
*/1 * * * * /bin/echo "ok shark"
两个都可以看到
删除的话可以再次进入vim编辑里面
也可以执行下面命令
crontab -r
注意
命令的错误输出重定向
*/1 * * * * /bin/echo "hello" 2>/dev/null
直接输出到空黑洞里
不要在统一时间段执行多个计划任务
周于日月不可同时并存
anacron
crond和anacron可以是一个意思 但anacron不是取代crond的 只是anacron是用来处理由于某些原因导致的超时而没被执行的调度工作
网友评论