例行工作,有點類似上班打卡,等等迴圈的工作
linux 工作排程的種類, at , cron
一種是例行性的,就是每隔一定的週期要來辦的事項 crontab
一種是突發性的,就是這次做完以後就沒有的那一種 at ( 要想執行,必須啟動 atd 服務, 啟動辦法 /etc/init.d/atd restart ( chkconfig atd on 設定每次開機自動啟動 )
at
我們使用 at 這個指令來產生所要運作的工作,並將這個工作以文字檔案的方式寫入 /var/spool/at 目錄內,該工作便能等待 atd 這個服務取用與執行了
/etc/at.allow 與 /etc/at.deny 這兩個檔案來限制使用者是否可以使用 at ( 如果這兩個檔案都不存在,那麼只有 root 可以使用 at 這個指令,先檢查at.allow,再檢查at.deny
at [-mldv] time at -c 工作號碼
-m : 當at 完成之後,及時沒有輸出資訊,以 email通知使用者該工作已完成 ( 如果沒有資訊輸出,就不傳送郵件,如果沒有指定 -m 引數 )
-l : at -l 相當於 atq , 列出目前系統的所有 at 排程
-d : at -d 相當於 atrm , 可以取消乙個 at 排程的工作
-v : 可以使用比較明顯的事件格式欄出 at 排程中的工作列表
-c : 可以列出後面接的該項工作的實際指令內容
時間格式: hh:mm (或 hh:mm yyyy-mm-dd ) 例如: 04:00 2009-03-17 或 now + 5 minutes 或 04pm + 3 days
at now + 5 minutes 進入 at > // 這種 now + 時間的方式比較好
at > /bin/mail root-s "testing a job" < /root/.bashrc
at > 這裡輸入 ctrl + d 就會出現 eof 的字樣
at -c 4
at 另乙個很棒的優點是,背景執行
離線繼續工作的任務,比如大型的程式,需要執行很久,比如跑3天,如果是用windows連線的linux,如果連線中斷,那麼這個程式也會中斷,因為它所依賴的shell被中斷了,
而如果有了 at, 就可以讓這個程式在背景下工作,而不依賴於終端機
at 執行與所有的終端機環境無關,而所有 standard output/standard error output 都會傳送到執行者的 mailbox 去啦,所以終端機當然看不到任何資訊,可以通過 echo "hello" > /dev/tty1來取代,這樣就能顯示在螢幕上了
atq ( 檢視所有的 at )
atrm 5 ( 5 是 job no. ) ( 移除工作5 )
crontab
/etc/cron.allow 和 /etc/cron.deny ( 一般只用乙個就可以了,例如 /etc/cron.deny, 有at中的檔案一樣,如果沒有,就只有root能執行 )
該工作會被記錄到 /var/spool/cron/使用者 中 在工作沒有被執行,準備的時候
cron 執行的每項工作都會記錄到 /var/log/cron 這個登入檔中,因為它是迴圈執行的,所以會有歷史記錄
如果你使用 crontab -e 直接編輯工作可以, 但是如果有多個工作時,每個工作要佔一行,另外如果多個工作時,你如果想刪除其中的乙個, 那麼只能使用
crontab -e 編輯, 把那行刪除, 如果是想把所有的工作全部刪除,那麼使用 crontab -r
crontab [-u username] [-l | -e | -r]
-u : 只有 root 可以,幫助其他使用者 建立/刪除 crontab 工作
-e : 編輯 crontab
-l : 檢視 crontab
-r : 刪除 crontab 工作內容
因為是迴圈指令,所以需要有時間戳,
指令格式如下
分鐘 小時 日期 月份 周 指令
0-59 0-23 1-31 1-12 0-7 指令 ( 周的 0 和 7 都是星期天 )
* 星號 : 代表任何時刻都接受的意思。 比如日,月,週都是* , 那就有可能代表,不論何月,何日,的禮拜幾 該時間都執行
, 逗號 :代表時間斷點, 0 3,6 表示 3點 和 6點 只是這兩個時間點
-減號 :代表時間間隔, 0 3-6 代表 3,4,5,6,都執行
/n 斜線:每個的意思,/5 表示每隔5分鐘
* /5 * * * * 就是每隔5分鐘1次
系統配置檔案 /etc/crontab
只需要編輯 /etc/crontab 這個檔案,就可以做例行事例,有一點需要特別注意, crontab -e 這個就是編輯 /usr/bin/crontab 。系統每分鐘都會讀取一次 /etc/crontab 與 /var/spool/cron 裡邊的資料內容。因此你編輯完 /etc/crontab之後,儲存後,一會就會立刻執行了。
周與日期的時間戳不能共存
可以喚醒停機時間的工作任務
比如你的 linux在晚上要關機,而晚上23點多還有例程工作要做。因為時間錯過了。那不是沒辦法工作了? 引入 anacron 命令
anacron 以天為單位或者是在開機後立刻執行 anacron 動作,執行完後就會自動停止了。
anacron 會以 一天,七天, 乙個月為期去偵測系統未進行的 crontab 任務。
anacron [-sfn] [job]
anacron -u [job]
-s : 強制執行,不判斷時間記錄檔案的時間戳 ( 用來判斷關機時間 )
-n : 立刻進行未執行的任務
-u : 僅更新時間記錄檔案的時間戳,不進行任何工作
job : 由 /etc/anacrontab 定義的各項工作內容
Linux中用crontab例行工作安排
linux中用crontab例行工作安排 1.什麼是crontab?週期性的處理待辦事項的守護程序,類死任務計畫。2.crontab命令解析。示例 0 0 1 5 cd home hiperry shutdwon.sh logs shutdwon.log 2 1 每天晚上十二點執行自定義的關機指令碼...
例行性工作排程 crontab
atd啟動 root study systemctl restart atd 重新啟動 atd 這個服務 root study systemctl enable atd 讓這個服務開機就自動啟動 root study systemctl status atd 查閱一下 atd 目前的狀態 at 的運...
Linux例行性工作排程crontab
什麼是例行性工作?比如太陽每天從東方公升起,學校的上課鈴總是不厭煩的定時響起,老媽的喊叫聲總在每天的固定時刻叫你起床等。這些都是例行性工作。linux系統也有自己的定時要辦的事情,比如日誌檔案的輪替,whatis資料庫的建立等等。linux例行性工作分一次性的 at 和迴圈執行的 cron 本篇部落...