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
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.
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.