Você pode tentar incluir o shebang #!/bin/bash
no início de test.sh
.
Isto define o bash como o seu shell para o script a partir do próprio script, sem ter que explicitar explicitamente na sua linha de crontab.
Eu tenho um script test.sh em execução no crontab a cada 10 minutos para o usuário uni-01
crontab -l
*/10 * * * * /bin/bash /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1
Quando eu uso um comando ps -eF
, o script test.sh começa com /bin/sh -c /bin/bash
e o segundo inicia com o comando /bin/bash
.
Como evitar a execução do comando /bin/sh -c /bin/bash
?
root 6007 946 0 12555 2932 1 09:42 ? 00:00:00 /usr/sbin/CRON -f
uni-01 6011 6007 0 1127 756 0 09:42 ? 00:00:00 /bin/sh -c /bin/bash /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1
uni-01 6019 6011 0 3164 3088 1 09:42 ? 00:00:00 /bin/bash /home/uni-01/test.sh
O lançamento do Ubuntu é 16.04.1 LS
Como explicado em Como alterar o shell do cron (sh para bash)? , você pode alterar o shell padrão para bash
com:
SHELL=/bin/bash
Este comando deve ser colocado em qualquer lugar antes da linha do cron, no seu caso:
SHELL=/bin/bash
*/10 * * * * /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1
Escusado será dizer que isso afetará todas as linhas cron depois dele, você pode alterá-lo de volta com uma linha SHELL=/bin/sh
se necessário - ou apenas criar uma seção bash
no final do seu crontab.