Linux例行性工作排程crontab

2021-07-27 16:41:37 字數 3160 閱讀 6345

什麼是例行性工作?比如太陽每天從東方公升起,學校的上課鈴總是不厭煩的定時響起,老媽的喊叫聲總在每天的固定時刻叫你起床等。這些都是例行性工作。linux系統也有自己的定時要辦的事情,比如日誌檔案的輪替,whatis資料庫的建立等等。

linux例行性工作分一次性的(at)和迴圈執行的(cron),本篇部落格**的就是迴圈執行的例行性工作。

它主要分為兩類:

使用者想要建立自己的迴圈性工作排程時,使用的命令是crontab。為了一些安全上的問題。我們通常限制可以使用這個命令的使用者。如:

注意:往以上檔案寫內容時遵守乙個賬號一行的規則。

一般上面的兩個檔案我們只按乙個來,系統預設保留的是/etc/cron.deny檔案。

crontab -u

lzk -e

//幫使用者lzk建立crontab工作

用-e命令開啟並輸入crontab工作內容,輸入格式主要分6個字段。分為分鐘,小時,日期,月份,周,命令,輸入順序自左向右,輸入時每個字段中間用空格隔開。

字段「周」0或者7都表示星期天。

除了以上的六個欄位外,有時還需要一些輔助字元。

22

* * 2

0 ls

> /home/lzk/ls

.txt //在2月份的每個周天的每個小時的22分鐘都執行一次ls命令

22

,23 * * 2

0 ls

> /home/lzk/ls

.txt//在2月份的每個周天的每個小時的22和23分鐘都分別執行一次ls命令

22

-29 * * 2

0 ls

> /home/lzk/ls

.txt//在2月份的每個周天的每個小時的22到29分鐘內每分鐘都分別執行一次ls命令,這個22-29表示「22,23,24,25,26,2728,29」。

*/2 * * 2 0 ls > /home

/lzk/ls

.txt //在2月份的每個周天的每個小時每隔2分鐘就執行一次ls命令,「*」與「/

2」搭配,也可寫成「0

-59/2

」。

* 

* * * *

ls >> /home/lzk/ls.txt

5個星號代表無論上面時候,每分鐘都執行一次ls命令。(可見最小單位為每分鐘)

「>>」的意思是追加,不覆蓋之前的內容,直接在檔案尾寫入。

執行crontab -e開啟crontab,直接輸入上述命令,然後儲存退出(:wq)。

隔幾分鐘後,我們觀察ls.txt檔案,觀察到的結果應該是將當前目錄的ls結果重複輸入了很多遍。

每個使用者執行的crontab工作,系統都是有記錄的。記錄會儲存在/var/spool/cron裡面,每個使用者對應乙個檔案。比如,剛才使用者為「lzk」的我執行了一條crontab工作,此時/var/spool/cron裡面就多了乙個名字為lzk的檔案,記錄我的工作。

注意:不要使用vi/vim編輯器來編輯這個檔案,可能由於輸入語法的錯誤導致無法進行cron工作。

除了這個檔案之外,cron執行的每一項工作都會記錄在日誌檔案/var/log/cron中。

有很多,慢慢往下翻,你會找到自己的。

我們使用命令crontab來管理使用者的例行性工作。而系統的例行性工作只需要編輯檔案/etc/crontab檔案即可。

(注意:這裡指的是乙個純文字檔案/etc/crontab。剛才我們執行的命令crontab也算是乙個檔案,它是/usr/bin/crontab可執行檔案。注意區分兩者。)

上面我們討論過,cron工作的最小單位是分鐘,所以cron每分鐘就會讀取一次/etc/cartab和/var/spool/cron檔案的內容,所以只要你編輯儲存好,系統便會自動執行。

有時處於某些原因或者系統設定,crontab被編輯好後,並不會馬上執行。這時候需要重啟crond服務。(/etc/init.d/crondrestart)

檢視一下/etc/crontab檔案的內容。

我們可以看到,此檔案的前面多了幾個環境變數。並且,在5個星號後面(命令前面)多了乙個字段,用來表示指定的使用者。我們剛才是在當前使用者下執行crontab命令,所以不需要指定使用者。現在是在系統下,所以需要指定使用者去執行。

我們來看看這幾個環境變數:

輸入命令示例:

儲存退出後,你在root許可權下輸入crontab -l命令是看不到的。輸入

crontab -u lzk -l才可以。或者切到lzk使用者下執行crontab -l。

該指令執行結果與上述相同。

使用例行性工作排程時我們應注意盡量避免多個工作在同一時間點進行。假如這多個工作同時進行且都非常消耗資源,那此時系統就會陷入繁忙的境地。注意將時間錯開。

注意,周與日,月不能並存。我們不能指定了固定的日期又去指定固定的星期。

(function () {

('pre.prettyprint code').each(function () { var lines = (

this

).te

xt()

.spl

it(′

\n′).

leng

th;v

arnumbering = $('

linux例行性工作排程

什麼是例行性工作?比如太陽每天從東方公升起,學校的上課鈴總是不厭煩的定時響起,老媽的喊叫聲總在每天的固定時刻叫你起床等。這些都是例行性工作。linux系統也有自己的定時要辦的事情,比如日誌檔案的輪替,whatis資料庫的建立等等。linux例行性工作分一次性的 at 和迴圈執行的 cron 本篇部落...

Linux 例行性工作排程

所謂排程就是將這些工作安排執行的流程 1 linux工作排程的種類 at cron 兩種工作排程方式 1 例行性,每隔一定的週期要辦的事項 2 突發性,一次做完後就不再做的排程 at at是乙個可以處理僅執行一次就結束排程的指令,執行at需要有atd服務的支援 2 centos系統上常見的例行性工作...

Linux例行性工作排程

什麼是例行性工作排程 每個人或多或少都有一些約會或者是工作,有的工作是例行性的,例如每年一次的年會 每個月一次的工作報告 每週一次的週會 每天需要的打卡等等 有的工作則是臨時發生的,例如剛好有高層領導來訪,需要你準備演講器材等等!用在生活上面,例如每年的愛人的生日 每天的起床時間等等 還有突發性的商...