linux中的計劃任務

任務或作業:計劃的命令

at:計劃一次性任務

一個系統守護進程(atd),它有一組命令行工具可與守護進程進行交互;atd守護進程提供了a到z共26個隊列,作業按字母排列,越往後系統優先級越低

  at <timespec> :計劃新作業,at會隨後讀取從stdin執行的命令。對於較大的命令以及錯別字敏感的命令,使用來自腳本文件的輸入重定向比在終端窗口中手動輸入命令要簡單,手動輸入時,Ctrl+d可以完成輸入

eg

  now +5min  相對時間,從現在起,5分鐘後執行

  teatime  tomorrow noon   midnight   模糊時間

  noon  +4days  從中午起,4天后

  5pm august  3  2016  2016年8月3號下午5點

檢查作業

  atq | at –l : 查看用戶待處理的作業

  顯示爲四列:作業編號、該作業計劃的日期和時間、作業所在隊列、作業所有者

●普通的非特權用戶只能查看和控制自己的作業,root可以查看和管理所有作業

  at –c <jobnumber> :檢查在執行作業時將運行的實際命令

  atrm  <jobnumber>  :將會刪除計劃的作業

cron計劃週期性作業

   crond守護進程默認開機自啓,由多個配置文件和系統範圍內的文件控制的,使用戶和管理員擁有細微的控制權,可以控制應執行週期性作業的確切時間

  crond守護進程以郵件的形式將執行的任務結果發送給任務的所有者;

  但也可以將任務執行結果重定向到/dev/null,而不讓其發送到郵箱而佔用資源

  crontab –l 列出當前用戶的計劃任務

  crontab -r 刪除當前用戶的所有計劃任務

  crontab -e  編輯當前用戶的計劃任務

  crontab <filename> 刪除所有作業並替換爲從<filename>讀取的作業,若未指定任何文件,則將使用stdin

●root可以使用-u<username> 來管理其他用戶的作業

作業格式

  編輯的文件每行均有一個作業,允許有空行,並且註釋的行以哈希符號#開頭,環境變量也可使用格式NAME=value來聲明

  每個作業都包含六個字段,描述了執行的時間和內容:

用戶級任務

分  時  日  月  周  命令

系統級任務:

分  時  日  月  周  username  命令

   前五個字段全部使用相同的語法規則

*無關緊要,始終,任何有效值

   數字  指定分鐘數,小時數,日期,工作日等

-   表示範圍,連續時間如x-y ,x到y(包含)

, 表示列表,離散時間

*/x  x表示時間間隔,每多久執行一次

還可使用三個字母的英文字母表示月份和工作日

最後一個字段包含要執行的命令。若未聲明shell環境變量,則該命令由/bin/sh執行

若命令包含未轉義的百分號%,則該百分號被當作新行,且%之後的所有內容將反饋到stdin中的命令

eg:

  0 9 2 2 * /usr/local/bin/yearly_backup

          在每年2月2號上午9點執行/usr/local/bin/yearly_backup

  */7 9-16  * Jul 5  echo “chime”

在7月每週五上午9點到下午4點間,每7分鐘向作業所有者輸出chime

  58 23 * * 1-5 /usr/local/bin/daily_report

          在每週週一到週五23時58分鐘執行/usr/local/bin/daily_report

  3 * * * * echo hiya

          在每小時的第3分鐘輸出hiya (1點3分,2點3分,3點3分)

* * * * 1,5  ls /tmp  

          週一、週五每分鐘都執行ls /tmp

  10,40 * * * * ls /tmp

          每小時10分,40分時執行,即每30分鐘執行ls /tmp

計劃系統cron作業

系統cron作業在星期幾和命令字段之間定義user,用來指定作業應在哪個用戶下運行

系統cron作業在2個位置定義:/etc/crontab和/etc/cron.d/*,安裝cron作業的軟件包應在/etc/cron.d/中放置文件才能執行安裝操作,但管理員也可用此位置來將相關的作業分到單個文件中

  預定義作業沒小時,每天,每週和每月運行一次,這些作業將分別執行位於/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/和/etc/cron.monthly/中的所有腳本。

●確保使位於這些目錄中的所有腳本可執行,如果腳本不可只執行,則不會運行。

/etc/cron.hourly/*腳本是使用run-parts命令從/etc/cron.d/0hourly中定義的作業執行的。每日、每週和每月的作業也使用run-parts命令執行。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章