Devo salvar meu arquivo crontab em / tmp?

11

Eu ssh para um servidor e quero adicionar alguns trabalhos diários (especificamente para renovar tickets do Kerberos, mesmo quando eu sair e ainda quero que meus programas na tela ou tmux continuem em execução) no cron. Então eu corro crontab -ee adiciono o seguinte,

00 00 * * * kinit -R
00 12 * * * kinit -R

Quando eu o salvo, o editor pergunta:

File Name to Write: /tmp/crontab.HMpG7V 

Não é que os arquivos /tmppodem ser excluídos pelo sistema operacional? Especialmente depois que eu sair do servidor?

Onde devo armazenar meu arquivo crontab? Posso salvar o arquivo crontab em $ HOME ou algum espaço melhor?

Tim
fonte
Posso salvar o arquivo crontab em $ HOME? Por que preciso de um link simbólico?
Tim

Respostas:

15

crontab -eabre um arquivo em / tmp em vez do crontab real, para que ele possa verificar se há erros no seu novo crontab e impedir que você substitua seu crontab real por esses erros. Se não houver erros, seu crontab atual será atualizado. Se crontab -eapenas escrevesse diretamente no seu crontab real, você correria o risco de todos os seus cronjobs falharem devido a um erro de sintaxe no seu novo crontab.

sudoedit, visudo, vipw, Etc. operam sob o mesmo princípio.

Não se preocupe, seu crontab real vive em um local não volátil no disco.

jayhendren
fonte
onde meu arquivo crontab é armazenado eventualmente? Se eu sair do servidor, o que acontecerá com o meu arquivo crontab? (Eu não sou um administrador, e não não tem acesso root ao servidor)
Tim
1
o seu crontab real mora em algum lugar /var/spool(normalmente), mas você nunca deve tocar no seu crontab real e também nunca precisará usá-lo crontab -e. Você provavelmente não tem o nível de acesso certo para editar o arquivo crontab bruto de qualquer maneira.
Jayhendren
se você sair, nada acontecerá com o seu crontab. não vive em / tmp.
Jayhendren
(1) O arquivo crontab é para usuário individual ou para todos os usuários? (2) Como posso verificar se minha edição no arquivo crontab funciona?
Tim
crontabs são por usuário. para verificar se o seu cronjob é executado, você pode verificar os logs do cron. normalmente em /var/log/cron.log, mas também em outros locais.
Jayhendren
5

/tmpé para onde o arquivo temporário do crontab é gravado. Depois de salvar e sair, crontabas alterações serão confirmadas em um diretório diferente e mais apropriado em seu sistema (geralmente em /var/spool/cron, se bem me lembro). Portanto, não se preocupe, o sistema operacional pode excluir seu / tmp, mas nunca removerá seus crontabs.

Valmiky Arquissandas
fonte
1

Os arquivos Crontab residem em / var / spool / cron / crontabs / sob o nome de usuário ou o ID do usuário. Como podem surgir situações em que o crontab localizado aqui não está mais conectado à sua conta de login, é recomendável salvar uma cópia no diretório inicial, digitando /home/userid/.crontab, para que você possa restaurá-lo facilmente, caso necessário para. Isso também permite que você o coloque sob controle de revisão, se desejar.

Se seu diretório pessoal for realocado para outro sistema, geralmente o crontab do diretório spool não o acompanha, a menos que o administrador do sistema leve isso em consideração. O / var / spool nem sempre é feito backup ou restaurado quando um sistema precisa ser refeito.

Então, novamente, é recomendável que uma cópia do seu crontab seja mantida em seu diretório pessoal.

Use seu editor favorito (pico, vi, emacs, etc) para editar ~ / .crontab e use o crontab para aplicá-lo a / var / spool / crontabs. Como isso:

% pico ~/.crontab; crontab ~/.crontab

Se você gosta de pseudônimos, pode criar um para executar.

JonathanS
fonte
1
Preciso fazer algo para que o arquivo crontab da minha casa substitua os arquivos crontab em outro local?
Tim
Basta executar "crontab ~ / .crontab" e você o aplicará em / var / spool / cron / crontabs. Use pico, emacs ou vi para editar ~ / .crontab antes da mão para fazer alterações.
JonathanS
Na verdade, isso não responde à pergunta.
ninguém
@AndrewMedico: A questão principal parecia ser "Onde devo armazenar meu arquivo crontab? Posso salvar o arquivo crontab em $ HOME ou em algum espaço melhor?" Ou você está se referindo à pergunta de Tim no comentário aqui?
JonathanS