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

191

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

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

    
задан Oli 13.11.2012 в 15:26
источник

4 ответа

246

Собственно, не рекомендуется обрабатывать эти файлы вручную. Per crontab man page:

  

Каждый пользователь может иметь свой собственный 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 .

    
ответ дан roadmr 13.11.2012 в 16:21
источник
43

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

ответ дан Manula Waidyanatha 13.11.2012 в 15:29
26

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

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

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

    
ответ дан Oli 30.05.2013 в 15:20
9

Перечислить все задания 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
    
ответ дан pl1nk 28.03.2013 в 13:39