計劃任務

計劃任務:bash

at:tcp

      at TIMEide

      at>spa

 

      提交任務:Ctrl+dorm

      做業結果:以郵件形式發送到系統上的當前用戶crontab

 

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

      tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      it

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

     查看郵件服務端口25啓動沒有,SMTP服務正常class

 

    讀郵件: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

相關文章
相關標籤/搜索