首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在systemd服务中找到未使用的伪终端对?

在systemd服务中找到未使用的伪终端对?
EN

Unix & Linux用户
提问于 2017-11-07 12:14:52
回答 2查看 457关注 0票数 0

我正在为其编写服务文件的应用程序希望它的STDIN连接到tty,或者换句话说,它将在终端上运行。Systemd有以下设置,这些设置对我的应用程序非常有用,但是这里我使用静态配置的tty路径,它可能已经被其他应用程序使用,或者根本不存在于系统中。

代码语言:javascript
复制
StandardInput=tty-force
TTYPath=/dev/tty30

如果systemd (或者我)能够找出未使用的pseudoterminal对并使用它,那就好多了。

EN

回答 2

Unix & Linux用户

发布于 2017-11-07 19:45:51

根据man systemd.exec的说法。您要寻找的特性不是内置在systemd中的。

作为替代,您可以编写另一个小服务,它可以找到一个免费的TTY,然后用硬编码的TTY写出一个systemd单元文件,然后在实时单元文件上调用systemctl start

票数 0
EN

Unix & Linux用户

发布于 2021-12-29 21:41:50

我找到了一个根本不依赖systemd的解决方案,而是使用了常用的script命令。例如:

代码语言:javascript
复制
ExecStart=/usr/bin/script -e -c "/usr/bin/python3 -m http.server" /dev/null

将使用由python3分配的伪终端执行script。记录文件被丢弃到/dev/null

较早版本的script似乎无法正确处理信号,因此可能需要像KillSignal=SIGKILL这样的传说。(scriptutil-linux 2.37.2一起工作时没有这种情况。)

来自man script

代码语言:javascript
复制
-c, --command command
           Run the command rather than an interactive shell. This makes it
           easy for a script to capture the output of a program that behaves
           differently when its stdout is not a tty.
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/403049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档