Заранее спасибо за чтение моего поста. У меня проблема с моей программой, работающей по-другому, когда она запускается из моего скрипта init.d. Это программа на C ++, которую я храню в каталоге / usr / local / bin вместе с двумя файлами свойств. Один из файлов свойств необходим для корректной работы программы. Все работает нормально, когда программа вызывается из командной строки, например:
MyProgram
или же
./myprogram
но когда мой скрипт init.d используется для запуска программы, бинарный файл не открывает необходимые файлы свойств. Я проверил разрешения для скрипта init.d (chmod 755) и удостоверился, что обновил rc.d (значения по умолчанию для моей программы sudo update-rc.d), но мне не удалось это выяснить. LSB-заголовок сценария инициализации выглядит так:
#!/bin/bash
### BEGIN INIT INFO
# Provides: myprogram (where myprogram is the name of the init script)
# Required-Start: $local_fs $network $remote_fs $syslog
# Required-Stop: $local_fs $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: myprogram short description
# Description: Enable service provided by daemon
### END INIT INFO
Любая помощь очень ценится. Благодарю.
Так как вы используете относительные пути для открытия файла, вот в чем, скорее всего, проблема. Рабочий каталог при запуске приложения из сценария — это каталог, в котором находится сценарий, а не каталог, в котором находится приложение. И поэтому, когда вы используете относительные пути для поиска файла, они относятся к каталогу скрипта, поэтому он не может найти их при выполнении из скрипта, но может при выполнении непосредственно из командной строки.
Вы можете проверить эту теорию, переместив скрипт в каталог приложения и попытавшись запустить его. Если он работает из скрипта, когда скрипт и приложение находятся в одном каталоге, тогда я прав.
ничто не может быть уверенным, так как у нас нет вашего кода.
Других решений пока нет …