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

任務計劃

linux計劃任務有兩類
  • at:未來某個時間點僅執行一次任務就結束的指令,at指令執行時必須要有atd這個服務支持。
  • crontab:可以以時間單位為分鐘,小時,每天,每周,每月,每年等循環執行某任務。
單一任務at介紹:
語法格式:at  -[lfdcq]   TIME

常用選項:
-l 查看作業隊列,相當于atq
-f 從某個指定文件文件中讀取作業任務,不通過交互式輸入。
-d 刪除指定的作業任務,相當于atrm。
-c 查看指定作業具體內容。
-q QUEUE指明隊列。
TIME時間格式有:
HH:MM 小時:分鐘 例如04:00
HH:MM YYYY-MM-DD 小時:分鐘 年-月-日 例如15:00 2017-11-25
HH:MM[am|pm] [Month] [Date] 例如:04pm July 30
HH:MM[am|pm] + number [minutes|hours|days|weeks]在某個時間點再加幾個時間后執行
例如:now + 5minutes 5分鐘后執行
04pm + days三天后下午4點執行

[root@dxlcentOS ~]# at 15:55 2017-11-25 在15點55分執行:切換到tmp目錄,執行ls命令
at> /usr/bin/cd /tmp
at> /usr/bin/ls
at> <EOT>
job 3 at Sat Nov 25 15:55:00 2017
注意:輸入結束后按ctrl+d,任務輸入結束at> <EOT>,執行結果屏幕不會顯示,會以郵件形式發送到郵箱。要是沒有mail命令,進行yum -y install mailx安裝。

batch命令:系統空閑時才進行的背景任務,他是通過at下達的。

周期性任務計劃cron

執行周期性任務要確保crond守護進程在運行。
執行pstree,要是crond運行起來可以看到。
或者執行:~]# systemctl status crond (centos7)
Active: active (running) … …
centos6:~]# service crond status
… is running

有時候為了安全起見,可以將不允許某些用戶執行周期性任務的用戶名添加到/etc/cron.deny文件里面即可。
cron任務分類:分系統cron任務和用戶cron任務

系統cron任務:主要用于維護系統自身。
可以手動編輯/etc/crontab文件實現。
系統cron任務格式
 1 SHELL=/bin/bash                      使用哪種shell接口
  2 PATH=/sbin:/bin:/usr/sbin:/usr/bin  執行文件搜索路徑
  3 MAILTO=root                         以email將數據發給誰
  4 
  5 # For details see man 4 crontabs
  6 
  7 # Example of job definition:
  8 # .---------------- minute (0 - 59)
  9 # |  .------------- hour (0 - 23)
 10 # |  |  .---------- day of month (1 - 31)
 11 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 12 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 13 # |  |  |  |  |
 14 # *  *  *  *  * user-name  command to be executed
(1) 每一行定義一個周期性任務,共7個字段。
*  *  *  *  * : 定義周期性時間。
user-name : 運行任務的用戶身份。
command to be executed:要執行的任務。
(2) 此處的環境變量不同于用戶登錄后獲得的環境,因此,建議命令使用絕對路徑,或者自定義PATH環境變量;
(3) 執行結果以郵件形式發送給MAILTO指定的用戶。

用戶cron任務:
當用戶使用crontab命令來建立周期任務后,這項工就會被記錄到/var/spool/cron/USERNAME這個文件中去,
他們以用戶名來區分。
crontab [-u username]  [-l|-e|-r]
-u  只要有root用戶才能進行這個任務,即為其他用戶建立或刪除crontab任務。
-l  列出所有任務。
-e  編輯任務。
-r  刪除所有crondtab任務,即刪除/var/spool/cron/USERNAME文件,若要刪除一項,可以用-e選項去編輯。
用戶周期性任務定義格式:
*  *  *  *  *   command to be executed
對應意義為:分  時  日  月  周   用戶指令
每行定義一個任務,共六個字段。任務執行后的結果以郵件發給用戶。
周期任務時間表示法:
分(0-59)  時(0-23)  日(1-31)  月(1-12)  周 (0-7 0和7都代表星期天) 
星號* :表示任何時刻意思
逗號",":b表示時段分隔,指定多個時間點做某事,例如當我要下達的任務是在每天3:00月6:00時,
             0  3,6  *  *  *  COMMAND  時間參數還是5欄
減號“-”:表示一段時間范圍,例如我要在8點到12點之間的每小時20分進行一
               項工作, 20  8-12  *  *  *  COMMAND
/n :n代表數字,即是每隔n個時間單位意思,例如每5分鐘進行一次。
          */5  *  *  *  *   COMMAND
