После обновления crontab моего пользователя был уничтожен. Это не первый раз, когда это происходит в этом году, и это боль, восстанавливающая это каждый раз.
Я хотел бы иметь возможность сделать резервную копию crontab для моего пользователя, но для этого мне нужно знать, где он хранится.
На самом деле не рекомендуется обработать те файлы вручную. На crontab
страница справочника:
У каждого пользователя может быть их собственный crontab, и хотя
это файлы в/var/spool/cron/crontabs
, они не
предназначенный, чтобы быть отредактированным непосредственно.
Файлы под /var/spool
считаются временными/рабочими, вот почему они, вероятно, удалены во время обновления, хотя более внимательное рассмотрение cron
сценарии обновления пакета могут пролить некоторый свет на это.
Так или иначе это всегда - хорошая практика, чтобы создать резервную копию Ваших записей крона или сохранить их в файле в Вашем корневом каталоге.
Я предполагаю, что Вы используете crontab -e
создать crontab файлы на лету. Если так, можно получить "копию" crontab файла путем выполнения crontab -l
. Канал, что в файл для получения "резервного копирования":
crontab -l > my-crontab
Затем можно отредактировать это мой-crontab файл, чтобы добавить или изменить записи и затем "установить" его путем предоставления его crontab:
crontab my-crontab
Это делает тот же синтаксис, проверяющий как crontab -e
.
Я наконец выяснил , почему мои установки crontabs и Postfix продолжали ломаться после загрузки. Это действительно глупая причина, но ...
У меня был /var/spool
, смонтированный как tmpfs
RAM-накопитель.
Звучит идиотски, и это так, но я следовал одному из старых настроек SSD, чтобы продлить жизнь моего SSD. При этом я слепо смонтировал /tmp
, /var/tmp
и /var/spool
как tmpfs
, не думая о последствиях. Я думал, что /var/spool
было похоже на /proc/
или /run/
и что это было полезно только на время сеанса. Я был явно неправ.
Он хранится в папке /var/spool/cron/crontabs
под именем пользователя.
Чтобы вывести список всех заданий cron от всех пользователей вашей системы:
for user in $(cut -f1 -d: /etc/passwd)
do
echo $user
crontab -u $user -l
done
Альтернативой вашей проблеме может быть размещение их в папке cron.d и указание соответствующего пользователя для каждого cron, как в примере:
00 01 * * * user /home/user/user-script.sh