Как правильно использовать файл и как это сделать?
crontab -e
это лучший способ сделать это - это позволит вам легко редактировать пользовательские crontabs.
Если я запланирую задачу как мой пользователь без полномочий root, будет ли она выполняться сама по себе в указанный промежуток времени без проблем?
Да, и он будет работать с правами этой учетной записи пользователя.
Как правило, лучше всего запускать запланированные задачи с наименьшими привилегиями, с которыми вы можете уйти, поэтому, если то, что вы делаете, не требует 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 напрямую, я не знаю, каков будет результат. Возможно, это просто не вступит в силу до следующего перезапуска, и любые ошибки могут быть трудно отладить.
crontab -e
позволяет редактировать ваш пользовательский crontab без sudo. Пользовательские crontabs находятся в/var/spool/cron/crontabs
каталоге, к которому нельзя получить доступ без разрешения суперпользователя (но таким образом, что, когда cron откажется от привилегий, он все равно сможет его прочитать). Даже если вы используете sudo, чтобы попытаться отредактировать файл напрямую, вы увидите большое предупреждение вверху: «НЕ РЕДАКТИРОВАТЬ ЭТОТ ФАЙЛ» - файл предназначен для редактирования с помощьюcrontab
команды, которая использует временную копию/tmp
и затем устанавливает это после сохранения.У каждого пользователя есть свое
crontab
.Чтобы увидеть это просто введите
и, да, вы видели это правильно, когда вы хотите добавить, а
crontab
затем просто сделатьВпервые вас спросят о редакторе для использования
crontab
. Поскольку вы новичок, как вы говорите, я бы порекомендовал использовать nano, это самый простой в использовании редактор.Сам crontab работает так
Так, например, чтобы запускать работу каждые 15 минут только в понедельник, вы делаете это так
и ДА очень важно, чтобы вы поместили свой cronjob в crontab пользователя, у которого достаточно прав для его выполнения.
Так что если ваш скрипт должен быть пользователем root или специальным пользователем, убедитесь, что su для этого пользователя и добавьте туда cronjob.
Также очень важно!
Кронджоб тупой! Да, я сказал это. Обязательно вводите полный PATH для того, который
application/command/script
вы используете, потому что crontab не будет работать с.bashrc
или подобным. Вы всегда должны убедиться, что сообщаете cron, где он может найти файлы и каталоги.Чтобы ответить на остальные ваши вопросы:
Конечно, он будет работать сам по себе, вот для чего он. Но вы должны проверить, что cronjob действительно делает это, или если он что-то упустил. Например, войдите в файл журнала, чтобы увидеть, действительно ли он работает.
И НЕТ, перезагрузка не нужна. Перезагрузка с Linux обычно требуется только в том случае, если вы устанавливаете новое ядро. Чтобы использовать его, вам нужно перезагрузить компьютер. Почти все остальное можно сделать без перезагрузки в Linux. Конечно, есть исключения, но в целом это утверждение верно.
источник