我有一个看起来像这样的系统单元脚本
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?