почему у меня есть два различных результата, если я запускаю программу через терминал (как корень) или/etc/init.d (или/etc/rc.local)

Я передал списки, они сказали, что я должен проверить его. Улучшения принесли продвижение намного ближе к общедоступной функциональности. Надо надеяться, мы получаем cdebconf как полную замену однажды.

4
24.07.2013, 17:19
2 ответа

Вы - исполняемый файл C, вероятно, требует, чтобы некоторые переменные среды были установлены функционировать. Например, огибающая переменная $PATH или $LD_LIBRARY_PATH. Там также другие переменные такой как $HOME который не будет установлен, пока пользователь не вошел в систему.

Этот последний мог бы быть необходимым, чтобы Ваше приложение получило доступ к файлам конфигурации и/или файлам журнала, например.

2
27.01.2020, 20:58

Для исследования, что продолжается перенаправьте вывод программы (особенно ошибки) в файл.

/usr/sbin/my_C_program >/root/my_C_program.out 2.>&1

Если это не дает ключа к разгадке, вспыхивает артиллерия: установка strace.

strace /usr/sbin/my_C_program -o /root/my_C_program.from_etc_local.strace

Также запустите программу из командной строки и сравните трассировки. Даже если Вы не понимаете то, что делает большинство строк, первые несколько строк, где трассировки отличаются, должны дать ключ к разгадке. Проигнорируйте большинство различий, которые только касаются целочисленных значений, как они происходят обычно из-за различных адресов загрузки и внимания на то, где системные вызовы отличаются.

Скорее всего, программа ищет некоторый файл, который является сбоями для нахождения, потому что это вызывается из другого каталога, или потому что PATH или некоторая другая переменная среды не установлена на значение, которое Вы ожидаете при запуске программы от /etc/rc.local.

1
27.01.2020, 20:58

Теги

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