掌握Cron作業並自動執行基本服務器任務

文章撰寫者:
  • 精選文章
  • 更新:Sep 06,2017

網站託管旨在簡單,直接,完美適合在旅途中的專業人士,根本無法每天每小時投入 管理他們的託管服務器 和相關的任務。

為此,幾乎所有基於Unix或Linux的服務器都提供了一個稱為“自動化”的自動化任務管理器。Cron Job“或”Crontab。“

此軟件實用程序非常類似於Microsoft Windows中的任務調度程序,因為它可以被告知在特定時間執行某些操作,從而使用戶無需手動執行這些任務。 當考慮到許多例行服務器維護,備份和通信過程可能需要數小時和數小時才能完成時,這一點尤為重要。 大多數人只是想在辦公室度過一天后回家休息,而不是晚上備份文件和管理聯繫人。

這些人很幸運,因為每個任務都可以按日,按週或按月安排 - 或者甚至更遠,在某些情況下,可以在Crontab實用程序中向服務器提供有關如何執行任務的具體說明,如何知道它何時完成,以及當手頭的任務實際完成時該怎麼辦。

用戶可以放鬆,而服務器可以完成所有繁重的工作數小時; 或者他們可以簡單地安排工作在他們自己的辦公室努力工作時完成。 因為它是自動化的,所以Cron工作幾乎可以在一天中的任何時間發生。

學習使用Cron作業的格式來告訴時間

Cron的工作並不是一件容易掌握的事情; 事實上,它被廣泛認為是標准上最先進的配置之一 Linux or Unix的 網絡服務器。 這部分是因為用於編程這些工作的語言過於陳舊,在某些情況下完全倒退。 當談到有關Cron工作或Cron標籤的某個時間時,事情肯定是倒退的,顛倒的,有點令人困惑。

通過Cron作業告訴時間的格式是這樣的:

星期幾,每月一天,每週一天

它只是一條線,偶數和命令在一個統一的收縮中是並排的。 這足以讓大多數開發人員和服務器運營商畏縮,事實上,他們中的許多人都會這樣做,直到他們開始開發高效的Cron工作。

值得注意的是,Cron工作時間的每個方面都是數字的; 沒有月份名稱日名稱,或在執行任務的整個開發期間使用的其他詞語。

因此,讓我們在7月10th為30:7設置一個Cron作業,以便了解Cron作業在嚴格數字時的工作時間。

30 10 07 07 *

上面的例子說明工作應該在第七個月的第七天的第十個小時的第30分鐘完成。 即使月份或日期只是一位數,所有數字都是兩位數。 記住這一點非常重要,因為單個數字通常會導致Cron作業無效,而且根本不會執行。 在con結構的末尾,星號表示應該在一周中的任何一天執行作業。 這很重要,因為將它設置為星期三的03意味著該任務僅在7月7th執行,如果那天是星期二。 這種情況很可能每七年或八年發生一次,這對大多數開發人員來說都是有吸引力的。

設置Cron作業時要考慮的另一個重要考慮因素是小時格式是24小時的軍事時間而不是12小時的民用時間。 要將Cron作業的時間更改為10 pm,小時將更改為22而不是當前的10。

Cron工作實例

最後,如果用戶僅希望每天,每月或甚至每年完成一項任務,他們可以完全跳過設置特定時間的過程。 相反,Cron作業過程提供了簡單地使用變量來確定何時在這些頻繁的間隔上完成作業。 這些包括:

  • @日常
  • @monthly
  • @每年

由於無法使用小時和分鐘嚴格控制和確定時間,因此根據服務器的內部時間,按照要求的間隔,這些作業將在午夜時分發生。 這意味著@monthly間隔將在每月第一天的正午夜發生。 @yearly間隔將發生在每年第一天的正午夜; @daily間隔將在一年中的每一天的正午夜發生。

這比設置特定日期,時間和星期幾容易得多,但是在月或年的第一天午夜執行的某些任務可能對某些客戶有一些缺點。 在安排在午夜時分發生的任務時,始終牢記管理員和站點訪問者的需求。

掌握“命令”變量以及如何處理它

從上面的示例中可以看出,構建實際的Cron作業相對容易。 必須首先定義日期,然後立即定義Cron作業的功能。 該功能實際上可以是任何功能,包括運行PHP腳本或運行自定義備份腳本,該腳本將服務器的文件和數據存儲在遠程或本地文件中。 為了澄清,我們將構建以前使用的示例,並指示Cron作業在7:10上的7月30th上運行PHP腳本。 這個PHP腳本將被稱為“backup.php”,我們假設PHP文件是一個完整的備份腳本,它在服務器指示的情況下在本月的第七天收集,壓縮和存儲站點文件。 這是它的樣子:

30 10 07 07 * http://your-domain-name.com/backup-scripts/backup.php

