计划任务:

at:

      at TIME

      at>

 

      提交任务:Ctrl+d

      作业结果:以邮件形式发送到系统上的当前用户

 

     [root@localhost ~]# netstat -tnl | grep "25\>"

      tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      

      tcp        0      0 ::1:25                      :::*     

     查看邮件服务端口25启动没有,SMTP服务正常

 

    读邮件:mail

          q:退出

          N:查看第几封邮件

 

    发邮件:mali USERNAME[@HOSTNAME]

 

 

周期性任务:cron

    查看运行后台运行:

    # service crond stats

    cron 任务有2类:

      系统cron:/etc/crontab

      用户cron:定义在/var/spool/cron目录中与用户名同名的文件中

    每行定义一个独立的任务:

 

#  cat /etc/crontab 

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root    将通过电子邮件发送给root用户

HOME=/  第四行的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

    时间点 :周期性任务    

    username:用户身份

    command:要运行的任务:

 

注意重点:建议在定义cron任务时!所用到的命令使用绝对路径,如果是脚本也建议使用绝对路径,或者自定义一个完整路径的环境变量

  时间点:

      分钟|小时|||周几

  每年:2   3   4  5  *     每年5432

  每月:20  18  6  *  *     每月61820

  每天:20  9   *  *  *     每天920

每小时: 3   *   *  *  *     每小时运行

每分钟:*   *   *  *  *     每分钟

  每周:16  17  *  *  3     每周

  

时间表示法 :

   1:每个时间位都使用可用的有效取值范围的值,表示:使用所有有效取值

      17 * * * * /bin/echo "hello"  每小时17分时运行这个命令

      8  9 * * * /bin/echo "hello"  每天运行98分这个命令

      16 17 * * 3 /bin/echo "hello"  每周31716分运行这个命令

 

   2: */#:在对应的时间位有效值上每#个时间单位一次

    */3 * * * * /bin/echo "hello"  3分钟运行一次

    9 */3 * * * /bin/echo "hello"  3个小时运行一次

 

   3:连续时间点:

     40 3 *  * 1-5 /bin/echo "hello"  1到周运行一次

    4:离散时间点: 

      30 2 *  * 2,4,6 /bin/echo "hello" 24运行一次

  任务运行后结果,邮件发送给任务相关用户

 

    丢弃邮件通知:输出重定向:

      COMMAND > /dev/null

      COMMAND &> /dev/null

      COMMAND > /dev/null 2>&1

 

   用户cron 任务的定义:

     crontab -l  列出所有已定义任务

     crontab -e :打开编辑界面定义任务 

     crontab -r :清出所有任务

 

     -u USERNAME 用别的用户建立  

            -l

            -e

            -r

           # crontab -u USERNAME -e

           # crontab -u wskfnso -e

   注意:如果是crontab的用户命令中需要使用%时,需要对其转义

        * * * * * /bin/touch /tmp/testdir/file-$(date +\%F-\%H-\%M-\%S)

        * * * * * /bin/touch /tmp/testdir/file-$(date +'%F-%H-%M-%S')

    

定义任务的文件保存在/var/spool/cron 

   # ll /var/spool/cron/

     total 4

      -rw-------. 1 root root 30 Nov 12 19:48 root

   # cat /var/spool/cron/root 

       */2 * * * * /bin/echo "hello"

 

提醒:如果在crontab的用户命令中使用%,得转义为\%

5 3 * * * /bin/touch ~/testfile_`date +\%Y-\%m-\%d`.txt

 

在使用单引号后,%也可以不转义

5 3 * * * /bin/touch ~/testfile_`date +’%Y-%m-%d‘`.txt

 

练习:

1、每3分钟执行一个“echo “how are you””

 */3 * * * * /bin/echo “how are you

2、每周246备份/etc/目录至/backup目录中,备份的文件名以当etc_开头并跟上当日的日期作为文件名

0 0 * * 246 /bin/tar Jcf /back/etc-`date +'%F'`.tar.xz /etc/* 

3.每天69121518查看一下系统当前挂载的所有文件系统,并将查看的结果追加至/tmp/mounts.txt文件中

0 6-18/3 * * *  /bin/mount >> /tmp/mounts.txt

4.每天每两小时取当前系统内存空间余量,将其保存至/stats/memory.txt文件中

20 */2 * * * /bin/grep "^MemFree" /proc/meminfo >> /stats/memory.txt