systemd和StandardInput。控制tty

时间:2016-12-13 05:24:21

标签: bash gdb systemd tty

我有一个看起来像这样的系统单元脚本

    cat /usr/lib/systemd/system/hello.service
            [Unit]
            Description=Simple Hello World service
            After=syslog.target network.target

            [Service]
            Type=forking
            EnvironmentFile=/root/hello.env
            ExecStart=/bin/gdb /root/hello
            StandardInput=tty-force
            StandardOutput=inherit
            TTYPath=/dev/pts/0
            TTYReset=yes
            TimeoutStartSec=infinty

            [Install]
            WantedBy=multi-user.target

重点是,我想在启动时使用gdb启动服务。[由于该过程涉及很多环境变量,我不能直接在进程上使用gdb。] systemctl start hello(实际上正在工作)。

但是一旦退出gdb tty就完全搞砸了。没有控制键工作,^ Z,^ C.

这是迄今为止的观察。

  • 作为具有“StandardInput = tty-force”的systemd手册页的描述,实际上会强制执行进程控制tty。

    在我启动流程之前     #tty     的/ dev / PTS / 0

        # ps -aef | grep bash
        root      2805  2803  0 10:42 pts/0    00:00:00 -bash
        root      2860  2805  0 10:45 pts/0    00:00:00 grep --color=auto bash
    
        After i launch
        # tty
        /dev/pts/0
    
        # ps -aef | grep bash
        root      2805  2803  0 10:42 ?        00:00:00 -bash
        root      2884  2805  0 10:47 ?        00:00:00 grep --color=auto bash
    
    • 尝试重置终端,仍然无法正常工作。

    • 后续的systemctl命令显示以下错误

      systemctl stop hello

      创建文本验证代理时出错:打开进程的当前控制终端时出错(`/ dev / tty'):没有这样的设备或地址(polkit-error-quark,0)

所以问题是有没有办法将tty重置为bash?

0 个答案:

没有答案