У меня включен 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 Я проверил разрешенияодинаковые в обоих случаях.