代码之家  ›  专栏  ›  技术社区  ›  cerhovice

为什么“htop”显示我的应用程序使用的数十个PID,而“ps”只显示一个?

  •  4
  • cerhovice  · 技术社区  · 10 年前

    我正在开发一个Clojure应用程序。我正在服务器上测试它,主要是通过进入“屏幕”会话并键入:

    java-jar lo_login_service-0.2-standalone.jar

    然后我用Control-C击杀了它。然后我做了一些改变。然后我再次测试它。

    我假设只有一个PID在使用。如果我这样做:

    ps aux
    

    我只看到1个PID在使用:

    das      15028  0.2 22.1 1185300 133520 pts/5  Sl+  Jul26   3:19 java -jar lo_login_service-0.2-standalone.jar
    

    但如果我运行“htop”,那么我会看到:

    15029 das        20   0 1157M  130M  9960 S  0.0 22.2  0:25.85 java -jar lo_login_service-0.2-standalone.jar
    
    15030 das        20   0 1157M  130M  9960 S  0.0 22.2  0:07.29 java -jar lo_login_service-0.2-standalone.jar
    
    15031 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.02 java -jar lo_login_service-0.2-standalone.jar
    
    15032 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.25 java -jar lo_login_service-0.2-standalone.jar
    
    15033 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.00 java -jar lo_login_service-0.2-standalone.jar
    
    15034 das        20   0 1157M  130M  9960 S  0.0 22.2  0:14.68 java -jar lo_login_service-0.2-standalone.jar
    
    15035 das        20   0 1157M  130M  9960 S  0.0 22.2  0:11.46 java -jar lo_login_service-0.2-standalone.jar
    
    15036 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.00 java -jar lo_login_service-0.2-standalone.jar
    
    15038 das        20   0 1157M  130M  9960 S  0.0 22.2  0:08.46 java -jar lo_login_service-0.2-standalone.jar
    
    15039 das        20   0 1157M  130M  9960 S  0.0 22.2  0:04.50 java -jar lo_login_service-0.2-standalone.jar
    
    15040 das        20   0 1157M  130M  9960 S  0.0 22.2  0:14.81 java -jar lo_login_service-0.2-standalone.jar
    
    15041 das        20   0 1157M  130M  9960 S  0.0 22.2  0:03.93 java -jar lo_login_service-0.2-standalone.jar
    
    15042 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.09 java -jar lo_login_service-0.2-standalone.jar
    
    15043 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.00 java -jar lo_login_service-0.2-standalone.jar
    
    15044 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.00 java -jar lo_login_service-0.2-standalone.jar
    
    15045 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.00 java -jar lo_login_service-0.2-standalone.jar
    
    15046 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.00 java -jar lo_login_service-0.2-standalone.jar
    
    15047 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.00 java -jar lo_login_service-0.2-standalone.jar
    
    15048 das        20   0 1157M  130M  9960 S  0.0 22.2  0:00.00 java -jar lo_login_service-0.2-standalone.jar
    

    为什么htop显示了这么多正在使用的PID?

    1 回复  |  直到 10 年前
        1
  •  4
  •   Salem    10 年前

    这些可能是应用程序使用的线程。要仅显示流程,请按 F2 (设置)> Display options > Hide userland threads > F10 (保存)。

    您可以在这里看到一个隐藏/显示用户线程的示例(它们在这里显示为树,因为选项 Tree view 启用同一菜单):

    enter image description here

    编辑: 我忘记提到PID列中的数字不是线程的PID,而是内核线程“ID”(不确定这是否是正确的术语)。使用上面图片的场景作为源,您可以在 /proc/2321/tasks :

    $ ls /proc/2321/task      
    2321  2323  2325  2326  2327