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


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

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


214
2017-11-13 14:26


Источник


было бы неплохо, если бы кто-то мог также объяснить причину, ПОЧЕМУ он был уничтожен - Walter Tross
@WalterTross Да, это довольно раздражает. Я бы предположил, что это побочный эффект обновления cron но я согласен - это не то, что должно произойти. - Oli♦
Ух, я не хочу, чтобы пользователь cron получил прореживание за обновление пакета cron! - pl1nk
@ pl1nk Я понятия не имею, что это вытирает, но оно продолжает происходить. Призрак в машине, я думаю. - Oli♦
Таблицы пользователей хранятся во временной области / var / spool / cron / crontabs / $ USER, поэтому они могут быть удалены при следующей загрузке или обновлении. - fcm


Ответы:


На самом деле, не рекомендуется обрабатывать эти файлы вручную. в crontab справочная страница:

Каждый пользователь может иметь свой собственный кронтаб, и хотя
  это файлы в /var/spool/cron/crontabs, они не
  предназначенный для редактирования напрямую.

Файлы под /var/spool считаются временными / рабочими, поэтому они, вероятно, удаляются во время обновления, хотя более пристальный взгляд на cron сценарии обновления пакета могут пролить свет на это.

Во всяком случае, всегда рекомендуется создавать резервные копии ваших записей cron или хранить их в файле в вашем домашнем каталоге.

Я полагаю, вы используете crontab -e для создания файлов crontab на лету. Если это так, вы можете получить «копию» вашего файла crontab, выполнив crontab -l, Труба в файл, чтобы получить «резервную копию»:

crontab -l > my-crontab

Затем вы можете отредактировать этот файл my-crontab для добавления или изменения записей, а затем «установить» его, предоставив ему crontab:

crontab my-crontab

Это делает ту же проверку синтаксиса, что и crontab -e,


274
2017-11-13 15:21



crontab -l легче, чем проходить /var/spool/cron/crontabs/$USER главным образом из-за причудливых прав доступа к этому файлу. - Oli♦
iptables-save из cron. Ницца... - Parthian Shot
если вы используете свою учетную запись root для crontab, тогда ее sudo crontab -l> root-crontab для корней crontab! - FreeSoftwareServers
Возможно, мы должны поставить crontab для автоматического возврата вверх> :)? - PascalVKooten
Проваливание /var/spool/cron/crontabsудобно, если вы хотите курировать или изучать crontabs у нескольких пользователей. - dhasenan


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


45
2017-11-13 14:29





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

я имел /var/spool установленный как tmpfs RAM-диск.

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


27
2018-05-30 13:20



Должно быть безопасно монтировать /tmp как tmpfs, но не /var/tmp или /var/spool, /tmp используется для временного хранения, которое может быть потеряно при перезагрузке. /var/tmp используется для временного хранения, которое останется после перезагрузки. И, как вы обнаружили, /var/spool предназначен для обработки данных, которые также будут сохранены после перезагрузки. - thomasrutter
Видеть pathname.com/fhs/2.2/fhs-5.15.html - thomasrutter
Отметим также, что количество записей в записи больше не является проблемой для современных твердотельных накопителей. - thomasrutter


Чтобы просмотреть все задания 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

10
2018-03-28 12:39



если вы восстанавливаете crontab с другого диска, это не сработает, потому что crontab -u выполняется из вашей текущей системы. - JVE999
Хотя я полагаю, что это однострочный шрифт, в котором он помещается менее чем на 80 символов и является несколько читаемым, мне обычно нравится вводить код в таком формате, чтобы человек мог либо скопировать-вставить, либо поместить его в скрипт (и, в сценарии это не быть одной строкой кода). Предлагаю редактировать ... - Parthian Shot
Кроме того, я собирался превратить его в while read user loop, чтобы обрабатывать случай, когда имя пользователя содержит пробелы, но, видимо, это не проблема. Очень ограниченный набор символов имени пользователя. - Parthian Shot