Questão Onde o crontab do usuário é armazenado?


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

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


217
2017-11-13 14:26


origem


seria bom se alguém pudesse também dar uma razão PORQUE é eliminado - Walter Tross
@WalterTross Sim, é muito chato. Eu acho que é um efeito colateral de atualizar o cron pacote, mas eu concordo - não é algo que deve acontecer. - Oli♦
Eu não faço esse usuário cron ser limpo por atualização de pacote do cron! - pl1nk
@ pl1nk Eu não tenho idéia do que está limpando, mas continua acontecendo. Fantasma na máquina, eu acho. - Oli♦
As tabelas de usuários são armazenadas em uma área temporária / var / spool / cron / crontabs / $ USER, assim, elas podem ser excluídas em sua próxima inicialização ou atualização. - fcm


Respostas:


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

Cada usuário pode ter seu próprio crontab e, embora
  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 um olhar mais atento cron Os scripts de atualização do pacote podem 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.

Eu presumo que você esteja usando crontab -e para criar arquivos crontab em tempo real. Se assim for, você pode obter uma "cópia" do seu arquivo crontab fazendo crontab -l. Pipe que para um arquivo para obter um "backup":

crontab -l > my-crontab

Então você pode editar o arquivo my-crontab para adicionar ou modificar entradas e depois "instalá-lo" dando-o ao crontab:

crontab my-crontab

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


279
2017-11-13 15:21



crontab -l é mais fácil do que passar /var/spool/cron/crontabs/$USER principalmente por causa das permissões bizarras nesse arquivo. - Oli♦
o iptables-save de cron. Agradável... - Parthian Shot
se você usa sua conta root para crontab, então seu sudo crontab -l> root-crontab para raízes crontab! - FreeSoftwareServers
Talvez devêssemos colocar um crontab para fazer backup automaticamente> :)? - PascalVKooten
Cutucando /var/spool/cron/crontabsÉ útil quando você deseja organizar ou examinar crontabs de vários usuários. - dhasenan


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


46
2017-11-13 14:29





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

eu tinha /var/spool montado como um tmpfs RAM-drive

Soa idiota e é, mas eu tinha seguido um dos antigos ajustes SSD para prolongar a vida do meu SSD. Ao fazê-lo, montei cegamente /tmp, /var/tmp e /var/spool Como tmpfs sem pensar nas repercussões. eu pensei /var/spool era como /proc/ ou /run/ e isso só foi útil pela duração da sessão. Eu estava claramente errado.


27
2018-05-30 13:20



Deve ser seguro montar /tmp como tmpfs, mas não /var/tmp ou /var/spool. /tmp é usado para armazenamento temporário que pode ser perdido na reinicialização. /var/tmp é usado para armazenamento temporário que permanecerá após uma reinicialização. E como você descobriu, /var/spool é para os dados serem processados, que também permanecerão após uma reinicialização. - thomasrutter
Vejo pathname.com/fhs/2.2/fhs-5.15.html - thomasrutter
Observe também que a contagem de gravação não é mais um problema com os SSDs modernos. - thomasrutter


Para listar todos os cron jobs 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 para o 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

10
2018-03-28 12:39



se você estiver recuperando o crontab de outra unidade, isso não funcionará porque crontab -u está sendo executado no seu sistema atual. - JVE999
Embora eu suponha que seja um verso na medida em que cabe em menos de 80 caracteres e é um pouco legível, geralmente gosto de colocar código em um formato tal que uma pessoa possa copiar-colar ou colocá-lo em um script (e em um script, isso seria não seja uma linha de código). Sugerindo editar ... - Parthian Shot
Além disso, eu estava prestes a transformá-lo em um while read user loop, para lidar com o caso em que o nome de usuário contém espaços, mas aparentemente isso não é um problema. Conjunto muito limitado de caracteres de nome de usuário. - Parthian Shot