ps chuyển sang hiển thị chung, PID, PGID và SID


39

Tôi đã thử ps với các loại công tắc khác nhau, ví dụ: -A, aux, ef, v.v. ID (PGID) và ID phiên (SID) của một quy trình trong cùng một đầu ra.


ps -o <field>,<field>,.... Trang người đàn ông có các chi tiết.
Mikel

@Mikel Tôi thấy rằng nó đã không hoạt động trong Ubuntu 12.04
JohnMerlino

1
Nó sẽ hoạt động tốt. Làm thế nào bạn đang chạy nó? (Lưu ý rằng -ocác điều khiển định dạng đầu ra, nhưng bạn có thể vẫn muốn -A, -e, -p, vv để chọn tiến trình nào được hiển thị.)
Mikel

Câu trả lời:


66

Ở đây bạn đi:

$ ps  xao pid,ppid,pgid,sid | head
  PID  PPID  PGID   SID
    1     0     1     1
    2     0     0     0
    3     2     0     0
    6     2     0     0
    7     2     0     0
   21     2     0     0
   22     2     0     0
   23     2     0     0
   24     2     0     0

Nếu bạn cũng muốn xem tên của quy trình, hãy sử dụng:

$ ps  xao pid,ppid,pgid,sid,comm | head
  PID  PPID  PGID   SID COMMAND
    1     0     1     1 init
    2     0     0     0 kthreadd
    3     2     0     0 ksoftirqd/0
    6     2     0     0 migration/0
    7     2     0     0 watchdog/0
   21     2     0     0 cpuset
   22     2     0     0 khelper
   23     2     0     0 kdevtmpfs
   24     2     0     0 netns

"Comm" và "head" làm gì?
JohnMerlino

3
@JohnMerlino "comm" in tên lệnh và headlà một lệnh khác, không có gì để làm ps, nó chỉ in các dòng N (10 theo mặc định) đầu tiên, tôi đã sử dụng nó ở đây để giới hạn kích thước câu trả lời của mình. Tất cả mọi thứ bạn cần biết về ps được giải thích trong man ps.
terdon

commkhông in lệnh đầy đủ. Ví dụ: nếu bạn chạy python foo.py, comm sẽ chỉ hiển thị cho bạn pythonmột phần chứ không phảipython foo.py
32r34wgf3e

1
Vâng, đó là lý do tại sao tôi nói nó in tên của lệnh . Lệnh là python, những foo.pylà lập luận của lệnh. Hãy thử cmdnếu bạn muốn các đối số quá.
terdon

13

Thử

ps -efj | less

Cụ thể, nếu bạn muốn tìm hiểu PID / PGID / PPID / SID cho một ProcessName hoặc PID nhất định, hãy thử:

ps -efj | grep ProcessName

ps -efj | grep PID

HOẶC để đầu ra được định dạng tốt hơn, hãy thử:

ps -ejf | egrep 'STIME|ProcessName'

ps -ejf | egrep 'STIME|pid'

Examples:

ps -ejf | egrep 'STIME|http'

ps -ejf | egrep 'STIME|1234'

MẪU VẬT:

[ram@thinkred1cartoon ~]$ ps -ejf | egrep 'STIME|http'

UID        PID  PPID  PGID   SID  C STIME TTY          TIME CMD
root      1450     1  1450  1450  0 08:45 ?        00:00:04 /usr/sbin/httpd -DFOREGROUND
ram       3717     1  2589  2589  0 08:47 ?        00:00:00 /usr/libexec/gvfsd-http --spawner :1.3 /org/gtk/gvfs/exec_spaw/1
apache   11518  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11519  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11520  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11521  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11522  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
Giả sử 1234 là PID và bạn muốn biết PPID, PGID, SID & CMD liên quan của nó
Đã thử nghiệm trên CentOS / RedHat 6.x & 7.x
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.