Linux任務計劃、周期性任務執行

Linux任務計劃、周期性任務執行

at

at命令用于在指定時間執行命令。執行結果會通過郵件發送給用戶

at允許使用一套相當復雜的指定時間的方法。它能夠接受在當天的hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那么就放在第二天執行

語法

at(選項)(參數)
    atq: 查詢任務列表
    atrm: 刪除指定任務

選項

-f:指定包含具體指令的任務文件;
-q:指定新任務的隊列名稱;
-l:顯示待執行任務的列表;
-d:刪除指定的待執行任務;
-c:查看指定作業的具體內容;
-m:任務執行完成后向用戶發送E-mail。

參數

日期時間:指定任務執行的日期時間。

時間格式

at now+5 minutes    任務在5分鐘后運行
at now+1 hour       任務在1小時候運行
at now+1 days       任務在1天后運行
at now+1 weeks      任務在1周后運行
at midnight         任務在午夜運行
at 23:30 tomorrow   任務在明天晚上23:30分執行
at 10:20pm          任務在晚上10:20分執行
at 23:30 2018-03-31 任務在指定時間執行
at 5pm +3 days      任務在3天下午5點執行

實例

  • 確保進程atd啟用
    [root@localhost tmp]# systemctl start atd
    [root@localhost tmp]# systemctl status atd
    ● atd.service - Job spooling tools
       Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
       Active: active (running) since Sun 2018-04-01 20:58:13 CST; 21h left
     Main PID: 2905 (atd)
       CGroup: /system.slice/atd.service
               └─2905 /usr/sbin/atd -f
    

Apr 01 20:58:13 localhost.localdomain systemd[1]: Started Job spooling tools. Apr 01 20:58:13 localhost.localdomain systemd[1]: Starting Job spooling tools…

  • 1分鐘后輸出當前時間到指定文件
    [root@localhost ~]# at now+1 minutes
    at> date > /tmp/date
    at> <EOT>
    job 7 at Sat Mar 31 23:21:00 2018
    

crontab

crontab命令被用來提交和管理用戶的需要周期性執行的任務,crond進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。

  • 系統cron任務:主要用戶實現系統自身的維護,手動編輯 :/etc/crontab
  • 用戶cron任務:使用crontab命令

系統cron任務配置文件:/etc/crontab

[root@localhost tmp]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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

(1) 每一行定義一個周期性任務,共7個字段;
    *  *  *  *  * : 定義周期性時間
    user-name : 運行任務的用戶身份
    command to be executed:任務
(2) 此處的環境變量不同于用戶登錄后獲得的環境,因此,建議命令使用絕對路徑,或者自定義PATH環境變量;
(3) 執行結果郵件發送給MAILTO指定的用戶

用戶crond配置文件:/var/spool/cron/USERNAME

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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
# |  |  |  |  |
# *  *  *  *  *   command to be executed    

(1) 每行定義一個cron任務,共6個字段;
(2) 此處的環境變量不同于用戶登錄后獲得的環境,因此,建議命令使用絕對路徑,或者自定義PATH環境變量;
(3) 郵件發送給當前用戶;

語法

crontab(選項)(參數)

選項

-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u<用戶名稱>:指定要設定計時器的用戶名稱。

參數

crontab文件:指定包含待執行任務的crontab文件。

時間表示法

(1) 特定值;給定時間點有效取值范圍內的值;
    注意:day of week和day of month一般不同時使用;
(2) *:給定時間點上有效取值范圍內的所有值;表“每..”
(3) 離散取值:在時間點上使用逗號分隔的多個值; 
    #,#,#
(4) 連續取值:“-”在時間點上使用-連接開頭和結束
    #-#
(5) 在指定時間點上,定義步長: 
    /#:#即步長;

注意:
(1) 指定的時間點不能被步長整除時,其意義將不復存在;
(2) 最小時間單位為“分鐘”,想完成“秒”級任務,得需要額外借助于其它機制;
定義成每分鐘任務:而在利用腳本實現在每分鐘之內,循環執行多次;

時間示例

