Я новичок в выскочке и должен запустить процесс через него. Однако я получаю ошибку, описанную ниже.
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 и сообщает об ошибке.
Есть идеи, что я здесь делаю не так?
Решение моей собственной проблемы. Я не уверен, это обходной путь или правильный способ написать сценарий выскочки. Но так я решаю свою проблему. Теперь он может правильно находить разделяемые библиотеки.
Ниже приведен рабочий сценарий.
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