Я написал простое приложение, которое читает последовательный (через USB) TTY. Сам процесс просто работает нормально, но я не могу понять, почему systemd продолжает убивать службу в первые секунды после запуска.
Кажется, проблема связана с чтением устройства TTY. Также это может быть легко воспроизведено, используя кошку
[Unit]
Description=Retrieve and publish power consumption daemon
After=network.target
[Service]
User=power
#ExecStart=/usr/bin/erdf_json_dump
ExecStart=/bin/cat /dev/ttyACM0
Restart=on-abort
[Install]
WantedBy=multi-user.target
Вот устройство /dev/ttyACM0, созданное udev при подключении устройства USB. Это читается кошкой
$ ls -l /dev/ttyACM0
crw-rw---- 1 root uucp 166, 0 Jul 3 09:01 /dev/ttyACM0
А учетная запись пользователя используется для запуска службы, которая предоставляет доступ к устройству с группой uucp
$ id power
uid=1001(power) gid=1001(power) groups=1001(power),14(uucp)
Наконец, вот вывод journalctl для исходного сервиса, KeyboardInterrupt указывает на уничтожение SIGTERM. Systemd не выдает никаких журналов в период начала / уничтожения
Jul 03 09:03:44 pi0 systemd[1]: Started Retrieve and publish power consumption Daemon.
Jul 03 09:03:47 pi0 erdf_json_dump[496]: INFO:root:exiting
Jul 03 09:03:47 pi0 erdf_json_dump[496]: Traceback (most recent call last):
Jul 03 09:03:47 pi0 erdf_json_dump[496]: File "/usr/bin/erdf_json_dump", line 118, in <module>
Jul 03 09:03:47 pi0 erdf_json_dump[496]: tm.loop()
Jul 03 09:03:47 pi0 erdf_json_dump[496]: File "/usr/bin/erdf_json_dump", line 97, in loop
Jul 03 09:03:47 pi0 erdf_json_dump[496]: for key, mask in self._select.select():
Jul 03 09:03:47 pi0 erdf_json_dump[496]: File "/usr/lib/python3.5/selectors.py", line 432, in select
Jul 03 09:03:47 pi0 erdf_json_dump[496]: fd_event_list = self._epoll.poll(timeout, max_ev)
Jul 03 09:03:47 pi0 erdf_json_dump[496]: KeyboardInterrupt
Jul 03 09:03:47 pi0 systemd[1]: erdf-publisher.service: Main process exited, code=exited, status=1/FAILURE
Jul 03 09:03:47 pi0 systemd[1]: erdf-publisher.service: Unit entered failed state.
Jul 03 09:03:47 pi0 systemd[1]: erdf-publisher.service: Failed with result 'exit-code'.
Те же симптомы возникают у кошки, но с меньшим количеством журналов.
Может кто-нибудь дать мне несколько советов?