Crontab executando script a cada minuto

Crontab executando script a cada minuto

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:

  1. Abra o aplicativo de terminal e digite crontab-e.
  2. Isso abre um novo arquivo nano onde digito o comando:* * * * * /Users/navania/Desktop/notify.sh
  3. Em seguida, apertei o controle o para salvá-lo e depois controlei x para salvá-lo com o nome de CrontabTest.
  4. Quando saio, diz que nenhuma alteração foi feita no crontab, o que não faz sentido.
  5. 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:

  1. Em seguida, apertei o controle o para salvá-lo e depois controlei x para salvá-lo com o nome de CrontabTest.
  2. 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.

informação relacionada