Почему crontab успешно выполнил мой сценарий оболочки, но не смог запустить мою программу двоичного файла? - PullRequest
2 голосов
/ 15 мая 2019

Я сделал сценарий оболочки, подобный следующему:

#!/bin/bash

/root/bin/mybin >> a.log

, затем я использую crontab, чтобы запустить его в определенное время.Результат:

  1. crontab запускает этот скрипт (a.log за исключением, и я вижу журнал из / var / log / cron, также он показывает, что crontab запускает его)
  2. , ноmybin не запущен (mybin - циклическая программа while (true))

Я могу запустить скрипт вручную из оболочки linux.

И я уверен, что он не связан спроблемы с доступом пользователей, поскольку я использую его как Root.

Использование команды

strace -f -o /tmp/data.log ~/deploy/StartData.sh >> ~/script-log/data.log

вывод strace содержит

7011 write(2, "/root/deploy/StartData.sh: line "..., 80) = 80 
7011 write(2, "/root/deploy/StartData.sh: line "..., 82) = 82 
7011 exit_group(2) = ? 
7011 +++ exited with 2 +++ 

Это последние сообщения/tmp/mybin.trace, кроме этого, нет сообщения об ошибке

Это действительно беспокоит меня, любые предложения приятно слышать.

1 Ответ

0 голосов
/ 16 мая 2019

Вывод strace показывает, что в скрипте оболочки /root/deploy/StartData.sh возникают ошибки, и оболочка завершается с кодом выхода 2.

7011 write(2, "/root/deploy/StartData.sh: line "..., 80) = 80 & rarr; сообщение об ошибке с именем файла и (возможно) номером строки
7011 exit_group(2) = ? & rarr; программа завершается с кодом 2 (возможно, с указанием ошибки)

Согласно справочнику кодов выхода оболочки это может означать

Неправильное использование встроенных командных оболочек (согласно документации Bash)

Кажется, что ваша программа / скрипт имеет проблемы при запуске из cron. Возможные причины:

  • Сценарий не имеет связанного терминала.
  • Сценарий запускается в другом каталоге.
  • (возможно, больше)

Для лучшего ответа следуйте подсказкам в комментариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...