Я не могу понять, какую опцию передать в StandardOutput =
для
unit файл ( .service
), где я хочу показать некоторые сообщения на подключенном терминале
откуда запускается сервис! ( console
/ tty
, похоже, не то, что я хочу)
Возможно /etc/systemd/system.conf
глобальное значение по умолчанию DefaultStandardOutput = journal
можно изменить, но я не хочу этого делать!
Меня интересует только отображение некоторых сообщений о прогрессе / запуске из моего файла модуля
(например, systemd-run -P
)
Я использую Ubuntu 18.04.2
# systemd --version
systemd 237
Вы можете взглянуть на https://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardOutput=
Если я правильно понял вопрос, вы хотите, чтобы статус вывода службы был на tty / консоль? Помните, что при запуске службы systemd позаботится о дескрипторах файлов по умолчанию.
Вы можете использовать файл, чтобы сохранить статус и запросить его там.
Отредактируйте сценарий, который вы хотите запустить, с помощью systemd, и добавьте | logger
для команды, из которой вы хотите выводить в системный журнал:
#!/bin/bash
/usr/bin/ps aux | /usr/bin/grep gnome > /home/user/test/psoutput.txt
/usr/bin/date | logger
echo "This is terminal output" | logger
/usr/bin/date >> /home/user/test/psoutput.txt
Вывод $ sudo journalctl -u pstofile -f
:
бер 09 13:33:42 lenovo systemd[1]: Started ps aux to file.
бер 09 13:33:42 lenovo root[8491]: понеділок, 9 березня 2020 13:33:42 +0200
бер 09 13:33:42 lenovo root[8493]: This is terminal output
бер 09 13:33:42 lenovo systemd[1]: pstofile.service: Succeeded.
Мой служебный файл systemd содержит следующее:
[Unit]
Description=ps aux to file
After=systemd-user-sessions.service
[Service]
Type=simple
Restart=always
RestartSec=5
ExecStart=/home/user/test/pstofile.sh
StandardInput=journal+console
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target