at命令
一次性计划任务
服务脚本名称:/etc/init.d/atd
设置格式:at [HH:MM] [yyyy-mm-dd]
[root@localhost ~]# date
2011年 02月 21日 星期一 14:45:05 CST
[root@localhost ~]# at 14:55 2011-02-21
at> pgrep -U root | wc -l > /tmp/ps.root
at>
job 1 at 2011-02-21 14:55
[root@localhost ~]# cat /tmp/ps.root
63
root@localhost ~]# at 21:30
at> shutdown -h now
at>
job 7 at 2011-02-21 21:30
查看未执行任务列表
[root@localhost ~]# atq
1 2011-02-21 14:55 a root
2 2011-02-21 21:30 a root
删除第二条任务
[root@localhost ~]# atrm 2
[root@localhost ~]# atq
1 2011-02-21 14:55 a root
at计划任务 所在目录/var/spool/at
at的控制文件/etc/at.allow和 /etc/at.deny
===================================================================================
crontab命令
按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
启用周期性任务有一个前提条件,即对应的系统服务crond必须已经运行
全局配置和系统默认配置中的内容一般不需要用户去修改,用户只需设置/var/spool/cron/目录下与本帐号同名的文件即可,接下来介绍如何设置用户自己的计划任务
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
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
管理cron计划任务
编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]
用户只需执行“crontab -e”命令后会自动调用文本编辑器(默认为vi)并打开“/var/spool/cron/用户名”文件,无需手动指定文件位置
时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
应用示例
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一、三、五的8点30分
0 8-18/2 * * * 8点到18点之间每隔2小时
0 * */3 * * 每隔3天
示例1(root用户)
每天早上7:50自动开启sshd服务,22点50时关闭
每隔5天清空一次FTP服务器公共目录/var/ftp/pub
每周六的7:30时,重新启动httpd服务
每周一、三、五的17:30时,打包备份/etc/httpd目录
[root@localhost root]# crontab -e
50 7 * * * /sbin/service sshd start
50 22 * * * /sbin/service sshd stop
0 0 */5 * * /bin/rm –rf /var/ftp/pub/*
30 7 * * 6 /sbin/service httpd restart
30 17 * * 1,3,5 /bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
[root@localhost root]# crontab -e -u jerry
55 23 * * 7 /bin/cp /etc/passwd /home/jerry/pwd.txt
示例3:
root用户查看自己的计划任务列表
查看并删除jerry用户设置的计划任务
[root@localhost root]# crontab -l -u jerry
55 23 * * 7 /bin/cp /etc/passwd /home/jerry/pwd.txt
[root@localhost root]# crontab -r -u jerry
[root@localhost root]# crontab -l -u jerry
no crontab for jerry
[root@localhost root]#
Crontab安全性
默认情况下,所有用户都可使用cron工具,要限制对cron的访问,可以使用/etc/cron.allow与/etc/cron.deny文件。
1、这两个文件都不存在时,每个用户都可以访问cron工具。
2、若两个文件都存在,只有/etc/cron.allow中的用户可以访问cron工具,忽略/etc/cron.deny文件
3、如果/etc/deny文件不存在,则/etc/allow中的用户不可以访问cron工具。