Tại sao top và ps hiển thị các PID khác nhau cho cùng một quy trình?


11

Khi tôi chạy top -H, tôi thấy rằng mysqltất cả các luồng của tôi đều có cùng một PID. Tuy nhiên, trong ps -eLftôi thấy mỗi người có một PID khác nhau:

ps -eLf

UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
mysql     1424     1  1424  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1481  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1482  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1483  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1484  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1485  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1486  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1487  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1488  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1489  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1490  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1791  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1792  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1793  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1794  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1809  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld
mysql     1424     1  1812  0   17 18:41 ?        00:00:00 /usr/sbin/mysqld

và trong top -H

PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
 1424 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.08 mysqld                                                                  
 1481 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.16 mysqld                                                                  
 1482 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.33 mysqld                                                                  
 1483 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.16 mysqld                                                                  
 1484 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.23 mysqld                                                                  
 1485 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.27 mysqld                                                                  
 1486 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.15 mysqld                                                                  
 1487 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.18 mysqld                                                                  
 1488 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.16 mysqld                                                                  
 1489 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.16 mysqld                                                                  
 1490 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.34 mysqld                                                                  
 1791 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.26 mysqld                                                                  
 1792 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.54 mysqld                                                                  
 1793 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.00 mysqld                                                                  
 1794 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.00 mysqld                                                                  
 1809 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.00 mysqld                                                                  
 1812 mysql     20   0  539m  56m 7200 S   0.0  1.5   0:00.13 mysqld

Điều gì đang xảy ra và tôi nên tin vào điều gì?


Câu hỏi ở đâu?
Vinz

Câu trả lời:


10

Họ đang thực sự hiển thị cùng một thông tin theo những cách khác nhau. Đây là những gì -f-Lcác tùy chọn để pslàm (từ man ps, nhấn mạnh của tôi):

-f Làm danh sách đầy đủ định dạng. Tùy chọn này có thể được kết hợp với nhiều tùy chọn kiểu UNIX khác để thêm các cột bổ sung. Nó cũng làm cho các đối số lệnh được in. Khi được sử dụng với -L, các cột NLWP (số lượng luồng) và LWP (ID luồng) sẽ được thêm vào.

-L Hiển thị chủ đề, có thể với các cột LWP và NLWP.

TID TID số duy nhất đại diện cho một thực thể có thể phân tán (bí danh lwp, spid). Giá trị này cũng có thể xuất hiện dưới dạng: ID tiến trình (pid); ID nhóm quy trình (pgrp); ID phiên cho người lãnh đạo phiên (sid); ID nhóm luồng cho người lãnh đạo nhóm luồng (tgid); và ID nhóm quy trình tty cho người lãnh đạo nhóm quy trình (tpgid).


Vì vậy, pssẽ hiển thị ID luồng trong LWPcột trong khi PIDcột là định danh quy trình thực tế .

topmặt khác, liệt kê các chủ đề khác nhau trong PIDcột mặc dù tôi không thể tìm thấy một đề cập rõ ràng về điều này trong man top.


2

Nó chỉ là một sự khác biệt trong cách trình bày. Nhìn vào LWPcột trên của bạn psđầu ra - LWPLight WTám Process. Hạt nhân có thể phân biệt giữa một quy trình đầy đủ và một luồng, nhưng nó vẫn phải lên lịch cho chúng một cách độc lập (đó là mục đích của một luồng) với cùng một cơ chế mà nó sử dụng để lên lịch các tiến trình và do đó trình lập lịch biểu của id phải là duy nhất, đạt được tốt nhất bằng cách có một nhóm quy trình và id luồng cho mọi mục đích và sử dụng các cách khác để phân biệt hai loại.


-2

Bạn thấy quy trình cha 1424, một quy trình đã tạo một hoặc nhiều quy trình con ( the other PIDs).


1
Chúng không phải là các tiến trình con, chúng là các luồng nhân của cùng một tiến trình.
Gilles 'SO- ngừng trở nên xấu xa'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.