码迷,mamicode.com
首页 > 系统相关 > 详细

Linux系统上的任务计划相关命令at、crontab的使用方法

时间:2015-09-08 23:38:32      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:linux任务计划管理

一、总结Linux系统上的任务计划at、crontab的详细使用方法

1、计划任务说明

      在未来时间点一次性执行某任务:at,batch;

      周期性执行某任务:crontab;

2、电子邮件服务

     计划任务默认以邮件的形式将结果发送给执行任务的用户

     mail命令:

        mail username(@hostname):进入交互式收发邮件接口

        mail -s ‘SUBJECT‘ username@hostname:设置邮件主题

                         < /path/from/somefile:将文件内容发送给收件人

        echo "xxx " |  mail -s ‘SUBJECT‘ username@hostname : 将echo 输出结果发送给收件人

3、at命令使用

      at  [option].....TIME

   (1)常用选项

                 -q QUEUE:at作业队列

          -f  /path/from/somefile:从指定的文件中读取要运行的作业

          -l:查看作业队列中的等运行的作业列表(等于atq命令)

          -c at_job_num :查看待运行作业的内容

          -d 编号:删除指定作业,相当于at  rm

   (2)TIME格式

              绝对时间:

                      HH:MM,
              MMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]YY or [CC]YY-MM-DD

                相对时间:

                      now+#UNIT(now+3minute)

              minute, hour, day, week

              模糊时间:

                  midnight,noon,teatime

[root@localhost ~]# /etc/init.d/atd status
atd is stopped
[root@localhost ~]# /etc/init.d/atd start
Starting atd:                                              [  OK  ]
[root@localhost ~]# at 17:19
at> ls /etc
at> cat /etc/fstab
at> <EOT>
job 2 at 2015-09-08 17:19
You have mail in /var/spool/mail/root

4、batch:由系统自行选择在资源空闲的时候运行指定任务

5、crontab:周期性任务计划

      守护进程:crond

[root@localhost ~]# /etc/init.d/crond status
crond (pid  1977) is running...

(1)系统cron任务:没有默认运行用户身份,所以需要额外指定运行者

     配置文件:/etc/crontab

(2)用户cron任务:由某个用户提交,默认以提交者身份运行(建议使用crontab -e)

     配置文件:/var/spool/cron/USERNAME

(3)配置文件字段解析

[root@cwc01 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

*****:5个时间点:(分 小时 日 月 周几)

             分钟:0-59

             小时:0-23

             日:1-31

             周几:0-7

     几月几日与周几不建议同时使用

user-name:以哪个用户的身份运行任务

command to be executed:要运行的任务(命令)

    实例:

       每年:2 3 4 5 *

       每月:20 18 6 * *

       每天:20 9 * * *

       每周:17 16 * * *

       每小时:3 * * * *

       每分钟:* * * * *

    时间点表示法:

         1、 *:对应时间点有效取值范围内的每个时间点

         2、-:表示特定连续时间范围( 40  3  *  *  1-5   command)

         3、 ,:表示离散时间点(30  2  *  * 2,4,6 command)

         4、/#:有效时间范围内的每#个时间单位一次;用于指定频率()

               */3 * * * *  command :  每3分钟执行一次

               * */3 * * *  command : 每三个小时到达时,此小时内每分钟都执行一次

               6 */3 * * *  command : 没三个小时执行一次

      注意:并不能精确到7分钟一次(可使用sleep机制)

 (4)crontab命令           

        crontab [-u user] [-l] [-r] [-e]

            -u user: 不是管理自己的cron任务,而是指定的目标用户的cron任务;仅root拥有管理其它用户的cron任务的权限;默认管理自己的

            -l:list,列出任务

            -r:remove,移除所有任务

            -e:edit,编辑,打开一当前shell会话的默认编辑器来编辑cron任务表

注意:  

   (1) 如果不想接收任务执行结果的通知邮件:

          COMMAND > /dev/null

          COMMAND &> /dev/null

   (2) 对于crontab文件来讲,%有特殊功用;如果命令中会出现%, 要记得转义,或者用单引号对其引用;

   (3) crontab的PATH变量与用户的变量不完全相同,所以,建议在cron中的任务要使用绝对路径

         /root/bin/a.sh(包括脚本中要使用的命令)

二、每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY-MM-DD;

[root@cwc01 ~]# mkdir -pv /backups
mkdir: created directory `/backups‘
[root@cwc01 ~]# crontab -e
no crontab for root - using an empty one

20 3 * * 1-6 /bin/cp -a /etc /backups/etc-`date +F%`

三、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss

30 2 * * 7 /bin/cp -a /etc/fstab /backup/fstab-`date +F`

四、每天晚上12点,取得/proc/meminfo文件中所有以S或M开头的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上类似===============分隔线

[root@cwc01 ~]# mkdir -pv /statistics
mkdir: created directory `/statistics‘

0 0 * * *  /bin/echo -e "===========\n" >> /statistics/meminfo.txt && /bin/grep "^[S|M]" /proc/meminfo  >> /statistics/meminfo.txt





Linux系统上的任务计划相关命令at、crontab的使用方法

标签:linux任务计划管理

原文地址:http://c616531043.blog.51cto.com/1397029/1692918

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!