(1) 3 * * * *:每小時執行一次;每小時的第3分鐘;
(2) 3 4 * * 5:每周執行一次;每周5的4點3分;
(3) 5 6 7 * *:每月執行一次;每月的7號的6點5分;
(4) 7 8 9 10 *:每年執行一次;每年的10月9號8點7分;
(5) 9 8 * * 3,7:每周三和周日;
(6) 0 8,20 * * 3,7:每周三和每周日的8點和20點
(7) 0 9-18 * * 1-5:每星期一到星期五,9點-18點,每小時執行一次
(8) */5 * * * *:每5分鐘執行一次某任務;
(9) * */12 * * * :每12小時執行一次某任務=
(10)* * * * 2,4,7:每周2、4、7執行某次任務

實例

  • 確保crond啟用
    [root@localhost tmp]# systemctl start crond
    [root@localhost tmp]# systemctl status crond
    ● crond.service - Command Scheduler
       Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
       Active: active (running) since Sun 2018-04-01 17:15:48 CST; 17h left
     Main PID: 640 (crond)
       CGroup: /system.slice/crond.service
               └─640 /usr/sbin/crond -n
    
    Apr 01 17:15:48 localhost.localdomain systemd[1]: Started Command Scheduler.
    Apr 01 17:15:48 localhost.localdomain systemd[1]: Starting Command Scheduler...
    Apr 01 17:15:48 localhost.localdomain crond[640]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 9% ...ed.)
    Apr 01 17:15:48 localhost.localdomain crond[640]: (CRON) INFO (running with inotify support)
    Hint: Some lines were ellipsized, use -l to show in full.
    

– 每12小時執行一次

  • 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00
    [root@localhost tmp]# crontab
    10 3,5 * * 3 /bin/bash /tmp/date.sh
    
    [root@localhost tmp]# crontab -l
    10 3,5 * * 3 /bin/bash /tmp/date.sh
    
    [root@localhost tmp]# cat /var/spool/cron/root 
    10 3,5 * * 3 /bin/bash /tmp/date.sh

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/94813

(1)
eighteenxueighteenxu
上一篇 2018-04-03
下一篇 2018-04-03

相關推薦

  • Linux軟件管理

      **rpm** 查尋rpm -q httpd //精確查找已安裝的包的全名rpm -qa |grep httpd //查找所有以httpd開頭的rpm包rpm -ql httpd //查尋安裝httpd包進生成的文件 rpm -f :查看置頂的文件由哪個程序包安裝生成 rpm -p rpm file :針對尚未安裝的程序包文件做查詢操作 rpm…

    Linux筆記 2018-05-13
  • 初識——Linux文件管理

    一:文件系統結構 文件目錄 Linux文件目錄結構是一個倒樹狀結構,從根(/)開始依次往下,根文件系統為rootfs:root filesystem; 文件名稱區分大小寫是由文件系統決定的,CentOS6.x默認文件系統為ext4,CentOS7.x上默認文件系統是xfs; 以點(.)開頭的文件為隱藏文件,文件路徑以(/)分割; 文件有倆類數據:元數據和數據…

    2018-03-31
  • 權限

    chmod 更改權限 語法 1 who 對誰操作 opt做什么操作 per 跟什么權限 跟文件 who u g o a opt +增加 -減掉 =覆蓋 per rwx reset 重復系統 文本文件 r 讀 打開 w 改 x 執行程序 chown 更改所有者 chgrp 更改所屬組 chmod who (u) opt (g)per(o) file文件 綠色有…

    Linux筆記 2018-04-08
  • Ansible使用介紹(一)基本概念及常用模塊

    隨著運維自動化經歷了從本地部署到基礎設施即服務(IaaS)、平臺即服務(PaaS)在到軟件即服務(SaaS)的發展階段,掌握多種自動化運維工具就成了運維人員必備技能之一,ansible就是目前國內使用比較廣泛的自動化運維工具之一。

    2018-05-29
  • 學習筆記(4)

    學習筆記(4)

    Linux筆記 2018-04-22
  • 計算機原理與Linux基礎

    計算機的組成及功能 1、其實計算機的組織分為內部設備和外部設備, 內部設備: ? ? ? ? CPU:運算器、寄存器、緩存 ? ? ? ? 存儲器:內存,RAM(Random Access Memory) ? ? ? ? 控制器:控制器是整個計算機系統的控制中心,它指揮計算機各部分協調地工作,保證計算機按照預先規定的目標和步驟有條不紊地進行操作及處理。 外部…

    Linux筆記 2018-05-13

評論列表(1條)

  • leo
    leo 2018-04-05 16:34

    寫的很認真!

欧美性久久久久