Onde o crontab do usuário é armazenado?

208

Desde que o upgrade do crontab do meu usuário foi eliminado. Esta não é a primeira vez que isso acontece este ano e é uma dor restaurá-lo a cada vez.

Eu gostaria de poder fazer o backup do crontab para o meu usuário, mas para isso eu preciso saber onde ele está armazenado.

    
por Oli 13.11.2012 / 15:26

4 respostas

268

Na verdade, não é recomendado manipular esses arquivos manualmente. Por crontab man page:

  

Cada usuário pode ter seu próprio crontab e, no entanto,   estes são arquivos em /var/spool/cron/crontabs , eles não são
  destinado a ser editado diretamente.

Arquivos sob /var/spool são considerados temporários / funcionando, é por isso que eles provavelmente são excluídos durante uma atualização, embora uma olhada mais de perto nos scripts de atualização do pacote cron possa lançar alguma luz sobre isso.

De qualquer forma, é sempre uma boa prática fazer backup de suas entradas do cron ou mantê-las em um arquivo em seu diretório pessoal.

Suponho que você esteja usando crontab -e para criar arquivos crontab rapidamente. Se assim for, você pode obter uma "cópia" do seu arquivo crontab fazendo crontab -l . Canalize isso para um arquivo para obter um "backup":

crontab -l > my-crontab

Depois, você pode editar o arquivo my-crontab para adicionar ou modificar entradas e, em seguida, "instalá-lo", dando-o ao crontab:

crontab my-crontab

Isso faz a mesma verificação de sintaxe como crontab -e .

    
por roadmr 13.11.2012 / 16:21
44

É armazenado dentro da pasta /var/spool/cron/crontabs sob o nome de usuário.

    
por Manula Waidyanatha 13.11.2012 / 15:29
27

Eu finalmente descobri por que minha instalação do crontabs e do Postfix continuava quebrando após a inicialização. É uma razão muito estúpida, mas ...

Eu tinha /var/spool montado como tmpfs de RAM-drive.

Parece idiota e é, mas eu segui um dos velhos ajustes do SSD para prolongar a vida do meu SSD. Ao fazê-lo, montei cegamente /tmp , /var/tmp e /var/spool as tmpfs sem pensar nas repercussões. Eu pensei que /var/spool era como /proc/ ou /run/ e que isso era útil apenas durante a sessão. Eu estava claramente errado.

    
por Oli 30.05.2013 / 15:20
10

Para listar todos os trabalhos agendados de todos os usuários em seu sistema:

for user in $(cut -f1 -d: /etc/passwd)
do
  echo $user
  crontab -u $user -l
done

Uma alternativa ao seu problema seria colocá-los na pasta cron.d e especificar o usuário apropriado por cron, como no exemplo:

00 01 * * * user /home/user/user-script.sh
    
por pl1nk 28.03.2013 / 13:39

Tags