crontab -e
inicialmente pega um modelo de texto, aparentemente deste arquivohttps://anonscm.debian.org/cgit/pkg-cron/pkg-cron.git/tree/crontab.c. Gostaria de buscar programaticamente esse bloco de texto, para poder acrescentar linhas com tarefas cron no final do modelo, para que pareça um arquivo cron editado manualmente.
crontab -e > somefile
não funciona porque fica preso em um shell interativo.
crontab -l > somefile
também não funciona, porque não há arquivo crontab quando uma conta de usuário é criada.
Eu poderia tentar sed
o modelo de texto, mas onde ele estaria localizado em um sistema em execução? E também, estaria presente, digamos, em uma imagem (Ubuntu) implantada por um provedor de hospedagem, ou eu precisaria adicionar o repositório de fontes ao apt list primeiro?
Talvez uma maneira mais fácil seria export VISUAL=nano; crontab -e
enviar Ctrl+o, Enter, Ctrl+X para criar um novo arquivo crontab sem interação do usuário? Mas como envio teclas digitadas para um shell interativo dentro de um script bash?
Responder1
Como o modelo está incorporado no crontab
próprio programa, não há necessidade de ele existir em nenhum outro arquivo.
Para extraí-lo em um sistema onde você não possui um crontab, tente configurar temporariamente seu editor para touch
.
VISUAL=touch crontab -e
crontab -l >saved
Você também pode extraí-lo com strings
ou simplesmente incorporá-lo como um documento aqui em seu próprio script.