我的linux学习10 例行命令

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 * * * * /bin/echo "hello" >> /tmp/hello.txt

如果是系统的例行命令,可以直接修改/etc/crontab中的内容

/etc/crontab中支持命令类型和目录规划。
执行命令类型如上所示:
执行目录规划如下:
*/2 * * * * root run-parts /etc/cron.min   相当与每2分钟执行这个目录下的所有可执行文件,其中run-parts相当与一个文件,如果不需要执行整个目录,则可:
*/5 * * * * root /bin/mrtg /etc/mrtg/mrtg.cfg 每5分钟检测一次流量

 

一些使用的优化和特性:

假如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中


你可能感兴趣的:(我的linux学习10 例行命令)