Linux 計劃任務快速理解入門

計劃任務簡單來說是一個我們規定的時間去執行我們需要的腳本、命令及需要Linux做的事情。

以前寫過一個腳本,由于當時沒有學過計劃任務,所以寫起來特別痛苦,該腳本的需求是每天晚上11:00 備份/etc目錄

當時特別小白,于是這么寫的:

Vim
rebootScript ‘

#!/bin/bash

while
true;do

If [ -d
/app/etc_backup ];then

cp -a /etc /app/etc

else

mkdir -p /app/etc_backup && cp -a /etc /app/etc_backup

fi

sleep 24h

done

這個sleep一直困擾我,當時不得不在腳本里加死循環,為了每24小時后執行,加了sleep
24h 。這樣寫非常LOW并且十分占用資源的。

相信有很多人都是有過這種遭遇,所以這時我們就十分需要一個系統專門維護的計劃任務。我們不必在腳本里去考慮什么時間執行,而把所有的執行權限交給系統處理。于是at和cron 就此誕生。

at 對于我們來說,使用不是特別頻繁,功能上只執行一次我們設定的計劃任務。執行之后釋放。

at任務

包:at

at命令:at [option]
TIME

常用選項:

-V 顯示版本信息:

-l: 列出指定隊列中等待運行的作業;相當于atq

-d: 刪除指定的作業;相當于atrm

-c: 查看具體作業任務

-f /path/from/somefile:從指定的文件中讀取任務 -m:當任務被完成之后,將給用戶發送郵件。

用法:

at時間格式

HH:MM 比如 10:00

即在今日的 10:00 進行,若該時刻已過,則明天此時執行任務

HH:MM
YYYY-MM-DD 02:00 2016-09-20

規定在這一天進行該項任務

now +  1 minutes 一分鐘以后

02pm + 3 days

3天后的下午2

at 是交互命令

要執行的命令輸入完以后需要按ctrl+D 保存;

注意:如果執行的命令有輸入則需要重定向到/dev/null

Cron

周期性任務計劃

cronie: 概念太多,簡單來說就是可以在有規律的時間內重復執行我們要做的事

比如:我們需要每天做備份,目標 /etc 
;  /tmp

等等。那么我們就要用到Cron了

相關的程序包:

cronie: 主程序包,提供crond守護進程及相關輔助工具

cronie-anacron:cronie的補充程序,用于監控cronie任 務執行狀況,如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務

就是說我們需要安裝這個cronie包并且打開cron的服務

crontabs:包含CentOS提供系統維護任務

: 'bin : /usr/sbin : /usr/bin For details see mn 4 crontabs Example of job def init ion: minute (B - 53) - hour (B - 23) day of mnth (1 - 31) - mnth (1 - 12) OR , apr - day of 'Eek (B - 6) (Sunday-a or 7) OR , sat user-nam conmnd to be executed

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

例如:每天晚上10點運行echo命令;

0 */22 * * * centos /bin/echo “Hello world!”

這里加斜杠意思是 每個; */22 :每天22點都要執行

時間表示法:

(1) 特定值

  
                           給定時間點有效取值范圍內的值

  
                
  (2)  給定時間點上有效取值范圍內的所有值 表示“每.

  
                       (3) 離散取值 #,#,#

  
                   
(4) 連續取值 #-#

  
                    
(5) 在指定時間范圍上,定義步長 /#: #即為步長  
        

@reboot

@yearly

@annually

@monthly

@weekly

@daily

@hourly

        
系統的計劃任務設置位置:

/etc/crontab /etc/cron.d/ 配置文件

/etc/cron.hourly/ 腳本

/etc/cron.daily/ 腳本

/etc/cron.weekly/ 腳本

/etc/cron.monthly/腳本

系統級命令一般用戶是不能訪問添加的,因此周期計劃任務也有用戶級別設置;

用戶cron:

crontab命令定義,每個用戶都有專用的cron任務文件:

/var/spool/cron/USERNAME

crontab命令:

crontab
[-u user] [-l | -r | -e] [-i]

-l: 列出所有任務;

-e: 編輯任務;

-r: 移除所有任務;

-i:同-r一同使用,以交互式模式移除指定任務

-u user: 僅root可運行,指定用戶管理cron任務

控制用戶執行計劃任務,設置黑白名單:

/etc/cron.{allow,deny}

at和crontab

一次性作業使用 at

重復性作業使用crontab

 

 

 

 

 

 

 

 

 

 

 

 


原創文章,作者:曉楠,如若轉載,請注明出處:http://www.www58058.com/75889

(0)
曉楠曉楠
上一篇 2017-05-15 22:36
下一篇 2017-05-16 08:42

相關推薦

  • linux下邏輯卷管理LVM

    LVM:邏輯卷管理 LVM這個技術就是把底層的存儲設備組成一個卷組,底層存儲設備的存儲空間會變成一個個PE(盤區,大小為2的n次方),這個卷組里就是一個個的PE,然后,這個卷組會重新分區,這些分區就為邏輯卷,這些邏輯卷都是由卷組里分配的PE組成。 關于LVM里的命令: pv的命令: pvcreate pvs pvdisplay pvscan pvremove…

    Linux干貨 2015-08-04
  • nginx提供web服務——虛擬主機

    練習:定義四個虛擬主機,混合使用三種類型的虛擬主機;   僅開放給來自于本地網絡中的主機訪問; [root@node1 ~]# vim /etc/nginx/nginx.conf user           …

    Linux干貨 2016-10-23
  • vim簡單實用的技巧總結

    vi 和 vim無需過多的區分,vim可認為是vi的增強版。        這篇關于vim的手冊,我個人覺得實在無法把它寫成文章,只能以手冊的方式列舉出來,因為,vim是一個動手使用的工具,只能在使用中你才能慢慢發現它的操作多么符合邏輯,我從下面這些簡略的描述中,盡量將它的操作步驟寫出來,但更重要的…

    Linux干貨 2015-09-14
  • 磁盤分區,文件系統的創建、修改和檢測

        寫博客,對我來說不僅是學習的過程,也是一個心理歷練的過程,多說無益,開始吧?。?!     博客是馬哥視頻里的博客作業:文件系統的創建、修改和檢測。我就從磁盤管理開始把      環境:     創建的centos6.5虛擬機 &nb…

    Linux干貨 2016-06-26
  • 22期第九周課堂作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash declare -i a=0 declare -i b=0 n=`cat /etc/passwd |cu…

    Linux干貨 2016-10-17
  • 計算機的組成及其功能

    1.計算機的組成及其功能 1.1計算機的硬件基本結構 從ENIAC到當前最先進的計算機都采用的是馮·諾依曼體系結構分別是:控制器,運算器,存儲器,輸入與輸出設備 控制器:將指令逐條從存儲器中取出,經譯碼分析后向全機發出相應         的操作控制信號作用于其他部件,使各部件有…

    Linux干貨 2016-10-28
欧美性久久久久