我有一个应用程序,我们正在使用initd转换为systemd。 initd脚本用于运行" myscript.bash start",但用户也可以运行" myscript.bash start"。现在当用户运行" myscript.bash start"时,它运行systemctl(它本身启动" myscript.bash启动")来启动服务。 (这是迟钝的,我知道 - 这个想法是保留myscript.bash内容的版本历史,也是为了让用户以他们习惯的方式启动系统,切换到systemctl应该是不可见的)。
以前,如果用户运行了myscript.bash,他们会在控制台上获得一些关于启动方式的更新。现在该信息不会进入控制台。我尝试过几件事,最有希望的似乎是设置StandardOutput&标准错误为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的脚本,而不是由用户直接启动吗?有没有办法做到这一点?
答案 0 :(得分:4)
我想做类似的事情,设置TTYPath
对我有用。 FWIW这是相关的系统文档https://www.freedesktop.org/software/systemd/man/systemd.exec.html。
在您的情况下,您希望查看csv.writer()
选项,特别是systemd的默认值与系统上的默认值。 HTH。