Назад | Перейти на главную страницу

выскочка и LD_LIBRARY_PATH

Я новичок в выскочке и должен начать процесс через него. Однако я получаю ошибку, описанную ниже.

содержимое моего скрипта

description "Server"
author "Neeraj"

expect fork

respawn
respawn limit 5 10

console log

pre-start script
    echo "`/bin/date -u`: start myappname"
end script

script
    env LD_LIBRARY_PATH=/var/packages/myapp/target/bin
    export LD_LIBRARY_PATH
    exec /var/packages/myapp/target/bin/myappname --local-path=/var/lib/myapp
end script

post-stop script
    echo "`/bin/date -u`: stop myappname"
end script

Ошибка после выполнения скрипта

bash-4.3# cat /var/log/upstart/pkg-myappname.log
2016-12-07T15:15:11+0800 Wed Dec  7 07:15:11 UTC 2016: start myappname
2016-12-07T15:15:11+0800 TERM=vt102
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
PWD=/
SHLVL=1
UPSTART_INSTANCE=
UPSTART_JOB=pkg-myappname
_=/bin/env
LD_LIBRARY_PATH=/var/packages/myapp/target/bin
LD_LIBRARY_PATH
2016-12-07T15:15:11+0800 /var/packages/myapp/target/bin/myappname: error while loading shared libraries: libhttp.so: cannot open shared object file: No such file or directory
bash-4.3# vi /etc/init/pkg-myappname.conf
bash-4.3# cat /var/log/upstart/pkg-myappname.log
2016-12-07T15:15:11+0800 Wed Dec  7 07:15:11 UTC 2016: start myappname
2016-12-07T15:15:11+0800 TERM=vt102
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
PWD=/
SHLVL=1
UPSTART_INSTANCE=
UPSTART_JOB=pkg-myappname
_=/bin/env
LD_LIBRARY_PATH=/var/packages/myapp/target/bin
LD_LIBRARY_PATH
2016-12-07T15:15:11+0800 /var/packages/myapp/target/bin/myappname: error while loading shared libraries: libhttp.so: cannot open shared object file: No such file or directory

Проблема в том, что мой исполняемый файл зависит от некоторых разделяемых библиотек, для которых я установил LD_LIBRARY_PATH в правильное расположение. Но как только происходит вызов exec, он не видит местоположение LD_LIBRARY_PATH и сообщает об ошибке.

Есть идеи, что я здесь делаю не так?

Отвечая на мою проблему. Я не уверен, это обходной путь или правильный способ написать сценарий выскочки. Но так я решаю свою проблему. Теперь он может правильно находить разделяемые библиотеки.

  1. Удален скрипт, конец скрипта.
  2. Удален экспортный отчет.

Ниже представлен рабочий сценарий.

description "Server"
author "Neeraj"

expect fork

respawn
respawn limit 5 10

console log

pre-start script
    echo "`/bin/date -u`: start myappname"
end script

env LD_LIBRARY_PATH=/var/packages/myapp/target/bin
exec /var/packages/myapp/target/bin/myappname --local-path=/var/lib/myapp

post-stop script
    echo "`/bin/date -u`: stop myappname"
end script