У меня есть приложение, которое мы конвертируем из initd в systemd. Сценарии initd, используемые для запуска «myscript.bash start», но пользователь также может запускать «myscript.bash start». Теперь, когда пользователь запускает «myscript.bash start», он запускает systemctl (который сам запускает «запуск myscript.bash»), чтобы запустить службу. (Это тупо, я знаю - идея состоит в том, чтобы сохранить историю версий содержимого myscript.bash, но также позволить пользователям запускать систему так, как они используются, переход на systemctl должен быть невидимым).отправьте stdout/stderr на консоль для службы systemd
Раньше, если пользователь запускал myscript.bash, они получили кучу обновлений в консоли о том, как запускался запуск. Теперь эта информация не собирается на консоль. Я попробовал несколько вещей, наиболее перспективным, казалось, установка StandardOutput & StandardError к TTY:
StandardOutput=tty
StandardError=tty
ExecStart=/bin/bash -c './myscript.bash startup &'
ExecStop=/bin/bash -c './myscript.bash shutdown'
Но я получаю эту ошибку:
systemd[20694]: Failed at step STDOUT spawning /bin/bash: Inappropriate ioctl for device
Я смотрел на это: How to Pipe Output to a File When Running as a Systemd Service? (который дал мне идею попробовать StandardOutput =), но цель состоит в том, чтобы записать в файл, и я пытаюсь получить вывод на консоль пользователя.
Это потому, что у нас есть сценарий, на котором запущен systemctl, вместо того, чтобы запускаться непосредственно пользователем? Есть ли способ сделать это?
Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – Marusyk
Я не получаю желаемого результата с помощью журнала + console. «Консоль» означает системную консоль, то есть монитор, подключенный к аппарату, или это означает сеанс пользователя, который запускал systemd? В моем случае я засыпаю в машину и запускаю systemd -user на блоке, который forke. Я хочу видеть вывод ExecStart в реальном времени в моей сессии ssh. – papercrane