IMHO ps -u
menunjukkan output yang sangat berguna, jauh lebih baik daripada 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
:
dibandingkan dengan
$ ps -u $USER
PID TTY TIME CMD
234897 pts/2 00:00:00 run.sh
234899 pts/2 1-22:44:04 java
:
- Tapi, mengapa itu "sintaks buruk"?
/usr/share/doc/procps-3.2.8/FAQ
tidak banyak membantu. - Apa yang akan menjadi "sintaksis yang tepat" untuk mencapai hasil yang sama persis?
Dalam hal ini penting:
$ 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
ps
berasal dari hal-hal itu), saya sering menggunakanps -fu $USER
... mendapatkanps -f
pemformatan keluaran yang agak mirip denganps u
pemformatan, namun juga mendapatkan hal yang menentukan pengguna. Jika Anda menginginkan keduanya pada saat yang sama.Jawaban:
Sintaks yang benar, yang mengembalikan output yang sama , adalah:
Ada alasan bagus mengapa sintaksis modern
ps
adalah berantakan. Secara historis, ada dua versi yang tidak kompatibelps
. Opsi dengan tanda hubung utama diwarisi dari versi AT&T Unix darips
. Opsi tanpa tanda hubung utama diwarisi dari BSD. Versips
distribusi Linux yang umumnya digunakan adalah GNU yang telah menggabungkan kedua set opsi bersama, serta menambahkan set opsi sendiri yang dimulai dengan dash ganda terkemuka.Jadi,
ps u
gaya BSD dan gayaps -u $USER
AT&T. Fakta bahwa GNUps
memungkinkan Anda untuk menjalankanps -u
dan, selain dari peringatan, mendapatkan hasil yang sama sepertips u
menunjukkan bahwa GNU berusaha untuk membuat yang terbaik dari situasi yang buruk.sumber
The
ps
perintah historis memiliki sintaks yang sangat berbeda di BSD dan Sistem V Unix.Dalam BSD
ps
,u
opsi (tanpa tanda hubung) tidak mengambil parameter dan menunjukkan "output yang berorientasi pengguna" dengan kolom tambahan.Di SunOS
ps
,-u
opsi (dengan tanda hubung) mengambil nama pengguna sebagai parameter dan hanya menyertakan proses yang dimiliki oleh pengguna itu, tetapi tanpa mengubah format tampilan.(Sebagai contoh yang sangat umum, BSD
e
berarti "tampilkan lingkungan", sedangkan SunOS-e
berarti "tampilkan proses semua orang".)Linux procps
ps
mencoba mendukung kedua gaya tersebut. Jadi jika Anda menggunakan opsi 'dash'-u
, itu akan menjadi SunOS "filter this user", bukan opsi kolom yang diperluas. Keduanya cukup sering bingung, bagaimanapun, bahwa procps mencoba Melakukan Apa yang Anda Inginkan - jika nama pengguna hilang, itu akan menganggap Anda memberinya opsi BSD tetapi menggunakan sintaks SunOS.(Sebenarnya ada begitu banyak varian yang berbeda dari
ps
yang procps memiliki tabel sebenarnya "kepribadian" untuk memaksa perilaku ambigu ditafsirkan sebagai satu gaya atau yang lain atau yang lain - selain tombol-tombol seperti "UNIX95", "CMD_ENV", "_XPG", "I_WANT_A_BROKEN_PS" ...)sumber