Який правильний спосіб редагувати файл crontab?


52

Я намагаюся автоматизувати оновлення астатів для свого веб-сервера і розумію, що мені потрібно використовувати cron, щоб налаштувати це. Отже, кожен користувач має файл crontab?

Я дотримувався тут інструкцій спільноти / AWStats

І говорить, що перейти до файлу за адресою: /etc/crontab

У цьому файлі вже є деяка інформація. Це основний crontabфайл чи щось таке? В Інтернеті я бачив кілька інструкцій щодо використання файлу, який вискакує crontab -e.

Який належний файл використовувати та найкращий спосіб зробити це?

Якщо я запланував завдання як мій некористувальний користувач, чи воно буде виконуватися самостійно на часовому інтервалі, як зазначено, без проблем?

Чи потрібно мені перезапустити сервер після збереження завдання cron у crontabфайлі, перш ніж він почне працювати?

Відповіді:


50

Який належний файл використовувати та найкращий спосіб зробити це?

crontab -e це найкращий спосіб зробити це - це дозволить вам легко редагувати кронати для кожного користувача.

Якщо я запланував завдання як мій некористувальний користувач, чи воно буде виконуватися самостійно на часовому інтервалі, як зазначено, без проблем?

Так, і він працюватиме з привілеями цього облікового запису користувача.

Як правило, найкраще виконувати заплановані завдання з найнижчими привілеями, від яких ви можете уникнути, тому, якщо для того, що ви робите, не буде потрібно root, не використовуйте root. Якщо вам навіть не потрібно мати доступ до файлів і папок вашого облікового запису, ви можете створити нового користувача та використовувати цей обліковий запис лише для цього завдання. З іншого боку , якщо ваша задача робить вимагає кореня, кронтаб кореневого ( в su/ sudo suз коренем потім використовувати crontab -e).

Чи потрібно мені перезапустити сервер після збереження завдання cron у файлі crontab, перш ніж він почне працювати?

Ні, він почне працювати відразу (ну наступний можливий запланований час).

Чому б не редагувати файл безпосередньо? Де це знаходиться?

Файли crontab користувачів розміщені в /var/spool/cron/crontabs, але їхні дозволи встановлені таким чином, що їх не можна пройти без дозволу суперпользователя (але після відкриття та процес cron скасувати привілеї, він все одно може отримати доступ до файлу).

Система не розрахована на те, щоб кінцеві користувачі могли безпосередньо редагувати ці файли, і справді у верхній частині файлу в цьому напрямку є суворе DO NOT EDIT THIS FILEпопередження. Замість цього файл призначений для редагування, завдяки crontab -eякому встановлюється тимчасове дзеркало файлу /tmpдля редагування - без суворого попередження - після чого він перевіряє та встановлює сам постійний файл crontab. Це все можна зробити без дозволу суперпользователя.

Якщо ви редагували файл crontab безпосередньо, я не знаю, який би результат. Можливо, це просто не набере чинності до наступного перезавантаження, і будь-які помилки можуть бути важкими для налагодження.


5
crontab -eдозволяє редагувати крони користувача без sudo. Кронтабули користувачів знаходяться в /var/spool/cron/crontabsкаталозі, до якого не можна отримати доступ без дозволу суперпользователя (але таким чином, що після того, як cron скасує привілеї, його все ще можна прочитати). Навіть якщо ви використовуєте sudo, щоб спробувати редагувати файл безпосередньо, ви бачите велике попередження вгорі: "НЕ редагуйте цей файл" - файл призначений для редагування за допомогою crontabкоманди, яка використовує тимчасову копію, /tmpа потім встановлюється. це після збереження.
thomasrutter

25

У кожного користувача є своє crontab.

Щоб побачити його, просто введіть

crontab -l

і, так, ви правильно це бачили, коли ви хочете додати crontabто, просто зробіть

crontab -e

вперше вас запитають про редактор, з яким можна використовувати 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 або спеціальний користувач, переконайтеся, що ви користуєтеся цим користувачем, і додайте туди cronjob.

Також дуже важливо!

cronjob німий! Так, я це сказав. Завжди переконайтеся, що ви вводите повний PATH для використовуваних application/command/scriptвами, тому що crontab не працюватиме з .bashrcподібним або подібним. Ви завжди повинні переконатися, що ви скажете cron, де він може знайти файли та каталоги.

Щоб відповісти на всі ваші запитання:

Звичайно, вона працюватиме самостійно, саме для цього і є. Але вам потрібно перевірити, чи справді це працює, або якщо в ньому щось не вистачає. Наприклад, увійдіть у файл реєстрації, щоб побачити, чи справді він працює.

І НІ, перезапуск не потрібен. Перезапуск з Linux зазвичай потрібен лише у випадку встановлення нового ядра. Для його використання вам потрібно перезавантажити. Майже все інше можна зробити без перезавантаження в Linux. Звичайно, є винятки, але загалом це твердження правильне.


щоб перевірити вас огляд формату час цього сайту crontab.guru
АСТМИ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.