2014-03-05 47 views
3

當我在crontab -e(默認位置是:/ var/spool/cron/username)和/ etc/crontab中放入crontab項時,有什麼區別?我的意思是crond守護進程將基本上執行兩個cron作業。那麼爲什麼有兩種不同的方式來安排cronjob?哪一個比另一個更受歡迎?crontab -e和/ etc/crontab中的cronjob條目。哪一個更好?

+0

計劃在/ etc/crontab下運行的作業將以root身份運行,其他人不會? – Zlatko

+0

如果是/ var/spool/cron/root,該怎麼辦?那麼哪一個是首選? – Ameyj

+0

這可能不是一個「正確」的答案 - 但我傾向於認爲它是否是特定於「root」用戶帳戶的東西(例如,生成一些報告,通過電子郵件發送到「root」,它會將其轉發到任何地方)應該放在'/ var/spool/cron/crontabs/root'中,但是如果它只是一個系統範圍的管理任務,比如清理'/ tmp'或其他東西,那麼它就屬於'/ etc/crontab' /'/ etc/cron.d/*'(或'/ etc/cron。{小時,每日,每週,每月}')。這只是我的意見,雖然... – twalberg

回答

8

區別在於crontab命令是系統爲用戶操作crontabs而提供的接口。 /etc/crontab文件是用於實現全系統crontab的特例文件。 /var/spool/cron/crontabs/$USER(或任何路徑碰巧是)是一個實現細節。

如果您可以使用crontab命令安排作業,則應該這樣做。

手動編輯/etc/crontab(a)的內容需要root訪問權限,並且(b)更容易出錯。你可以用這種方式搞砸你的系統。

如果作業要在您自己的用戶帳戶下運行,則不需要使用root訪問權限。

即使作業要作爲root運行,使用crontab命令可能仍然更有意義。 (首先,它應該檢測文件中的語法錯誤。)

個人而言,我不使用crontab -e。相反,我有一個crontab文件,我將其保存在一個源代碼管理系統中,並使用命令的crontab filename形式來安裝它。這樣,如果我搞砸了,很容易恢復到早期版本。

+1

非常好的點與crontab -e:語法檢查。 – Ameyj