Служба Systemd не работает аналогично ручному запуску команды ExecStart - PullRequest
0 голосов
/ 20 декабря 2018

У меня включен pcieserver.service в systemd, который запускает сценарий /opt/pcieserver/pcieserver.sh, и, похоже, он работает нормально.

Одна проблема, с которой я сталкиваюсь, заключается в том, что этот сервер читает сокет с помощью nc(netcat) и выводит данные в файл / tmp / temp;если я запускаю этот скрипт с помощью команды sudo /opt/pcieserver/pcieserver.sh, а затем запускаю nc для сброса данных, создается временный файл, и данные сбрасываются, как и ожидалось.Если я запускаю nc, когда он запускается из службы systemd, он генерирует файл, но данные не выгружаются, т. Е. Всегда остается 0 КБ.

Файл службы systemd помещен в / etc / systemd / system / pcieserver.service

содержимое:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=PCIe-Server
After=network.target

[Service]
Type=simple

ExecStart=/opt/pcieserver/pcieserver.sh
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target

pcieserver.sh содержимое:

# Getting Script Directory
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

cd ${SCRIPT_DIR}
/usr/bin/sudo python ${SCRIPT_DIR}/pcieserver.py

journalctl вывод:

pcieserver.startLocalTrace[26859]: startLocalTrace function...
pcieserver.sh[26851]: 2018-12-24 06:57:38,169 startLocalTrace function...
pcieserver.sh[26851]: 2018-12-24 06:57:38,170 Delete local Trace:/tmp/trace
pcieserver.deleteLocalTrace[26859]: Delete local Trace:/tmp/trace
pcieserver.sh[26851]: 2018-12-24 06:57:38,170 Tracefile /tmp/trace exists, delete...
pcieserver.deleteLocalTrace[26859]: Tracefile /tmp/trace exists, delete...
pcieserver.sh[26851]: 2018-12-24 06:57:38,170 Tracefile /tmp/trace exists, delete...done
pcieserver.sh[26851]: 2018-12-24 06:57:38,170 Start local Trace to file /tmp/trace...
pcieserver.deleteLocalTrace[26859]: Tracefile /tmp/trace exists, delete...done
pcieserver.sh[26851]: 2018-12-24 06:57:38,170 Start local Trace to file /tmp/trace. Command:nc 127.0.0.1 4705 >/tmp/trace
pcieserver.sh[26851]: 2018-12-24 06:57:38,170 Start process:nc 127.0.0.1 4705 >/tmp/trace
pcieserver.startLocalTrace[26859]: Start local Trace to file /tmp/trace...
pcieserver.startLocalTrace[26859]: Start local Trace to file /tmp/trace. Command:nc 127.0.0.1 4705 >/tmp/trace
pcieserver.startProcess[26859]: Start process:nc 127.0.0.1 4705 >/tmp/trace
pcieserver.startLocalTrace[26859]: Start local Trace to file /tmp/trace...started
pcieserver.sh[26851]: 2018-12-24 06:57:38,176 Start local Trace to file /tmp/trace...started
sudo[4121]:     root : TTY=unknown ; PWD=/opt/pcieserver ; USER=root ; COMMAND=/bin/nc 127.0.0.1 4705
sudo[4121]: pam_unix(sudo:session): session opened for user root by (uid=0)

PS Я проверил разрешенияодинаковые в обоих случаях.

...