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
下一篇 2017-11-26

相關推薦

  • 第二周-作業

    第二周作業: 題1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 Linux上常見的文件管理類命令有mkdir、touch、cp、mv、rm、stat。     mkdir:創建新目錄         用法:mk…

    Linux干貨 2016-12-08
  • ?磁盤管理、MBR、GPT、分區工具、文件系統、常見分區掛載

    磁盤管理{磁盤結構;MBR;GPT;分區工具;文件系統;分區掛載;}

    Linux干貨 2016-08-29
  • centos7配置bindDNS解析服務

    首先來概述一下 通俗一點理解呢,DNS就是把域名轉換成IP的一種服務(反向則是IP轉換成域名).以方便人們的記憶,就好比記住一個代表性的英文要比記住電話號碼快得多,通常我們將這種服務稱之為解析.現在一般公網都有萬網 騰訊云這些機構,DNS這一塊我們不需要負責.但是在現在企業的內部網則就需要我們來搭建DNS服務器了.本次采用的bind工具進行域名的解析。 1.…

    Linux干貨 2018-03-26
  • 網絡管理

    網絡概念 網絡應用程序 Web 瀏覽器(Chrome、IE、Firefox等) 即時消息(QQ、微信、釘釘等) 電子郵件(Outlook、foxmail 等) 協作(視頻會議、VNC、Netmeeting、WebEx 等) web網絡服務(apache,nginx,IIS) 文件網絡服務(ftp,nfs,samba) 數據庫服務( MySQL,MariaDB…

    Linux干貨 2017-05-06
  • rpm與yum

    rpm包及yum 包查詢 rpm -q –query  搭配別的選項可用來包查詢 -a -f -p rpmfile:針對尚未安裝的程序包文件做查詢操作   -p 選項參數為文件名(一定要指定路徑) 例子: rpm -qpl /media/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm…

    Linux干貨 2016-08-24
  • CentOS 7 yum安裝LAMP,LNMP并搭建WordPress個人博客網站

    本次實驗要進行的是在CentOS7.2,內核版本3.10.0-327.el7.x86_64的環境下搭建LAMP和LNMP,并在此之上做一個WordPress博客網站。 [root@Shining ~]# uname -a Linux Shining.ACG 3.10.0-327.el7.x86_64&nbsp…

    Linux干貨 2016-11-24

評論列表(2條)

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

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

    • N27_dxldeng
      N27_dxldeng 2017-12-15 12:09

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

欧美性久久久久