Como evitar que / bin / sh -c / bin / bash e / bin / bash executem o mesmo script de shell?

1

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

    
por Simon 03.11.2017 / 10:54

2 respostas

2

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.

    
por Arronical 03.11.2017 / 10:59
1

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.

    
por dessert 03.11.2017 / 11:11