Программа не может открыть файл при запуске из скрипта init.d

Заранее спасибо за чтение моего поста. У меня проблема с моей программой, работающей по-другому, когда она запускается из моего скрипта 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

Любая помощь очень ценится. Благодарю.

0

Решение

Так как вы используете относительные пути для открытия файла, вот в чем, скорее всего, проблема. Рабочий каталог при запуске приложения из сценария — это каталог, в котором находится сценарий, а не каталог, в котором находится приложение. И поэтому, когда вы используете относительные пути для поиска файла, они относятся к каталогу скрипта, поэтому он не может найти их при выполнении из скрипта, но может при выполнении непосредственно из командной строки.

Вы можете проверить эту теорию, переместив скрипт в каталог приложения и попытавшись запустить его. Если он работает из скрипта, когда скрипт и приложение находятся в одном каталоге, тогда я прав.

ничто не может быть уверенным, так как у нас нет вашего кода.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]