【问题标题】:Why "StandardInput=tty" in oneshot systemd unit files?为什么在 oneshot systemd 单元文件中出现“StandardInput=tty”?
【发布时间】:2017-10-23 12:22:28
【问题描述】:

在搜索不同的 oneshot systemd 单元文件时,我经常偶然发现这个kind of file

[Unit]
Description=/etc/rc.local Compatibility
After=network.target

[Service]
Type=oneshot
ExecStart=-/etc/rc.local
ExecStart=-/pathtoyour/script1
ExecStart=-/pathtoyour/script2
TimeoutSec=0
StandardInput=tty     <======= WHAT'S THIS?
RemainAfterExit=yes   <======= WHAT'S THIS?

[Install]
WantedBy=multi-user.target

在示例中查看不清楚的点。

【问题讨论】:

    标签: systemd


    【解决方案1】:
    • StandardInput=tty 表示启动脚本的标准输入连接到 TTY(默认 /dev/console,如果没有通过“TTYPath=”指定其他)

    • RemainAfterExit=yes 表示即使服务的所有进程都退出,该服务也应被视为处于活动状态。

    更多信息请看这里:https://www.freedesktop.org/software/systemd/man/systemd.directives.html

    【讨论】:

    • 问题更多是关于其背后的推理,而不是查找文档。为什么您希望进程的标准输入是 tty。我会说它不需要任何标准输入。它应该只运行它的命令。如果它是一次性的,那么如果它在完成后就消失了,那是完全可以的。为什么要保持活跃?
    • 关于 RemainAfterExit:stackoverflow.com/a/38377069/6065692;关于 StandardInput 我认为它只是需要,例如:您有 2 个服务 A 和 B,其中 B 依赖于 A。A 将创建一个文件,然后 B 将使用该文件作为标准输入。当然还有其他类似的事情。相反,StandardOutput 用于将脚本输出重定向到文本文件/stdout/systemd 日志以外的其他位置。
    猜你喜欢
    • 2016-12-26
    • 2017-01-19
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 2020-09-10
    相关资源
    最近更新 更多