Respostas:
Experimente o timeout
comando Por exemplo:
0 * * * * timeout -2 3540 /path/to/your_command.sh
enviará um SIGINT ao seu comando se ele não for concluído em 59 minutos.
usage: timeout [-signal] time command...
timeout: /usr/bin/timeout
Não. A maneira como fazemos isso é criar um script com um arquivo de bloqueio e fazer com que o script verifique esse arquivo de bloqueio antes de começar a executar novamente, para que ele possa verificar se ele já está em execução e decidir se é executado, se aguarda o outro final ou se matar o outro antes de executar.
Um arquivo de bloqueio é apenas um arquivo vazio ou um arquivo com o outro script PID
salvo em algum lugar como /var/run
ou /var/lock
.