【问题标题】:What does TTY mean in the unix ps command?unix ps 命令中的 TTY 是什么意思?
【发布时间】:2011-10-30 03:17:15
【问题描述】:

当我运行 PS 时,其中一列输出是 TTY。这是什么意思?特别是“??”的 as 值如何?与“ttys000”比较?

我问是因为我有一个 Java 程序通过 ProcessBuilder 执行 sort,当这个程序通过我的 IDE (IntelliJ) 运行时,该过程比在 IDE 外作为可执行 jar 运行时所需的时间少 5 倍。

在每种情况下,我都会在排序运行时运行 ps,唯一的区别是 IDE 会创建一个 TTY 为 ??而 jar 创建一个 TTY 为 ttys000 的进程。

【问题讨论】:

    标签: java process tty ps


    【解决方案1】:

    TTY 是一个计算机终端。在ps 的上下文中,它是执行特定命令的终端。

    缩写代表“TeleTYpewriter”,它是允许用户连接到早期计算机的设备。

    根据您的情况,jar 创建了一个名为“ttys000”的虚拟终端,但 IDE 没有附加到虚拟终端来执行命令。

    【讨论】:

    • 很有趣,那么我怎样才能让 jar 在不附加到终端的情况下执行,以免性能受到影响?
    • 您可以通过在命令行中附加“&”来将进程与终端分离。但是,如果性能下降是命令附加到终端的结果,我会感到惊讶。我认为IDE更有可能正在执行某种优化。我期待听到您的结果。
    • 即使使用 & 它仍然需要更长的时间,并且在 ps 中显示 TTY 为 ttys000。但是,当我通过 IDE 中的一个简单的 java 程序执行 jar 时,它运行分离且更短。我想知道它可能是哪种优化,和/或 OSX 终端本身是否会减慢速度。
    • 你已经回答了我的 TTY 问题(谢谢!)为性能问题创建了一个新问题:stackoverflow.com/questions/7124489/…
    • 注意:我的性能问题是由于 IntelliJ 和 shell 使用不同的默认字符集造成的。
    【解决方案2】:

    一个进程可以(并且通常是)绑定到一个“控制终端”。该终端可能是串行线路末端的硬件,或者今天更可能是虚拟软件等价物。 TTY 继承自父进程。您的 IDE 很可能会与其 TTY 解除关联,并且在您的 java 程序外部启动时会继承您的 shell 的 TTY。

    【讨论】:

      猜你喜欢
      • 2014-02-04
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 2015-05-08
      • 2011-05-24
      • 1970-01-01
      • 2016-05-08
      相关资源
      最近更新 更多