Geralmente, parar e iniciar o daemon cron
do sistema é uma má ideia. Comentar a frase nem sempre é conveniente, então aqui estão algumas alternativas relacionadas
Use um semáforo
Uma solução para esse requisito é usar um semáforo - ou sinalizador - para indicar se o script pode ou não ser executado. Nesta instância, o semáforo pode ser representado pela presença ou ausência de um arquivo: se o arquivo existir, então não execute o script, caso contrário, execute-o. (É claro que o teste pode ser revertido para que o script seja executado apenas se o arquivo existir).
Aqui está uma entrada cron
de amostra com a verificação do semáforo em vigor:
* * * * * test ! -f /tmp/stop && /path/to/script...
Para evitar que o script seja executado, basta executar touch /tmp/stop
. Para permitir que ele comece a ser executado novamente, apenas rm /tmp/stop
.
Para reverter o teste, use este teste para o arquivo /tmp/run
:
* * * * * test -f /tmp/run && /path/to/script...
Você provavelmente desejaria usar um arquivo de semáforo diferente na prática para garantir que apenas pessoas autorizadas pudessem sinalizar o script para parar (ou iniciar). Uma opção pode ser "$HOME"/.scriptname.stop
para um script chamado scriptname
.
Evitar que o código seja executado
Se o script for executável e chamado por /path/to/script...
, basta remover as permissões executáveis ou movê-las para fora do caminho para que o script seja executado:
chmod a-x /path/to/script
ou
mv /path/to/script{,.stop} # i.e. mv /path/to/script /path/to/script.stop
Esta é uma correção rápida e feia que fará com que cron
gere um erro toda vez que tentar executar seu código. Normalmente, esses erros são capturados e enviados por e-mail para o proprietário da tarefa cron
, portanto, um pequeno teste antes de executar o script impedirá que essa situação seja sinalizada:
* * * * * test -x /path/to/script && /path/to/script...