
Я пытаюсь автоматизировать обновление 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.Конечно, есть исключения, но в целом это утверждение верно.