Где хранится пользовательский crontab?

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

Я хотел бы иметь возможность сделать резервную копию crontab для моего пользователя, но для этого мне нужно знать, где он хранится.

252
задан 20 February 2016 в 20:29

4 ответа

На самом деле не рекомендуется обработать те файлы вручную. На 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.

328
ответ дан 20 February 2016 в 20:29

Я наконец выяснил , почему мои установки crontabs и Postfix продолжали ломаться после загрузки. Это действительно глупая причина, но ...

У меня был /var/spool, смонтированный как tmpfs RAM-накопитель.

Звучит идиотски, и это так, но я следовал одному из старых настроек SSD, чтобы продлить жизнь моего SSD. При этом я слепо смонтировал /tmp, /var/tmp и /var/spool как tmpfs, не думая о последствиях. Я думал, что /var/spool было похоже на /proc/ или /run/ и что это было полезно только на время сеанса. Я был явно неправ.

0
ответ дан 20 February 2016 в 20:29

Он хранится в папке /var/spool/cron/crontabs под именем пользователя.

0
ответ дан 20 February 2016 в 20:29

Чтобы вывести список всех заданий 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
0
ответ дан 20 February 2016 в 20:29

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

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