atd与crond两个任务管理程序的区别
1). atd守护进程由at文件驱动,多用于一次性任务(临时性任务),执行完毕后自动删除。
可以使用at命令为atd守护进程进行任务排队,共有a-z二十六个队列,队列越后系统优先级越低。
at相关的简单命令:
at timespec | 计划新的任务 |
at -l | 获得当前用户待处理的任务的概述 |
atq | 与at -l 一样 获得当前用户待处理的任务的概述 |
at -q | 指定任务队列 |
atrm jobnumber | 删除任务 |
at -c | 执行任务时将运行的实际命令 |
2). crond守护进程由cronies软件包提供,默认启动并启用,由crontab命令编辑启动,用于周期性作业。
crontab相关的简单命令:
crontab -l | 列出当前用户的计划任务 |
crontab -e | 编辑当前用户的任务 |
crontab -r | 删除当前用户的所有任务 |
crontab -u | 超级用户管理其他用户的任务 |
crontab filename | 删除所有任务,并替换为filename读取的任务,没有指定文件则使用stdin |
编辑用户的任务默认调用vim工具,书写时按照分钟 小时 日 月份 周(星期几)+命令的顺序书写
书写的语法规则相同
*表示无关紧要或始终
数字指定时间或日期,星期分别用0-7表示,0与7都表示星期天
x-y(含)表示范围,范围内的整数都会执行
x,y表示列表,列表中也可以包含范围
*/x x表示时间间隔,也就是每x分钟运行一次。
同时月份与周几也可以用英文缩写
天数与周几是或者关系,时间在其他三个要素满足的情况下只需要满足天数或者星期几两个中一个因素就可运行
周期性任务最小单位为分钟,也就意味着只能使用整数。
2.指定在2023/12/12 09:00将时间写入testmail.txt文件中
[ll@localhost ~]$ at 9am December 12 2023
warning: commands will be executed using /bin/sh
at> date >> testmail.txt
at> <EOT>
job 2 at Tue Dec 12 09:00:00 2023
时间太长,为检查是否正确我们修改一下时间
[ll@localhost ~]$ at 18:00 2023-3-11
warning: commands will be executed using /bin/sh
at> date >> testmail.txt
at> <EOT>
job 4 at Sat Mar 11 18:00:00 2023
结果:
[ll@localhost ~]$ atq
2Tue Dec 12 09:00:00 2023 a ll
[ll@localhost ~]$ find testmail.txt
testmail.txt
[ll@localhost ~]$ cat testmail.txt
Sat Mar 11 06:00:00 PM CST 2023
[ll@localhost ~]$ date
Sat Mar 11 06:01:44 PM CST 2023
[ll@localhost ~]$
3.指定在每天凌晨4:00将该时间点之前的系统日志信息备份到个目录下(/var/log/messages ),备份后日志文件名显示格式logfileYY-MM-DD HH-MM
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=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
0 4 * * * root cp /var/log/messages /logfile`date + \%F \%R`; echo > /var/log/messages
注意:命令中%符号未转义需要转义否则无法识别。