利用crontab Linux命令自動化各種平凡和重複的任務,簡化您的生活。這個優秀且易於使用的工具,結合一些指令碼,不僅可以自動執行各種任務,還可以幫助避免簡單的人為錯誤或遺忘。
在這裡,您將瞭解什麼是crontab,如何新增自動化作業,以及一些實際示例。
Crontab是一個後臺程序,幾乎在所有Linux機器上都在後臺執行,用於按設定的時間間隔排程和執行自動任務。軟體開發人員也經常使用它在後臺執行耗時的任務。
這可以是任何事情,包括但不限於傳送批次電子郵件,檢查您的Twitter提要,執行備份,或只是執行提醒。
機器上的每個Linux使用者都有自己的crontab檔案,其中包含他們的活動crontab作業。下面是一些用於檢視和修改crontab檔案的基本終端命令:
以上命令將用於當前使用者的crontab檔案。如果需要修改其他使用者的crontab檔案,只需使用-u選項。例如,可以使用以下命令編輯jdoe使用者的crontab檔案:
sudo crontab -ujdoe -e每個crontab作業由一行組成,格式如下:
MINUTE HOUR DAY MONTH WEEKDAY COMMAND下表說明了crontab作業的不同元素:
Element | Ranage | Description |
---|---|---|
分鐘 | 0 - 59 | 執行crontab作業的分鐘數。 |
小時 | 0 - 23 | 執行crontab作業的時間。 |
天 | 1 - 31 | 在上執行crontab作業的月份。 |
月 | 1 - 12 | 執行crontab作業的月份。 |
工作日 | 0 - 6 | 在上執行crontab作業的星期幾。 |
命令 | 可以在終端上執行的任何Linux命令。 |
您可以在任何欄位中使用星號(*)來表示萬用字元,這意味著crontab作業將在任何時間段執行。例如,下面的crontab作業將在每天凌晨3:20執行:
20 3 * * * /root/backup.sh每個時間段還可以包括多個元素。您可以透過用逗號分隔來指定精確的值,下面的crontab作業將在每小時20和50分鐘後執行一次:
20,50 * * * * /path/to/command.sh但是,如果要在一個時間段內以特定的間隔執行crontab作業,可以使用*/period,並且下面的crontab作業將在每三個小時的15分鐘後自動執行:
15 */3 * * * /path/to/command.sh根據具體情況,您可能希望消除crontab作業的所有輸出,這樣它們就不會出現在系統的郵件資料夾中。您可以透過將>;/dev/null 2>;&;1附加到任何crontab作業來完成此操作。例如:
0 6 15 * * /path/to/backup.sh > /dev/null 2>&1通常,新增或修改crontab作業最常用的方法是crontab-e命令。在終端中執行以下命令:
crontab -e這將開啟一個文字編輯器,比如nano,其中包含crontab檔案的內容。每個crontab作業駐留在一行中,您可以根據需要新增、修改和刪除行。完成後,按Ctrl+W儲存並關閉檔案,然後按Y和Enter鍵,這將立即啟用檔案中的所有crontab作業。
除了手動修改crontab檔案之外,您還可以執行一個快速的命令來新增作業。例如,如果要新增每個星期日下午2:00執行的crontab作業:
0 14 * * 0 /path/to/command.sh可以使用以下單個命令將作業新增到crontab檔案:
(crontab -l; echo "0 14 * * 0 /path/to/command.sh";) | crontab上面的命令只是列出crontab檔案中當前的所有作業,列印新作業,並將所有內容匯入crontab以替換其內容。
您可以使用以下命令列出crontab檔案中當前處於活動狀態的所有作業:
crontab -l您還可以刪除所有crontab作業,並使用以下命令清空crontab檔案的內容:
crontab -r工作時需要每兩小時快速提醒一次,讓你知道時間已經過去了嗎?抓取你最喜歡的幾乎任何格式的音訊剪輯(.wav,.mp4,任何東西),如果它儲存在(例如)/home/myuser/我的警報.wav自動播放crontab作業:
0 */2 * * * aplay /home/myuser/myalert.wav在每週五下午5點自動播放你最喜歡的歌曲,為你一週的工作做一個美好的送別怎麼樣?抓取你最喜歡的歌曲剪輯,如果儲存在say/home/myuser/friday_歌曲.mp4您將新增crontab作業:
0 17 * * 5 aplay /home/myuser/friday_song.mp4crontab的許多優秀用途之一是能夠自動將檔案備份到遠端伺服器。透過這個優秀的rsync教程,您可以大大降低再次丟失重要資料的風險。
也許你想每五分鐘自動檢查一次各個網站是否線上,如果有網站關閉,你會透過電子郵件得到通知。這裡有一個漂亮的小PHP指令碼,可以做到這一點。
<?php// E-mail address to notify of sites down$email = '[email protected]';// Define URLs to check$urls = ['https://apexpl.io','https://google.com','https://some-junk-site-that-will-hopefully-never-exist.com'];// Go through URLs$down = [];foreach ($urls as $url) {// Check URL$status = check_url($url);if ($status != 200) {$down[] = $url;}}// Send e-mail if we have down sitesif (count($down) > 0) {mail($email, "Urgent - Sites Down!", "Your bot has detected the following sites are currently down:" . implode("", $down));}// Exitexit(0);/*** Check URL*/function check_url(string $url):int{// Send via cURL$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);$resp***e = curl_exec($ch);// Get status, and close connection$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($ch);// Returnreturn $status;}只需在檔案頂部修改電子郵件地址和所需的url進行檢查,並將其儲存在/home/myuser/check等位置_網站.php. 要使此指令碼每五分鐘執行一次,並透過電子郵件通知任何已關閉的站點,請新增crontab作業:
*/5 * * * * /usr/bin/php /home/myuser/check_sites.php > /dev/null 2>&1透過本文,您將有希望瞭解crontab的自動化功能,以及如何使用它來自動化您生活中許多平凡和重複的任務。
您已經瞭解了什麼是crontab,關於crontab檔案,crontab作業是如何格式化的,以及如何利用它的一些實際示例。
...lenium WebDriver。在本文中,我們將簡要介紹Selenium,並提供如何在系統上安裝Selenium WebDriver的詳細指南。 ...
檔案加密和解密可以是一個工作位。但是,使用PowerShell擴充套件,可以將程序精簡為一行命令。為此,我們需要安裝Gpg4win和Powershell模組。使用指令碼,我們可以自動化檔案加密和解密過程。 ...
...indows中,最糟糕的重複性任務是什麼?如果可以的話,你如何實現它們的自動化?請在下面的評論中告訴我們! ...
... sudo chmod +x mastodon_cron && sudo crontab -e ...
...在沒有命令列的情況下建立cron作業。請參閱我們的Cron和Crontab使用指南。 ...
...產力。認真的愛好者在辦公室工作效率更高的一種方法是使用巨集:一次單擊就可以執行的指令集。 ...
...程式有角色和目標的部分,還有一個停車場供以後的專案使用。單擊一週中的任何一天新增新任務,並根據需要將其優先順序設定為“重要”或“緊急”。 ...
...在Linux上執行任何需要排程的操作的預設方式,但是編輯crontab檔案並不完全容易。 ...