Execute o crontab de forma não interativa a partir do script

2

Eu gostaria de programar algumas tarefas em servidores remotos por script, mas estou tendo um problema com crontab esperando para ser executado de forma interativa pela primeira vez. Tanto quanto eu entendo crontab precisa ser inicializado pela primeira execução crontab -e . O que faz com que ele solicite qual editor usar e iniciar o editor.

Eu preciso inicializar crontab e agendar uma tarefa em muitos servidores para logar em cada um individualmente. Existe uma maneira de evitar a parte interativa ou roteiro?

Os servidores e meu cliente estão executando o Ubuntu 13.04.

    
por Nash0 12.08.2013 / 04:09

4 respostas

3

Do StackOverflow: Linux - Como criar um crontab através de um script

Cron jobs usually are stored in a per-user file under /var/spool/cron

The simplest thing for you to do is probably just create a text file with the job configured, then copy it to the cron spool folder and make sure it has the right permissions.

    
por 12.08.2013 / 04:35
1

Eu sou relativamente novo no script shell do Linux e encontrei as respostas no post do SO que Brian mencionou como incompletas. Eles foram uma grande ajuda e tinham a maioria das informações que eu precisava, mas encontrei algumas questões com permissões e executando comandos sobre o ssh. Minha solução final é:

cd ~/
echo "" > x
sudo cp ~/x /var/spool/cron/crontabs/myuser
sudo chown myuser:crontab /var/spool/cron/crontabs/myuser
echo "*/20 * * * * /path/to/myscript" > c
cat ~/c | crontab -
Primeiro eu crio um arquivo crontab vazio, então corrijo as permissões para o que o crontab precisa, então coloque o comando cron em um arquivo e finalmente diga ao crontab para agendar o script.

Adicionar o comando cron a um arquivo, em vez de usar echo, foi necessário porque eu estava tendo problemas com as citações sobre o ssh.

    
por 12.08.2013 / 16:44
0

Você pode editar as entradas do crontab sem usar a opção -e da seguinte forma.

#write out current crontab
crontab -l > mycron
#echo new cron into cron file
echo "<new crontab entry>" >> mycron
#install new cron file
crontab mycron
rm mycron

Isso funciona muito bem para criar / editar (usar sed ) entradas crontab via scripts.

Fonte: StackOverflow

    
por 25.05.2017 / 08:24
-1

Para agendamento de tarefas complexas ou de grande escala, cron começa a ficar difícil de gerenciar. No trabalho, uso um escalonador corporativo (e caro) que facilita muito mais o gerenciamento de nossos mais de 300 postos de trabalho, mas também existem soluções disponíveis livremente e muito decentes.

Sugiro me afastar de cron , especialmente quando você tem muitos servidores para fazer login individualmente. Administrá-los pode ser uma dor real. Tente usar o google "free job scheduler Linux" ou dê uma olhada no link que eu uso com meu farm de renderização 3D em casa (rodando o Ubuntu 12.04).

    
por 13.08.2013 / 08:27