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

網站託管 旨在簡單、直接和完美的專業人士在旅途中,根本無法將每一天的每一個小時都奉獻給 管理他們的託管服務器 和相關的任務。

為此,幾乎所有基於 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間隔將在一年中的每一天的正午夜發生。

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

掌握“ COMMAND”變量及其處理方法

從上面的示例中可以看出,構建一個實際的 Cron 作業相對容易。 必須先定義日期,然後立即定義 Cron 作業的功能。 該功能實際上可以是任何東西,包括運行 PHP 腳本或運行將服務器的文件和數據存儲在遠程或本地文件中的自定義備份腳本。 為了澄清起見,我們將在之前使用的示例的基礎上構建並指示 Cron 作業運行 PHP 腳本於 7 月 10 日上午 30 點 XNUMX 分進行。 這個 PHP 腳本將被稱為“備份。php”,我們假設 PHP file 是一個完整的備份腳本,當服務器指示這樣做時,它會在每月 XNUMX 日收集、壓縮和存儲站點文件。 這是它的樣子:

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

當這個 Cron 作業進入服務器的 Cron 選項卡列表時,它會在每年的 10 月 30 日上午 7:XNUMX 自動執行。 它將運行 PHP 位於“backup-scripts”目錄中的備份腳本,這就是 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 的文章