2016-11-13 12 views
-1

Centos 7Проблемы при запуске моей службы

Проблема заключается в следующем: если я пишу в консоли:

/opt/dklab_realplexor/dklab_realplexor.int start 

Все нормально, запускается служба. Если вы создаете файл службы и сделать это:

systemctl start realplexor 

что сервис падает в ошибку (в данном случае не писать или где по какой-то причине) и не создают PID-файл. Скажите, из-за чего это может быть? Внутри dklab_realplexor.int запускается скрипт perl с параметрами.

cd $CWD && $BIN $CONF -p $PIDFILE 2>&1 | logger -p `eval" echo $LOGPRI "` -t `eval" echo $LOGTAG "` & 

Полный файл службы:

[Unit] 
Description=realplexor 

[Service] 
Type=forking 
PIDFile=/var/run/dklab_realplexor_dklab_realplexor.conf.pid 
WorkingDirectory=/opt/dklab_realplexor 

User=root 
Group=root 

Environment=RACK_ENV=production 

OOMScoreAdjust=-1000 

ExecStart=/opt/dklab_realplexor/dklab_realplexor.int start 
ExecStop=/opt/dklab_realplexor/dklab_realplexor.int stop 
ExecReload=/opt/dklab_realplexor/dklab_realplexor.int reload 
TimeoutSec=5000 

[Install] 
WantedBy=multi-user.target 

Скажите, пожалуйста, в какую сторону копать?

+0

Вы пробовали удаления пробелов в пути файла Systemd службы? – xxfelixxx

+0

@xxfelixxx, извините, я исправил блок в запросе. Файл не содержит пробелов. – Relajado

ответ

0

Похоже, ваш сценарий использует переменные среды, которые не определены в вашем файле службы. Чтобы увидеть список доступных переменных окружения добавить в скрипт (dklab_realplexor.int):

env | sort 
+0

Спасибо за ответ. Если я правильно понял, вам нужно вставить строку: 'cd $ CWD && $ BIN $ CONF -p $ PIDFILE 2> & 1 | logger -p \ 'eval" echo $ LOGPRI "\' -t \ 'eval" echo $ LOGTAG "\' & ' Если это так - это не работает :( – Relajado

+0

Я хочу добавить команду" env | sort " как первая строка в вашем скрипте. Теперь попробуйте выполнить скрипт напрямую и с помощью «systemctl». Проверьте различия в выходе. Предполагаю, что ваши переменные env CWD, BIN, CONF не определены при запуске «systemctl», поэтому вы должны определить или вы не можете их использовать. – Ivan

+0

Я пробовал: 'perl /opt/dklab_realplexor/dklab_realplexor.pl /etc/dklab_realplexor.conf -p /var/run/dklab_realplexor_dklab_realplexor.conf.pid 2> & 1 &' ie remove переменных и указать путь, и ошибка сохраняется. – Relajado

 Смежные вопросы

  • Нет связанных вопросов^_^