ps, PID, PPID, PGID ve SID'yi toplu olarak görüntülemek için geçiş yapar


38

Ps -A, aux, ef ve benzeri farklı anahtar türleriyle denedim ancak bana İşlem Kimliğini (PID), Ana İşlem Kimliğini (PPID), İşlem Grubunu söyleyecek doğru anahtar kombinasyonunu bulamıyorum. Kimlik (PGID) ve aynı çıktıdaki bir işlemin Oturum Kimliği (SID).


ps -o <field>,<field>,.... Man sayfasının detayları var.
Mikel

@Mikel Ben zaten ubuntu çalışmadığını gördüm 12.04
JohnMerlino

1
İyi çalışması gerekir. Nasıl çalıştırıyorsun? (Not bu -okontroller çıkış biçimi, ama yine de isteyebilirsiniz -A, -e, -pvb seçmek için hangi göstermek için işler.)
Mikel

Yanıtlar:


64

Hadi bakalım:

$ 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

İşlemin adını da görmek istiyorsanız, şunu kullanın:

$ 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" ve "head" ne yapar?
JohnMerlino

3
@JohnMerlino "comm" komut adını yazdırır ve headfarklı bir komuttur, psbununla ilgisi yoktur , sadece ilk N (varsayılan olarak 10) satırını yazdırır, cevabımın boyutunu sınırlamak için burada kullandım. Ps hakkında bilmeniz gereken her şey açıklanmıştır man ps.
terdon

commtam komutu basmıyor. Örneğin, eğer python foo.pypythonpython foo.py
koşarsanız

1
Evet, bu yüzden komutun adını yazdığını söyledim . Komutu python, foo.pykomutun argümandır. cmdArgümanları da istiyorsan dene .
terdon

13

Deneyin

ps -efj | less

Spesifik olarak, belirli bir ProcessName veya PID için PID / PGID / PPID / SID’yi bulmak istiyorsanız, Deneyin:

ps -efj | grep ProcessName

ps -efj | grep PID

VEYA daha iyi biçimlendirilmiş çıktı için şunu deneyin:

ps -ejf | egrep 'STIME|ProcessName'

ps -ejf | egrep 'STIME|pid'

Examples:

ps -ejf | egrep 'STIME|http'

ps -ejf | egrep 'STIME|1234'

NUMUNE:

[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
1234'ün PID olduğunu ve onunla ilişkili PPID, PGID, SID ve CMD'yi bilmek istediğinizi varsayalım
CentOS / RedHat 6.x ve 7.x'te test edilmiştir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.