linux - 打印输出到终端

标签 linux bash shell

有人碰巧知道是否可以打印两个 echo脚本命令到同一个终端?问题是应该打印到终端的脚本由 systemd service 自动执行。 .

我已经发现可以打开终端并让它执行如下命令:

konsole -e <strong>command</strong>

但是,这将为每个命令打开一个新终端,我希望它们都在同一个终端中执行。

亲切的问候 百事可乐

最佳答案

抛开当没有可用于捕获日志的终端/X session 时如何处理情况的问题。这些可以通过测试 X/终端可用性并回退到日志文件来解决。

每个终端都连接到唯一的伪终端 (PTY),通常是/dev/pts/0,/dev/pts/1, ..., 。发送到 PTY 的任何内容都将显示在终端上(konsole、gnome-terminal、xterm 等)。

您可以使用以下内容构建解决方案

  • 使用以下命令启动终端:
    • konsole -e '(tty ; echo $$) >/tmp/active_tty ;虽然是真的;睡 600 分钟;日期 ;完成' &.
    • 有效地迫使终端保持运行直到关闭/被杀死。
    • 该文件将捕获 tty 名称和 PID
    • 可以使用 gnome-terminal, xterm, ...
  • 每个想要将输出发送到“当前”日志终端的进程都应该将 stdout 和/或 stderr 重定向到文件中指定的那个:
    • exec > $(head -1/tmp/active_tty) 2>&1 或类似的

如果需要,PID 线可用于检查终端 PID 是否仍在运行。

关于linux - 打印输出到终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58611341/

相关文章:

php - 在没有 exec/passthru 的情况下从 PHP 中的目录构建 Tar 文件

linux - 生成文件错误 - "***missing separator"& "***recipe commences before first target"

c - Linux中STREAMS的魔力。什么时候结束?

macos - Bash + 替换列中的字符串/值

linux - 跟踪移动的 shell 脚本

node.js - 获取node.js中所有嵌套子进程的标准输出

macos - Mac OS X 10.4+ 上的 Bash 配置

linux - 创建一个 ELF 文件,其中 .text 部分之后的部分与 .text 部分非常远

windows - wget --content-disposition文件名上的转义字符

linux - 创建 bash 脚本以自动执行分析多个文件的任务