當這個Cron作業輸入到服務器的Cron選項卡列表中時,它將在每年7月10th的30:7上自動執行。 它將運行位於“backup-scripts”目錄中的PHP備份腳本,這就是Cron作業設置的真正天才所在。

它不需要用戶的高級命令來執行站點備份和緩存刷新等操作,而只是讓用戶能夠以指定的時間間隔或在特定時間的特定日期執行現有腳本。 這意味著除了用戶已經知道的內容之外,不需要高級編程知識。 PHP完全支持備份站點文件,更高級的用戶可能為他們的Linux服務器開發更高級的文件和編程語言。

這種簡單的設置可以用來做幾乎任何事情,只要預先編寫的腳本提供獨立於用戶輸入的那些動作的執行。 這確實意味著由Cron選項卡中的Cron作業執行的任何腳本必須完全自動化並且能夠自行執行。 例如,告訴Cron作業每天同時執行WordPress索引或主題文件是不可能的(而且只是不合邏輯)。 根本沒有定義任何操作或自動化流程,雖然Cron作業肯定會執行該文件,但它將無效並且在用戶輸入以另一種方式提供之前會保持靜態。

因此,如果編寫或下載備份腳本或其他人以使用Cron作業,請始終確保他們只需要零用戶輸入即可成功執行其功能。 自動化任務計劃程序必須與其執行的文件中的自動化進程配對。 這條規定沒有例外。

掌握典型服務器上的整體Cron選項卡文件

指定執行的每個特定Cron作業都位於一個更大的文件中,該文件稱為Cron選項卡。 一些服務器有多個Cron選項卡,用於多種類型的應用程序和自動輸入,但這種情況很少見,主要是為最先進的服務器運營商和所有者保留的。 只有一個Cron選項卡文件的用戶可以使用以下命令完整地編輯,刪除或查看文件,列出每個特定的自動任務以便在文件中查看。

crontab -r

此命令刪除(因此“r”)或刪除整個Cron選項卡文件本身。 這將有效地清除所有命令和自動腳本,並將其還原為可重建的空白文件。 對於那些設法破壞文件或以某種方式誤導任務和時間的人來說,這是一個合適的選擇。 有時候,從頭開始更容易。

crontab -e命令

在這種情況下,“e”代表“編輯”。想要編輯Cron選項卡中描述的功能而不是完全刪除文件的用戶可以使用此命令進入命令行編輯器,這將允許他們添加新任務,刪除舊任務或更改Cron選項卡文檔中列出的每個Cron作業的適用計劃時間。

crontab -l

在這種情況下,通過將“L”與“look”聯繫起來很容易記住。 此命令允許服務器管理員只是簡單地查看其Cron選項卡文件的完整內容,而無需完全從服務器中刪除它,也無法編輯內容。 此Cron選項卡內容的只讀顯示非常適合記住哪些任務被安排在哪些時間,以及用於驗證文件本身的完整性。

為什麼掌握Cron作業Cron Tab自動化文件很重要

一般來說,服務器的唯一自動化就是硬盤的旋轉和硬件功能的性能。 除此之外,服務器必須經過培訓並指示執行常規和非常規任務,這些任務超出了顯示軟件控制面板或升級用戶放置在硬盤上的PHP或Perl的安裝。

重要的是要記住,服務器可以定期執行的最基本功能之一是創建數據和設置的站點備份。 沒有Cron作業,幾乎沒有辦法自動化這個過程,並且由於互聯網的性質以及每天通過站點的所有惡意訪問者,未能每天或每周自動執行此過程可能會導致重大問題和災難性的數據丟失。

不過,除此之外,還有許多任務應該使用Cron作業流程自動完成。 這些任務包括清除任何可能向網站訪問者顯示過時圖像或打印內容的網站緩存; 它還包括刪除舊文件,清理舊目錄和圖像,以及確保存儲在服務器硬盤驅動器上的所有內容都是最新且未損壞的。

就像健康的個人計算機自動安排磁盤維護,防病毒和惡意軟件掃描,軟件更新和文件刪除一樣,必須配置一個健康的服務器來照顧自己並保持良好的信譽。 否則,它就容易受到崩潰,黑客攻擊和數據丟失的影響,導致利潤損失,廣告,內容創建甚至搜索引擎排名狀態。

易於學習,易於部署

在標準Cron選項卡中創建Cron作業是服務器管理員可以執行的最簡單的操作之一。

該過程位於標準命令行中,並將每個時間段分解為兩位數代碼。

因為它不需要任何新的編程語言的額外知識來自動化任務,所以該服務基本上建立在管理員已經擁有的現有編程和服務器操作知識的基礎上。 在這種情況下,沒有理由不開始自動化基本服務器功能並確保站點數據和操作的完整性。

關於Jerry Low

WebHostingSecretRevealed.net(WHSR)的創始人 - 100,000用戶信任和使用的託管評論。 超過15在網絡託管,聯盟營銷和SEO方面的多年經驗。 ProBlogger.net,Business.com,SocialMediaToday.com等的貢獻者。