linux 計畫任務

2021-08-07 11:29:13 字數 3823 閱讀 9705

linux 計畫任務分為單次計畫任務和週期性計畫任務,其中單次計畫任務用at命令來執行,週期計畫任務用crontab 命令來實現。實際工作中一般都用週期性計畫任務,所以下面將重點講解下週期性計畫任務crontab。
linux下的任務排程分為兩類,系統任務排程和使用者任務排程。

系統任務排程:系統週期性所要執行的工作,比如寫快取資料到硬碟、日誌清理等。在/etc目錄下有乙個crontab檔案,這個就是系統任務排程的配置檔案,格式如下所示:

格式說明:

shell變數指定了系統要使用哪個shell,這裡是bash

path 變數指定了系統執行命令的路徑

mailto 變數指定了crond的任務執行資訊將通過電子郵件傳送給root使用者,如果mailto變數的值為空,則表示不傳送任務 執行資訊給使用者

home 變數指定了在執行命令或者指令碼時使用的主目錄

minute hour day month dayofweek user-name command

分鐘 小時 天 月 每星期幾 使用者 命令

每個字段代表的含義如下:

minute 每個小時的第幾分鐘執行該任務

hour 每天的第幾個小時執行該任務

day 每月的第幾天執行該任務

month 每年的第幾個月執行該任務

dayofweek 每週的第幾天執行該任務

command 指定要執行的程式

在這些欄位裡,除了「command」是每次都必須指定的字段以外,其它欄位皆為可選字段。

對於不指定的字段,要用「*」來填補其位置。

這裡有幾個特殊符號的含義:

*「」代表取值範圍內的數字,

「/」代表」每」,

「-」代表從某個數字到某個數字,

「,」分開幾個離散的數字**

例如:

30 1 * * 6 copy /test /test/back/test.bak 指定每個星期6的1:30執行一次複製test 的命令

30 10 10 * * wang /wang/delet.sh

指定每月10號的10:30 wang 使用者執行delet.sh 的指令碼

30 10 10 * 0 wang copy test test.bak

****指定每月10號和每個星期天**的10:30 wang 使用者執行複製test命令 (當 day 和 dayofweek 字段重合時候表示兩個都執行**)

30 3 10,15 * * copy xx

每月10號和15號的3:30執行copy命令

25 8-10 * * * 每天8-10點的第25分鐘

*/20 *

* * * 每20分鐘執行一次

30 20 */5 * * 每隔5天20:30執行一次

計畫任務相關的程式包如下:

1. cronie: 主程式包,提供crond守護程序及相關輔助工具。

crond 是linux下用來週期性的執行某種任務或等待處理某些事件的乙個守護程序,與windows下的計畫任務類似,當安裝完成作業系統後,缺省會安裝此服務 工具,並且會自動啟動crond程序,crond程序每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。

2. cronie-anacron: cronie的補充程式,用於監控cronie任

務執行狀況,如cronie中的任務在過去該執行的時間點未能正常

執行,則anacron會隨後啟動一次此任務

3. crontabs:包含centos提供系統維護任務

檢視crond守護程序執行狀態:

**

centos 7:  systemctl status crond

centos 6: service crond status

如: [[email protected] ~]$service crond status

crond (pid 2317) is running...

[root@centos7 ~]#systemctl status crond

● crond.service - command scheduler

loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)

**active**: active (running) since sun 2017-08-27

22:18:18 hkt; 1s ago

main pid: 46896 (crond)

cgroup: /system.slice/crond.service

└─46896 /usr/sbin/crond -n

**想執行週期性計畫任務要確保crond 程序是執行狀態!**

service crond status|stop centos6啟動和停止crond 程序命令

systemctl start|stop crond centos7啟動和停止crond命令

**

crontab命令是給普通使用者來建立計畫任務的,使用crontab命令定義可以實現每個使用者都有專用的cron任務檔案。常用選項如下:

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

-l: 列出所有任務

-e: 編輯任務

-r: 移除所有任務

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

-u user: 僅root可執行,指定使用者管理cron任務

普通使用者通過crontab -e 來建立計畫任務,格式就是上面的crontab 格式一樣,只是不用寫使用者名稱選項,因為就是本使用者嘛。

執行結果的標準輸出和錯誤以郵件通知給相關使用者,通過

cat /var/log/cron 檢視計畫任務日誌檔案。如果不想傳送郵件給使用者可以在命令後加上 &>/dev/null 就可以了。

對於cron任務來講, %有特殊用途;如果在命令中要使用%,

則需要轉義,將%放置於單引號中,則可不用轉義。

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...