cron:例行任务,工作持续干下去。
at:工作执行一次就从linux系统任务分配中取消。
首先开启atd服务(使用root权限):/etc/init.d/atd restart
设置开机启动:chkconfig --level 35 atd on
先找/etc/at.allow,写作这个文件中的用户才能使用at,如果没有这个文件则找/etc/at.deny,写在里面的用户不能使用at,如果2个文件都没有,则只能root使用at。
at [-m] TIME:-m表示在工作完成后以电子邮件的方式通知用户。
TIME的格式:
HH:MM ex> 04:00 在今日的4点开始,若超过,则明天4点开始
HH:MM YYYY-MM-DD ex> 04:00 2012-02-22 强制规定在具体时间开始
HH:MM[am| pm][Month] [Date] ex> 04pm December 3 强制具体时间开始
HH:MM[am | pm] + number [minutes | hours | days | weeks ] ex> now + 5 minutes 或者ex> 04pm + 3 days
例:at now + 3 minutes
at> /bin/ls -l /etc > /tmp/etc.back
at> (使用crtl+d结束)
例:at 23:00 2012-02-22
at> /bin/sync
at>/bin/sync
at>/sbin/shutdown -h now
at>
atq:使用atq查看需要执行的任务列表
atrm [jobnumber]:删除工作
循环执行的例行命令:
1 首先启动crond
service crond start
或者
/etc/rc.d/init.d/crond
2 检测crond 是否被启动
ps aux |grep crond
3 还有一点就是你的cron配置的时候要用绝对路径,
*/1 * * * * /bin/echo "haha" >> /tmp/hello.txt
export EDITOR=vim 改变默认编辑器为vim
crontab:为了安全,同at一样有/etc/cron.allow和/etc/cron.deny。
crontab [-u username] [-l | -e | -r] : -u表示只有root才能执行这个任务,即帮其他用户建立/删除crontab,-e编辑crontab工作内容,-l查看crontab工作内容,-r删除crontab的工作内容。
当使用crontab建立一个任务后(一行代表一个任务)。
分 时 日 月 周 命令
0 12 * * * ls -l /etc > /tmp/etc.back
表示每天12点备份一次etc目录到tmp中,(注,0或7都可以表示星期天),还有一些特殊字符如:
*: 表示任何时间都接受
,:表示分隔时段,举例要执行的工作所3点和6点,则 0 3,6 * * * command
-:表示一段时间范围内,如8点到12点之间,每小时的20分都进行一工作,则 20 8-12 * * * command
/n:表示每隔n单位时间,例如每5分钟进行一次,则 */5 * * * * command
*/2 * * * * /bin/echo "xiaozhe" >> /tmp/xiaozhe.txt
一些使用的优化和特性:
假如2个项目或更多都在5分钟执行,同时执行则会造成系统负载过重,有如下办法解决,vim /etc/crontab
1,6,11,16,21,26,31,36,41,46,51,56 * * * * root command1
2,7,12,17,22,27,32,37,42,47,52,57 * * * * root command2
取消不需要的输出项目,直接重导向丢到/dev/null中