“Ps -u” Gerçekten Kötü Bir Sözdizimi midir?


75

IMHO ps -u, aşağıdakilerden çok daha iyi, çok kullanışlı bir çıktı gösterir ps -u $USER:

$ ps -u
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
elastic   234897  0.0  0.0 105980  1336 pts/2    S+   Oct10   0:00 /bin/bash ./run.sh collector-json-1.conf
elastic   234899 48.7  7.1 10087120 4433104 pts/2 Sl+ Oct10 2804:11 /usr/java/jdk1.7.0_09_x64/bin/java -Xmx6144m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -Djava.awt.headless=true -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatin
:

nazaran

$ ps -u $USER
    PID TTY          TIME CMD
 234897 pts/2    00:00:00 run.sh
 234899 pts/2    1-22:44:04 java
:
  1. Fakat neden "kötü sözdizimi" var? /usr/share/doc/procps-3.2.8/FAQçok yardımcı olmuyor.
  2. Aynı çıktıyı elde etmek için "uygun bir sözdizimi" ne olurdu?

Önemli olması durumunda:

$ uname -a
Linux h22k34.local 2.6.32-042stab044.17 #1 SMP Fri Jan 13 12:53:58 MSK 2012 x86_64 x86_64 x86_64 GNU/Linux

5
Ve şimdi zor kısım için: Hangi cevabı onay işareti almalı?
sjngm

Aslında kullanıcıların, karar vermelerine izin vermem gerektiğini düşündüm. Daha yüksek oylara sahip olanı almalı. Ancak, bunu daha kolay hale
getirmiyorsunuz

6
Her iki cevap da eşit derecede iyiyse, her ikisini de reddediyorum ve kullanıcıya özellikle de fark 100k'den fazla olduğunda onay işaretini daha düşük rep ile verdim.
Frank Thomas

1
@FrankThomas done :)
sjngm

SysV tabanlı sistemlerde (veya psbu şeylerden gelenleri ), sıklıkla ps -fu $USER... ps -fbiçimlendirmeye benzeyen çıktı biçimlendirme ps ualıyorum, aynı zamanda bir kullanıcı belirlediklerini de alıyorum. İkisini de aynı anda istersen diye.
lindes-

Yanıtlar:


130

Aynı çıktıyı döndüren doğru sözdizimi şöyle olur:

ps u

Modern sözdiziminin psbir karışıklık olmasının iyi bir nedeni var . Tarihsel olarak, uyumsuz iki versiyonu vardı ps. Öndeki çizgi içeren seçenekler, AT&T Unix sürümünden alınmıştır ps. Öndeki çizgi olmayan seçenekler BSD'den devralındı. psGenellikle Linux dağıtımlarının kullandığı sürüm, her iki seçenek kümesini bir araya getiren ve öncü bir çift çizgi ile başlayan kendi seçenek kümesini ekleyen GNU'dur.

Böylece, ps uBSD tarzı ve ps -u $USERAT & T tarzıdır. GNU’nun koşmanıza ve uyarı dışında, GNU’nun kötü durumdan en iyi şekilde yararlanmaya çalıştığını gösterdiği gibi çıktı almasına psizin vermesi gerçeği .ps -ups u


Aslında, karışıklık için iyi bir sebep yok. Birkaç kötü durum var ve "GNU" ve "BSD" nin iddia edilen ikilemi, Linux el kitabında öne sürülen bir yanlışlık. Bakınız unix.stackexchange.com/a/511530/5132 .
JdeBP

84

psKomut tarihsel olarak BSD ve System V Unix içinde son derece farklı bir sözdizimi vardı.

  • Gelen BSDps , useçenek (bir çizgi) bir parametre alır ve ek sütun "kullanıcı odaklı çıkışı" gösterir.

  • In sunOSps , -uopsiyon (tire ile) parametre olarak bir kullanıcı adı alır ve sadece, ama görüntü biçimini değiştirmeden o kullanıcının sahip olduğu süreçlerini kapsar.

(Başka bir yaygın örnek olarak, BSD e“ortamı göster”, SunOS -eise “herkesin süreçlerini göster” anlamına gelir.)

Linux işleri ps her iki stili de desteklemeye çalışıyor. Bu nedenle, 'çizgi' seçeneğini kullanırsanız -u, genişletilmiş sütunlar seçeneği değil , SunOS "bu kullanıcıyı filtrele" seçeneği olmasını bekler . Bu ikisi yeterince sıktır, ancak procps , İstediğinizi Yapmaya Çalışır - kullanıcı adı eksikse, BSD seçeneği sunduğunu ancak SunOS sözdizimini kullandığını varsayar.

(Aslında ps, UNIX95 , "CMD_ENV" gibi düğmelere ek olarak, belirsiz davranışların bir stil ya da başka bir şekilde yorumlanmaya zorlanmasına neden olan procps'un gerçek bir "kişilikler" tablosuna sahip olduğu pek çok farklı değişken vardı. "_XPG", "I_WANT_A_BROKEN_PS" ...)


29
"I_WANT_A_BROKEN_PS" hah.

42
... İlk başta bunun bir şaka olduğunu düşünmüştüm. Ama nooooo ...
Izkata

9
Görünüşe göre, bu tam olarak "belirsiz kullanımı" OP’nin gördüğü uyarıları gizleme seçeneği.
Grawity
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.