Linux 将stdout/stderr发送到控制台以获得systemd服务

Linux 将stdout/stderr发送到控制台以获得systemd服务,linux,systemd,Linux,Systemd,我有一个应用程序,我们正在从使用initd转换为systemd。initd脚本用于运行“myscript.bash start”,但用户也可以运行“myscript.bash start”。现在,当用户运行“myscript.bash start”时,它运行systemctl(它本身启动“myscript.bash start”)来启动服务。(我知道这是迟钝的——其目的是保留myscript.bash内容的版本历史记录,但也允许用户以他们习惯的方式启动系统,切换到systemctl应该是不可见的

我有一个应用程序,我们正在从使用initd转换为systemd。initd脚本用于运行“myscript.bash start”,但用户也可以运行“myscript.bash start”。现在,当用户运行“myscript.bash start”时,它运行systemctl(它本身启动“myscript.bash start”)来启动服务。(我知道这是迟钝的——其目的是保留myscript.bash内容的版本历史记录,但也允许用户以他们习惯的方式启动系统,切换到systemctl应该是不可见的)

以前,如果用户运行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
我已经看过了:(这给了我尝试StandardOutput=)的想法,但目标是写入一个文件,我正在尝试将输出获取到用户控制台


这是因为我们有一个运行systemctl的脚本,而不是由用户直接启动它吗?有办法做到这一点吗

我想做类似的事情,设置
StandardOutput=journal+console
对我很有用。FWIW这是相关的系统文件


在本例中,您希望查看
TTYPath
选项,特别是systemd的默认值与系统上的默认值。HTH.

虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,仅链接的答案可能会无效。我无法使用journal+console获得所需的结果。“控制台”是指系统控制台,即连接到机器的监视器,还是指运行systemd的用户会话?在我的例子中,我被塞进一台机器,运行systemd——用户启动一个分叉的单元。我想在ssh会话中实时查看ExecStart输出。从答案中的链接:“Journal+控制台、syslog+控制台和kmsg+控制台的工作方式与上述三个选项类似,但也将输出复制到系统控制台。”有关系统控制台的更多信息,请参阅此答案: