Как правильно редактировать файл crontab?

Как правильно редактировать файл crontab?

Я пытаюсь автоматизировать обновление awstats для моего веб-сервера и понимаю, что мне нужно использовать cron для настройки. То есть у каждого пользователя есть файл crontab?

Я следовал инструкциям.здесьсообщество/AWStats

И там сказано перейти к файлу по адресу:/etc/crontab

В этом файле уже есть некоторая информация. Это основной crontabфайл или что-то еще? Я видел в сети несколько инструкций по использованию файла, который появляется вместе с crontab -e.

Какой файл следует использовать и как это лучше всего сделать?

Если я запланирую задачу как не-root пользователь, будет ли она запущена сама по себе в указанный интервал времени, без проблем?

Нужно ли мне перезапускать сервер после сохранения задания cron в crontabфайле, чтобы оно начало работать?

решение1

Какой файл лучше всего использовать и как это лучше всего сделать?

crontab -e— это лучший способ сделать это — он позволит вам легко редактировать файлы crontab для каждого пользователя.

Если я запланирую задачу как не-root пользователь, будет ли она запущена сама по себе в указанный интервал времени, без проблем?

Да, и он будет работать с привилегиями этой учетной записи пользователя.

В принципе, лучше всего запускать запланированные задачи с минимальными привилегиями, которые вы можете себе позволить, поэтому, если то, что вы делаете, не требует root, не используйте root. Если вам даже не нужно иметь доступтвойфайлы и папки учетной записи, затем вы можете создать нового пользователя и использовать эту учетную запись пользователятолькодля этой задачи. С другой стороны, если ваша задачаделаеттребуется root, используйте crontab root ( 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

и ДА, очень важно, чтобы вы поместили свое задание cron в crontab пользователя, у которого достаточно прав для его выполнения.

Поэтому, если ваш скрипт должен быть root или специальным пользователем, обязательно подключитесь к этому пользователю и добавьте cronjob туда.

Тоже очень важно!

cronjob — это глупо! Да, я это сказал. Всегда обязательно вводите полный ПУТЬ к application/command/scriptиспользуемому вами файлу, потому что crontab не будет работать с ним .bashrcили чем-то подобным. Всегда нужно указывать cron, где он может найти файлы и каталоги.

Чтобы ответить на остальные ваши вопросы:

Конечно, он будет работать сам по себе, для этого он и нужен. Но вам нужно проверить, что cronjob действительно это делает, или ему чего-то не хватает. Например, войдите в файл журнала, чтобы увидеть, работает ли он на самом деле.

И НЕТ, перезагрузка не нужна. Перезагрузка с Linux обычно нужна только если вы устанавливаете новое ядро. Для ее использования вам нужно перезагрузиться. Почти все остальное можно сделать без перезагрузки в Linux.Конечно, есть исключения, но в целом это утверждение верно.

Связанный контент