![Crontab executando script a cada minuto](https://rvso.com/image/1597818/Crontab%20executando%20script%20a%20cada%20minuto.png)
Atualmente estou tentando agendar um cronjob para executar um arquivo de script .sh a cada minuto.
Este é o meu script simples:
#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log
Salvei isso na minha área de trabalho e chamei-o de notify.sh. Em seguida, abri uma nova janela de terminal e digitei crontab-e
. Isso abriu um novo arquivo nano onde digitei:
* * * * * /Users/navania/Desktop/notify.sh
Salvei e existi esse arquivo nano. O que devo fazer a seguir para que o cronjob seja executado com êxito?
Passos até agora:
- Abra o aplicativo de terminal e digite
crontab-e
. - Isso abre um novo arquivo nano onde digito o comando:
* * * * * /Users/navania/Desktop/notify.sh
- Em seguida, apertei o controle o para salvá-lo e depois controlei x para salvá-lo com o nome de CrontabTest.
- Quando saio, diz que nenhuma alteração foi feita no crontab, o que não faz sentido.
- Em seguida, abri o arquivo de log e verifiquei se ele imprime Hello World a cada minuto, o que não acontece.
Qualquer ajuda seria apreciada. Obrigado!
Responder1
Provavelmente, seu script está tentando ser executado a cada minuto.
Siga as etapas de Kamil sobre como alterar a linha crontab para incluir /bin/sh
Mude um pouco o seu script para gerar um arquivo em vez de tentar escrever na tela, pois o comando não será executado no seu terminal. Em vez disso, ele é executado em seu próprio processo, e é por isso que você não verá nenhuma saída.
Por exemplo, altere seu script assim:
#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log
e inspecione seu arquivo .log para ver se novas linhas estão sendo gravadas nele.
Responder2
Você deve tornar o script executável:
chmod +x /Users/navania/Desktop/notify.sh
E certifique-se de que o sistema de arquivos que contém o script não esteja montado com noexec
. Então o comando
/Users/navania/Desktop/notify.sh
deve funcionar, assim como o cronjob.
Alternativamente, o comando no crontab deve ser
/bin/sh /Users/navania/Desktop/notify.sh
Nesse caso, a permissão do executável não importa (nem o shebang no script).
Observenão se deve esperar que a saída textual de um cronjob apareça em qualquer terminal.
E há este problema:
- Em seguida, apertei o controle o para salvá-lo e depois controlei x para salvá-lo com o nome de
CrontabTest
.- Quando saio, diz que nenhuma alteração foi feita no crontab, o que não faz sentido.
Acredito que você precise salvar qualquer arquivo temporário aberto, não um novo arquivo. Não altere o nome ao salvar.