如何使用crontab自動化linux中的重複任務

想在Linux中節省時間並自動化關鍵程序嗎?Crontab就是答案。...

利用crontab Linux命令自動化各種平凡和重複的任務,簡化您的生活。這個優秀且易於使用的工具,結合一些指令碼,不僅可以自動執行各種任務,還可以幫助避免簡單的人為錯誤或遺忘。

Automate tasks with Crontab in Linux

在這裡,您將瞭解什麼是crontab,如何新增自動化作業,以及一些實際示例。

什麼是克朗塔布(crontab)?

Crontab是一個後臺程序,幾乎在所有Linux機器上都在後臺執行,用於按設定的時間間隔排程和執行自動任務。軟體開發人員也經常使用它在後臺執行耗時的任務。

這可以是任何事情,包括但不限於傳送批次電子郵件,檢查您的Twitter提要,執行備份,或只是執行提醒。

基本crontab命令

機器上的每個Linux使用者都有自己的crontab檔案,其中包含他們的活動crontab作業。下面是一些用於檢視和修改crontab檔案的基本終端命令:

  • crontab-l---列出所有crontab作業。
  • crontab-e---編輯crontab檔案。
  • crontab-r---從crontab檔案中刪除所有條目。

以上命令將用於當前使用者的crontab檔案。如果需要修改其他使用者的crontab檔案,只需使用-u選項。例如,可以使用以下命令編輯jdoe使用者的crontab檔案:

sudo crontab -ujdoe -e

crontab作業的格式

每個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作業保持安靜

根據具體情況,您可能希望消除crontab作業的所有輸出,這樣它們就不會出現在系統的郵件資料夾中。您可以透過將>/dev/null 2>&1附加到任何crontab作業來完成此操作。例如:

0 6 15 * * /path/to/backup.sh > /dev/null 2>&1

新增crontab作業

通常,新增或修改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檔案中當前處於活動狀態的所有作業:

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

示例:使用rsync備份檔案

crontab的許多優秀用途之一是能夠自動將檔案備份到遠端伺服器。透過這個優秀的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作業是如何格式化的,以及如何利用它的一些實際示例。

  • 發表於 2021-03-28 04:45
  • 閱讀 ( 55 )
  • 分類:程式設計

你可能感興趣的文章

如何在任何使用python的計算機上安裝selenium webdriver

...lenium WebDriver。在本文中,我們將簡要介紹Selenium,並提供如何在系統上安裝Selenium WebDriver的詳細指南。 ...

  • 發佈於 2021-03-10 21:27
  • 閲讀 ( 64 )

11個todoist功能您可能錯過了

... 乍一看,如何檢視您設定的所有重複任務並不完全清楚。好吧,幸運的是,這很容易。 ...

  • 發佈於 2021-03-12 10:41
  • 閲讀 ( 33 )

使用此powershell指令碼在windows中自動執行檔案加密

檔案加密和解密可以是一個工作位。但是,使用PowerShell擴充套件,可以將程序精簡為一行命令。為此,我們需要安裝Gpg4win和Powershell模組。使用指令碼,我們可以自動化檔案加密和解密過程。 ...

  • 發佈於 2021-03-13 21:58
  • 閲讀 ( 110 )

7個免費的windows工具來自動執行重複的任務

...indows中,最糟糕的重複性任務是什麼?如果可以的話,你如何實現它們的自動化?請在下面的評論中告訴我們! ...

  • 發佈於 2021-03-14 01:07
  • 閲讀 ( 58 )

你自己的社交網路:如何在linux上設定mastodon例項

... sudo chmod +x mastodon_cron &amp;&amp; sudo crontab -e ...

  • 發佈於 2021-03-14 07:42
  • 閲讀 ( 53 )

windows與linux:以下是它們的共同點

...在沒有命令列的情況下建立cron作業。請參閱我們的Cron和Crontab使用指南。 ...

  • 發佈於 2021-03-14 16:05
  • 閲讀 ( 56 )

自動化重複任務的11個最佳microsoft onenote巨集

...產力。認真的愛好者在辦公室工作效率更高的一種方法是使用巨集:一次單擊就可以執行的指令集。 ...

  • 發佈於 2021-03-15 05:53
  • 閲讀 ( 56 )

保持條理的9個最佳時間管理工具

...程式有角色和目標的部分,還有一個停車場供以後的專案使用。單擊一週中的任何一天新增新任務,並根據需要將其優先順序設定為“重要”或“緊急”。 ...

  • 發佈於 2021-03-16 23:02
  • 閲讀 ( 73 )

初學者指南使用體位法跟蹤任何專案

... 讓我們慢慢來。下面介紹如何使用Asana建立和跟蹤專案。 ...

  • 發佈於 2021-03-21 09:04
  • 閲讀 ( 55 )

4個linux自動化應用程式,簡化您的任務和工作流

...在Linux上執行任何需要排程的操作的預設方式,但是編輯crontab檔案並不完全容易。 ...

  • 發佈於 2021-03-21 21:10
  • 閲讀 ( 60 )