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