Linux計畫任務 Crontab 詳解

2022-06-07 19:33:11 字數 3496 閱讀 6900

linux公社 2018-08-02

q:linux下,如果想要在指定的某個時間點乾點什麼事,該如何制定計畫?

a:計畫任務,建立和管理在指定時間自動執行的任務。

注意:要是任務計畫在指定時間自動執行,計畫任務的服務必須是啟動的。

1、使用at命令呼叫atd程序設定在某個特定的時間,執行一次性任務。

2、使用crontab命令呼叫crond程序,設定按固定的週期(如每天、每週等)重複執行預先計畫好的任務。

一、一次性計畫任務

在指定的日期、時間點自動執行預先設定的一些命令操作。

系統服務的名稱:/etc/init.d/atd

[root@localhost ~]# service atd start

[root@localhost ~]# service atd status

atd (pid  5790) is running...  //確保atd系統服務啟動

[root@linuxidc mydata]# at 08:45at> reboot  //按ctrl+d鍵提交任務at> job 3 at 2017-06-09 08:45[root@linuxidc mydata]# atq3    2017-06-09 08:45 a root

1、設定格式  

at  [hh:mm]  [yyyy-mm-dd]

若沒有指定年月日的,預設是當天的。

1、at  [hh:mm] 

2、at  [hh:mm]  [yyyy-mm-dd]

3、at  now +  數字 [minutes|hours|days|weeks]

2、查詢當前設定的at任務列表

shell> atq  或at -l

3、刪除指定任務編號的at任務

shell> atrm 編號  #atrm=at -d

4、檢視計畫任務的具體內容

shell> at -c 任務號

5、使用檔案中的命令作為計畫任務(比較少用)

shell> at 時間 -f 檔案

1、at計畫任務檔案:/var/spool/at/a開頭的檔案,任務執行完畢,檔案消失。

2、/etc/at.deny:只有該名單裡面的人不可以使用

3、/etc/at.allow:只有該名單裡面的人可以使用

二、週期計畫任務

按照預先設定的時間週期(分鐘、小時、天……)重複執行使用者指定的命令操作。

1、crontab命令呼叫crond程序執行。

2、系統服務的名稱:/etc/init.d/crond

3、使用者定義的設定,位於檔案:/var/spool/cron/使用者名稱

4、cron服務的日誌檔案:/var/log/cron

[root@localhost /]# service crond start

[root@localhost /]# service crond status

crond (pid  1935) is running...

1、cron服務配置檔案:/etc/crontab

[root@linuxidc mydata]# cat /etc/crontab

shell=/bin/bash

path=/sbin:/bin:/usr/sbin:/usr/bin

mailto=root

home=/# 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

注意:今後寫指令碼讓crontab去自動執行的時候,盡量寫命令的絕對目錄。

crontab 只會在/sbin、/bin、/usr/sbin、/usr/bin下查詢命令,如果命令不在這些目錄中,應該要使用絕對路徑。

2、管理cron計畫任務

root使用者可以管理指定使用者的計畫任務、普通使用者只能管理自己的計畫任務

2、檢視計畫任務:crontab  -l  -u  使用者名稱

3、刪除計畫任務:crontab  -r  -u  使用者名稱

[root@localhost linuxidc]# crontab -e  //進入編輯模式,不接使用者名稱的,預設是當前使用者no crontab for root - using an empty one

crontab: installing new crontab

[root@localhost linuxidc]# crontab -l50 3 2 3 * echo "123"[root@localhost linuxidc]# crontab -r

[root@localhost linuxidc]# crontab -l

no crontab for root

3、編輯語法

時間數值的特殊表示方法:

1、*    表示該範圍內的任意時間

2、,    表示間隔的多個不連續時間點

3、-    表示乙個連續的時間範圍

4、/n  指定間隔的時間頻率

0  17  *  *  1- 5  //周一到周五每天17:0030  8  *  *  1,3,5  //每週

一、三、五的8點30分0  8-18  *  *  *  //8點到18點整0  12  */3  *  *  //每隔3天的12點整

注意:

1、資源分配不均:多個計畫任務同時執行。

2、安全檢查:防止有非法計畫任務。

3、周和日、月不可同時並存:容易導致計畫任務時間混亂。

4、缺陷彌補  

缺陷:cron在系統關機後不能執行計畫任務……

為週期性計畫任務cron收拾殘局的anacron程式解決該缺陷。

1、anacron程式是系統自帶的定時任務,不能替代cron

服務名稱:/etc/init.d/anacrond

服務日誌:/var/spool/anacron

服務配置檔案:/etc/anacrontab

2、會每個小時被執行一次,指令碼在/etc/cron.hourly

3、按天、周或月為單位去檢查系統未進行的cron任務

4、開機時自動執行,然後將未執行的計畫任務執行一遍後,anacron 就會自動停止

Linux計畫任務

1.at命令 指定乙個時間執行乙個任務。2.cron命令 根據乙個時間表自動執行任務。3.anacron命令 在乙個指定時間間隔錯過後自動執行任務。at命令 安排乙個任務在未來執行,需要乙個系統後台atd程序。4.如果這個程序沒有開啟,那麼執行 etc init.d atd restart chkc...

Linux 計畫任務

at命令可以在某一指定時間排程一次性作業命令格式 at q x l f file d v time引數含義 q使用指定的佇列來儲存at資料,預設儲存在a佇列,隊列表號為a z,a z總52個 l列出所有的at計畫任務,等同於atq命令 d刪除at計畫任務,等同於atrm v列出所有已經完成單尚未刪除...

linux計畫任務

cron是乙個linux下的定時執行工具,可以在無需人工干預的情況下執行作業。由於cron 是linux的內建服務,但它不自動起來,可以用以下的方法啟動 關閉這個服務 sbin service crond start 啟動服務 sbin service crond stop 關閉服務 sbin se...