介紹
Linux中有一個叫做cron的守護進程,用於定期運行進程。
這樣做的方式是檢查系統上的某些文件夾以便腳本運行。 例如,有一個名為/etc/cron.hourly的文件夾,/ etc / cron.daily,/etc/cron.weekly和/etc/cron.monthly。 還有一個名為/ etc / crontab的文件。
默認情況下,您可以簡單地將腳本放入相關文件夾中以使其定期運行。
例如,打開一個終端窗口(通過按CTRL,ALT和T)並運行以下ls命令 :
ls / etc / cron *
您會看到每小時,每天,每周和每月運行的程序或腳本列表。
這些文件夾的問題在於它們有點模糊。 例如,日常意味著腳本每天運行一次,但您無法控制該腳本在當天運行的時間。
這就是crontab文件進入的地方。
通過編輯crontab文件,您可以獲得腳本或程序在您想要運行的確切日期和時間運行。 例如,也許你想在每天晚上6點備份你的文件。
權限
crontab命令要求用戶有權編輯crontab文件。 基本上有兩個文件用於管理crontab權限:
- /etc/cron.allow
- /etc/cron.deny
如果文件/etc/cron.allow存在,那麼想要編輯crontab文件的用戶必須在該文件中。 如果cron.allow文件不存在但存在/etc/cron.deny文件,則該用戶不得存在於該文件中。
如果兩個文件都存在,那麼/etc/cron.allow將覆蓋/etc/cron.deny文件。
如果兩個文件都不存在,那麼它取決於系統配置,用戶是否可以編輯crontab。
root用戶可以隨時編輯crontab文件。 您可以使用su命令切換到root用戶或使用sudo命令運行crontab命令。
編輯Crontab文件
每個有權限的用戶都可以創建自己的crontab文件。 cron命令基本上查找多個crontab文件的存在,並通過它們全部運行。
要檢查您是否有crontab文件,請運行以下命令:
crontab -l
如果您沒有crontab文件,則會顯示消息“沒有
要創建或編輯crontab文件,請運行以下命令:
crontab -e
默認情況下,如果沒有選擇默認編輯器,則會要求您選擇要使用的默認編輯器。 就我個人而言,我喜歡使用nano,因為它非常簡單易用,並且可以從終端運行。
打開的文件有很多信息,但關鍵部分是評論部分結束之前的示例(註釋用#開頭的行表示)。
#mh dom mon dow命令
0 5 * * 1 tar -zcf /var/backups/home.tgz / home /
有6條信息適合crontab文件的每一行:
- 命令要運行的那一分鐘(m)
- 命令運行的一小時(h)
- 命令運行的月份(dom)
- 命令運行的月份(星期一)
- 星期幾,命令運行(dow)
- 命令
對於每個項目(命令除外),您可以指定通配符。 看看下面的示例crontab行:
30 18 * * * tar -zcf /var/backups/home.tgz / home /
上述命令的意思是在30分鐘,18小時以及每週的任何一天,每月和每天運行一個命令,將主目錄壓縮到/ var / backups文件夾。
為了讓命令在每隔30分鐘運行一次,我可以運行以下命令:
30 * * * *命令
為了得到命令,每分鐘運行一次,我可以運行以下命令:
* 18 * * *命令
因此,您必須小心設置您的crontab命令。
例如:
* * * 1 *命令
上述命令將在1月份每週的每一天的每一小時的每一分鐘運行一次。 我懷疑這是你想要的。
要在1月1日凌晨5點運行一個命令,你需要在crontab文件中使用以下命令:
0 5 1 1 *命令
如何刪除Crontab文件
大多數情況下,您不想刪除crontab文件,但可能需要從crontab文件中刪除一些行。
但是,如果要刪除用戶的crontab文件,請運行以下命令:
crontab -r
更安全的方法是運行以下命令:
crontab -i
這問了一個問題:“你確定嗎?” 在刪除crontab文件之前。