Как избежать / bin / sh -c / bin / bash и / bin / bash для одного и того же сценария оболочки?

у меня есть скрипт test.sh запуск в crontab каждые 10 минут для пользователей уни-01

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

когда я использую команду ps -eF в test.sh запустить скрипт с [F4], а второй начать с команды /bin/bash. Как избежать выполнения команды /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

релиз Ubuntu является 16.04.1 ЛС

1
задан 3 November 2017 в 14:03

4 ответа

Вы можете попробовать включить shebang #!/bin/bash в начале test.sh.

Это устанавливает bash как вашу оболочку для скрипта из самого скрипта, без необходимости явно указывать его в ваша линия crontab.

2
ответ дан 18 July 2018 в 03:59

Как объясняется в разделе Как изменить оболочку cron (sh на bash) ?, вы можете изменить оболочку по умолчанию на bash с помощью:

SHELL=/bin/bash

Эта команда должна быть помещена где угодно до вашего cron line, в вашем случае:

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

Излишне говорить, что это повлияет на каждую линию cron после него, вы можете изменить его с помощью строки SHELL=/bin/sh, если это необходимо, или просто создать bash в конце вашего кронтаба.

1
ответ дан 18 July 2018 в 03:59

Вы можете попробовать включить shebang #!/bin/bash в начале test.sh.

Это устанавливает bash как вашу оболочку для скрипта из самого скрипта, без необходимости явно указывать его в ваша линия crontab.

2
ответ дан 24 July 2018 в 17:58

Как объясняется в разделе Как изменить оболочку cron (sh на bash) ?, вы можете изменить оболочку по умолчанию на bash с помощью:

SHELL=/bin/bash

Эта команда должна быть помещена где угодно до вашего cron line, в вашем случае:

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

Излишне говорить, что это повлияет на каждую линию cron после него, вы можете изменить его с помощью строки SHELL=/bin/sh, если это необходимо, или просто создать bash в конце вашего кронтаба.

1
ответ дан 24 July 2018 в 17:58

Другие вопросы по тегам:

Похожие вопросы: