Почему моя Ubuntu crontab временная?

Несколько часов назад я просто создал новую среду VPS, и прямо на запуске сделал crontab-e, вставил мой cronjobs из файла и сохранил.

Я сделал crontab-e несколько минут назад и видел, что имя файла:

/tmp/crontab.MSK8I2/crontab

enter image description here

Почему это? Спасибо,

2
задан 1 January 2017 в 08:36

1 ответ

Выполнение crontab -e crontabs пользователей редактирований (а не система crontab /etc/crontab). Если Вы работаете sudo crontab -e, это редактирует пользователя корневой учетной записи crontab (который не является тем же как /etc/crontab). Пользователь корневой учетной записи crontab применим, но часто не, что системные администраторы хотят отредактировать.

Когда Вы работаете crontab -e, crontab утилита копирует конкретный определенный для пользователя crontab файл, отредактированный во временный файл. Это - намеченное и корректное поведение. Принятие Вас вносит изменения во временный файл в редакторе, crontab затем автоматически записывает те изменения обратно в crontab файле после того, как Вы закончите редактировать.


Braiam объяснил некоторые детали относительно того, почему и как это сделано в "Кроне, crontab-e читает неправильный файл" на Unix. SE:

Это - поведение по умолчанию. crontab -e скопировал бы crontab файл во временный каталог, затем использовать редактора, перечисленного в ВИЗУАЛЬНОМ или переменных среды РЕДАКТОРА для открытия этого файла, при сохранении, он затем попытался бы скопировать файл в исходное местоположение. Это - атомарная операция.

Причины позади этого варьируются от предотвращения двух пользователей для редактирования того же файла одновременно, чтобы иметь исправность/проверку синтаксиса прежде, чем записать исходный файл.

А-ч, crontab -e также не обрезайте файл всегда, если Вы не используете Debian.


Снимок экрана в Вашем вопросе показывает что-то очень как это, которое является значением по умолчанию, прокомментировал текст пользователя crontab в Ubuntu:

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

Напротив, система по умолчанию crontab (/etc/crontab) в Ubuntu похож на это:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Как siloko объясняет в "Crontab-e, открывает новый файл каждый раз, когда я выполняю его", и, как обсуждено в ведущих комментариях crontab системы по умолчанию (показанный выше), один путь crontab в масштабе всей системы /etc/crontab отличается от crontabs в расчете на пользователя, то, что каждая запись содержит поле, которое указывает, какой пользователь выполняет команду. Пример выше имеет root для каждой из трех команд, но можно заставить команды быть выполненными как другие пользователи путем определения их имен пользователей в том поле.

Хотя я не могу быть уверен, мое предположение - то, что Ваш пытаются отредактировать систему crontab, а не корень (или чей-либо еще) пользователь crontab.


Дальнейшее чтение:

3
ответ дан 2 December 2019 в 02:48

Другие вопросы по тегам:

Похожие вопросы: