web-dev-qa-db-fra.com

Comment éviter que / bin / sh -c / bin / bash et / bin / bash ne s'exécutent pour le même script shell?

J'ai un script test.sh qui s'exécute dans crontab toutes les 10 minutes pour l'utilisateur uni-01

crontab -l
*/10 * * * * /bin/bash /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1

Lorsque j'utilise une commande ps -eF, le script test.sh commence par /bin/sh -c /bin/bash et le second par /bin/bash. Comment éviter l'exécution de la commande /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

La version Ubuntu est la 16.04.1 LS

1
Simon

Vous pouvez essayer d'inclure Shebang#!/bin/bash au début de test.sh.

Ceci définit bash comme shell pour le script à partir de celui-ci, sans avoir à l'épeler explicitement dans la ligne de votre crontab.

3
Arronical

Comme expliqué dans Comment changer le shell cron (sh en bash)? , vous pouvez changer le shell par défaut en bash avec:

Shell=/bin/bash

Cette commande doit être placée n'importe où avant votre ligne cron, dans votre cas:

Shell=/bin/bash
*/10 * * * * /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1

Inutile de dire que cela affectera chaque ligne cron après celle-ci, vous pouvez la redéfinir avec une ligne Shell=/bin/sh si nécessaire - ou simplement créer une section bash à la fin de votre crontab.

2
dessert