
我正在嘗試自動刷新我的網頁伺服器的 awstats 並了解我需要使用 cron 來設定它。那麼每個使用者都有一個 crontab 檔案嗎?
我按照說明進行操作這裡社區/AWSStats
它說要轉到以下位置的文件:/etc/crontab
該文件中已經包含一些資訊。這是主crontab
文件還是什麼?我在網路上看到了一些使用彈出的文件的說明crontab -e
。
正確使用的文件是什麼以及執行此操作的最佳方法是什麼?
如果我以非 root 使用者身分安排任務,它是否會按照指定的時間間隔自行運行,不會出現任何問題?
將 cron 作業保存在文件中後,我是否需要重新啟動伺服器crontab
才能開始工作?
答案1
正確使用的文件是什麼以及執行此操作的最佳方法是什麼?
crontab -e
是最好的方法 - 這將允許您輕鬆編輯每個使用者的 crontab。
如果我以非 root 使用者身分安排任務,它是否會按照指定的時間間隔自行運行,不會出現任何問題?
是的,它將以該使用者帳戶的權限運行。
原則上,最好以您能獲得的最低權限運行計劃任務,因此,如果您所做的事情不需要 root,請不要使用 root。如果您甚至不需要能夠訪問你的帳戶的文件和資料夾,然後您可以建立新使用者並使用該使用者帳戶僅有的為了那個任務。另一方面,如果你的任務做需要root,使用root的crontab(su
/sudo su
到root然後使用crontab -e
)。
將 cron 作業儲存到 crontab 檔案後,我是否需要重新啟動伺服器才能開始工作?
不,它會立即開始工作(好吧,下一個可能的預定時間)。
為什麼不直接編輯文件呢?它位於哪裡?
使用者 crontab 檔案位於 中/var/spool/cron/crontabs
,但其權限設定方式使得沒有超級使用者權限就無法遍歷它們(但一旦開啟並且 cron 進程刪除權限,它仍然可以存取該檔案)。
該系統並不是為最終用戶直接編輯這些文件而設計的,實際上文件頂部有一個嚴厲的DO NOT EDIT THIS FILE
警告。相反,該檔案被設計為可編輯的,透過crontab -e
它設定檔案的臨時鏡像/tmp
進行編輯 - 沒有嚴格的警告 - 之後它會檢查並安裝永久的 crontab 檔案本身。這一切都可以在沒有超級用戶許可的情況下完成。
如果您直接編輯 crontab 文件,我不知道結果會是什麼。它有可能直到下次重新啟動才會生效,並且任何錯誤都可能難以調試。
答案2
每個使用者都有自己的crontab
.
要查看它,只需輸入
crontab -l
而且,是的,你沒看錯,當你想添加一個crontab
然後簡單地做
crontab -e
這是您第一次被詢問有關使用的編輯器crontab
。正如你所說,你是新手,我建議使用 nano,它是最簡單的編輯器。
crontab 本身的工作原理是這樣的
MIN = Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW = Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line
例如,要僅在星期一每 15 分鐘觸發一次作業,您可以這樣做
*/15 * * * mon /home/me/yourscript.sh
是的,將 cronjob 放入有足夠權限執行它的使用者的 crontab 中非常重要。
因此,如果您的腳本需要 root 或特殊用戶,請確保 su 到該用戶並在其中添加 cronjob。
也非常重要!
cronjob 是愚蠢的!是的,我說過。請務必確保輸入application/command/script
您正在使用的完整路徑,因為 crontab 無法使用.bashrc
或類似的路徑。您始終必須確保告訴 cron 它可以在哪裡找到文件和目錄。
回答您的其餘問題:
當然,它會自行運行,這就是它的用途。但是您需要檢查 cronjob 是否確實執行了該操作,或者是否缺少某些內容。例如,登入日誌檔案以查看它是否確實有效。
不,不需要重新啟動。如果您安裝了新內核,通常只需要重新啟動 Linux。要使用它,您需要重新啟動。在 Linux 中,幾乎所有其他事情都可以在不重新啟動的情況下完成。當然也有例外,但總的來說這個說法是正確的。