常見實例:
示例:
    (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:每周三和周日8點09分;
    (6) 0 8,20 * * 3,7:每周三和周日8點和20
    (7) 0 9-18 * * 1-5:每周一到周五9點到18點
    (8) */5 * * * *:每5分鐘執行一次某任務;
        
應用實例:
1.每4小時執行一次對/etc目錄的備份,備份至/backup目錄中,保存的目錄名為形如etc-201504020202
[centos@dxlcentOS ~]$ crontab -e  進入編輯界面
0 */4 * * *  /usr/bin/cp -a  /etc /backup/etc-$(date +\%Y\%m\%d\%H\%M)
2.每周2,4,6備份/var/log/messages文件至
/backup/messages_logs/目錄中,保存的文件名形如messages-20150402
[centos@dxlcentOS ~]$ crontab -e
0 0 * * 2,4,6  /usr/bin/cp -a  /var/log/messages /backup/messages-$(date +\%Y\%m\%d)
3.每天每兩小時取當前系統/proc/meminfo文件中的所有以S開頭的信息至/stats/memory.txt文件中
[centos@dxlcentOS ~]$ crontab -e
0 */2 * * *   /usr/bin/cat  /proc/meminfo | grep "^S" >> /stats/memory.txt
4.工作日的工作時間內,每兩小時執行一次echo ”howdy”
[centos@dxlcentOS ~]$ crontab -e
0 9-18/2 * * 1-5   /usr/bin/echo “howdy”

總結:1.cron周期任務最小時間單位是分鐘。
2.定義COMMAND時,如果命令需要用到%,需要對其轉義;但放置于單引號中的%不用轉義亦可。
3.某任務在指定的時間因關機未能執行,下次開機不會自動執行。
4.當修改之前定好的任務或新增循環任務時最好執行一下systemctl restart crond。
5.如果是系統管理使用的循環任務最好寫入/etc/crontab。
6.避免系統資源分配不均,周與日月不可以同時并存。

7.為了避免計劃任務不執行,計劃任務中的命令最好使用絕對路徑。

anacron可換醒停機期間的工作任務

cron循環任務設定后,要是服務器因意外關機,那么在停機期間,cron設定的循環任務是不會運行的,當服務器開機后,也不會執行過去到達時間點的循環任務,只能等待下個時間點到來才執行。要想重新執行,anacron就可以解決這個問題。
anacron 是一個程序不是一個服務,當centos進入crontab排程時,anacron 會主動每一小時運行一次。

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

(6)
N27_dxldengN27_dxldeng
上一篇 2017-11-26 21:20
下一篇 2017-11-26 21:26

相關推薦

  • 用戶管理基本操作

    1.創建組distro,其GID為2016[root@localhost ~]# groupadd -g 2016 distro2.創建用戶mandriva,其ID號為1005;基本組為distro[root@localhost ~]# useradd -u 1005 mandriva -g 20163.創建用戶mageia,其ID號為1…

    Linux干貨 2017-09-04
  • week6

    1、請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白 字符開頭的行的行首加#; :%s@^[[:space:]]\+[^[:space:]]@#&@g 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/…

    Linux干貨 2016-12-02
  • N22-第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -r /etc/skel /home/tuser1    (復制/etc/skel為/home/tuser1) [root@localho…

    Linux干貨 2016-09-05
  • N25第二周作業

    第二周作業 一、Linux上的文件管理類命令有哪些,其常用的使用方法以及相關實例演示 演示用結構  [root@centos01 yanshi]# tree -a /tmp/yanshi/   /tmp/yanshi/ ├── a │   └── 1…

    Linux干貨 2016-12-14
  • day06(8-3)作業-文件權限

    第一題、三種權限rwx對文件和目錄的意義     權限對文件的意義         r(read):可以讀取文件的內容,如讀取文本文件的內容         w(write):可以編輯、新增或者是修改文件的內容,但不含有刪除文件(…

    Linux干貨 2016-08-04
  • vim編輯器練習&任務計劃&腳本編程練習

    請詳細總結vim編輯器的使用并完成以下練習題 vim總結: vi:Visual Interface,是一種文本編輯器,所謂文本數據是基于字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。 文本編輯器的種類:  行編輯模式:所謂行編輯器是指一行一行來編輯處理的工具,如sed。  全屏編輯器:編輯空間占據整個屏幕,如nano…

    Linux干貨 2016-10-31

評論列表(2條)

  • 馬哥教育
    馬哥教育 2017-12-08 16:38

    你的計劃任務都執行過嗎,我覺得你應該是沒有執行過,所有應用實例可能都有問題。注意全路徑。

    • N27_dxldeng
      N27_dxldeng 2017-12-15 12:09

      @馬哥教育在centos7.2 有執行過,為了保證計劃的執行,命令最好使用絕對路徑。已經記住了。

欧美性久久久久