at : 在指定的时刻执行指定的命令序列
cron : 周期性执行指定的程序
二者区别,cron命令可周期性地执行任务,而at只能在指定的时间执行一次任务。
cron: 周期性执行指定的程序
cron 可以通过 /etc/crontab 配置文件或者crontab命令实现(注意 在执行cron 功能之前,首先必须确定crond进程是否启动,可以通过ps -ef |grep crond 查看,如果未启动需要通过 /sbin/service cornd start/stop/restart/reload 来进行启动、停止、重启、及重新加载 )
/etc/crontab 配置文件内容如下:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
* * * * * user-name command to be executed
前五个 * 代表不同的周期:其含义如下:
第一个表示分钟,数值0~59的任意整数;
第一个表示小时,数值0~12的任意整数;
第一个表示日期,数值0~31的任意整数;
第一个表示月份,数值0~12的任意整数;
第一个表示星期,数值0~7的任意整数,0或7代表星期日;
例:
0 6 * * * root echo "Good morning" //表示每天6:00在屏幕上输出 "Good morning"
at:在指定的时刻执行指定的命令序列(只能执行一次),使用at命令需要启动atd进程(可通过ps -ef |grep atd 搜索该进程是否存在,可通过/etc/init.d/atd start or restart 启动atd进程)
at参数:
-m 当指定任务完成后,将给用户发送邮件(没有标准输出也会发送)
-I atd的别名
-d atrm 的别名
-v 显示任务将被执行的时间
-c 打印任务内容到标准输出
-V 显示版本信息
-q<队列> 使用指定的队列
-f<文件> 从指定的文件读入任务而不是从标准输出入读入
-t<时间参数> 以时间参数的形式提交要运行的任务
atq //输出上未执行的任务(未执行的的任务每行第一个输出为 任务编号)
atrm //删除已设置的任务(atrm 编号)
at -c 8(编号) //显示已设置的任务内容