计划任务
计划任务
为什么要设置计划任务
定时备份,定时重启
管理任务,定时将服务器信息发邮件,每天只需要收邮件,就能了解很多台服务器的信息
...
主要分两种
一次性计划任务
at
周期性计划任务
at
指定的时间执行一次
指定时间的方式
绝对计时方法:
midnight午夜 noon中午 teatime下午茶(16:00)
hh:mm [today]
hh:mm tomorrow
hh:mm MM/DD/YY
相对计时方法:
now + n minutes
now + n hours
now + n days
具体看帮助 man at
系统时钟 date
设置日期 date -s '2013-05-14 11:27:00'
硬件时钟clock
clock --systohc 将系统时间存回硬件时钟内
clock --hctosys 系统时间设成和硬件时钟一致
指定在今天下午17:30执行某命令,假设当前时间是2013年1月15日
at 17:30
at 5:30pm
at 17:30 today
at now + 3 hours
at now + 180 minutes
at 17:30 01/15/13
at 17:30 15.01.13 如果用(.)表示日月年
at now + 5 minutes回车后,输入要执行命令,写完按ctrl+d保存
命令最好写绝对路径(例如which ls将查询到ls命令在哪里)
例 at now + 1 minutes
/usr/bin/wall hi,this is a test. 一分种后发一个广播
查看计划任务进程是否开启ps -le | grep atd
启动进程 /etc/rc.d/init.d/atd start
默认都会安装计划任务并启动
查看队列中的任务
at -l 或 atq
存放在这里
ls /var/spool/at/
删除一次性计划任务
at -d 序号
at配置文件,哪些用户可以使用at
/etc/at.allow
/etc/at.deny
如果存在/etc/at.allow,只有在此文件中的用户才可以使用at命令
如果存在/etc/at.deny,在此文件中的用户不可使用at命令
如果两个文件都不存在,只有超级用户可以使用at命令
如果两个文件都存在均为空,则所有用户都可以使用at命令
batch用法与at一样 [bætʃ] n. 一批;一批生产的量;成批作业
安排在系统负载较轻时运行一次
一般情况负载较低指0.8以下(w或top命令能看到)
crontab命令 [krɔn teibl]
周期性计划任务
三个常用选项:
-l 列出当前crontab
-r 删除当前的crontab 不建议用,直接用-e编辑就好
-e 编辑当前的crontab文件
crontab -e
分 时 日 月 周 命令/脚本
把知道的具体时间添上,不知道的用*号 周日是0
每天04:00
0 4 * * * 要执行的命令
周二和周五18:00
0 18 * * 2,5 要执行的命令
1月到3月份, 周二和周五18:00
0 18 * 1-3 2,5 要执行的命令
周一到周五17:30发广播,然后17:45分关机
写两条计划任务,不是只能写一条
30 17 * * 1-5 /usr/bin/wall < /root/msg
45 17 * * 1-5 /sbin/shutdown -h now
中午12点到14点,每两分钟(偶数)
*/2 12-14 * * * 命令
1-59/2 (奇数)
写命令时,最后要写上出错信息
例/bin/cp -r /etc /backup/etc.bak 2 >>/backup/etc.bak.err
2表示错误信息
这6项,都不能为空
多个值用,
连续的值用-
任何时间*
任何值用 *
步长 /n
命令给出绝对路径
用户必须具有运行对应命令或程序的权限
保存在 /var/spool/cron
检查crond进程是否开启
ps -le | grep crond
/etc/rc.d/init.d/crond start
有一个配置文件
/etc/crontab
定义了执行时的一些环境变量
最后四行,是一些系统的一些计划任务
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
把脚本放在那四个目录中,只要有执行权限,就会被定时执行
限制哪些用户可以使有crontab
/etc/cron.allow
/etc/cron.deny