Gunakan -o
bendera.
Untuk daftar hanya proses Anda sendiri
ps -o command
Untuk membuat daftar semua proses sistem
ps -e -o command
Ini bukan satu-satunya cara untuk membuat daftar perintah, mereka dapat dicetak dengan bendera baris perintah, atau hanya sebagai executable (yang merupakan command
pilihan apa ).
Dari komentar saya di bawah ini jawabannya:
perintah, args, dan cmd semua memberikan perintah penuh. Sebenarnya man page menyatakan perintah dan cmd adalah alias untuk args, dengan - flags disertakan. Comm memberikan nama hanya exacutable. Alias itu adalah ucmd dan ucomm. Saya salah membaca tentang opsi AIX, yang sebenarnya dapat ditentukan dengan format seperti printf,% a untuk args,% c untuk comm
Lihat man ps
untuk info lebih lanjut tentang penggunaan dan opsi format yang tersedia
Pendekatan terprogram akan sedikit berlebihan, karena ps
sudah memberi kita opsi pemformatan, tetapi bisa dilakukan dengan awk
, yang jauh berguna ketika berhadapan dengan output yang dikolomisasi.
ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
Namun perlu dicatat, bahwa kode ini rusak jika nama pengguna berisi spasi, misalnya john doe
. Ini dapat diubah dengan menambahkan gsub
fungsi yang akan menghilangkan nama pengguna Anda dari ps
daftar. Namun, jika ada banyak pengguna yang masuk ke sistem, itu mungkin sulit untuk menghapus semua nama pengguna dari output. Dengan demikian, Anda dapat melihat bahwa -o
bendera jauh lebih disukai.
Catatan tambahan, sudo
tidak perlu untuk mendaftar semua prosesps
ps -eo command
&ps -eo comm
? Satu-satunya perbedaan yang saya temukan adalah dicommand
output adalah seperti:[kthreadd]
sedangkan dicomm
output adalah sebagai berikut:kthreadd
. Apakah ini menandakan sesuatu?comm
format AIX , sedangkancommand
format gaya GNU standar. AIX adalah sistem lain * seperti NIX, sehingga opsi tersebut dapat digunakan untuk kompatibilitas. Jika tidak, tidak ada perbedaandiff <(ps -eo comm) <(ps -eo command)
dan sepertinya ada keributan di sana, bisakah Anda mengklarifikasi?awk
solusinya rusak jika nama pengguna berisi spasi (di sini ); mungkin juga adilps aux | awk '{ for(i=11;i<=NF;i++) {printf $i" "}; printf "\n" }'
?command
,,args
dancmd
semua memberi perintah penuh. Bahkan nyatanya halaman manualcommand
dancmd
alias untukargs
, dengan-
bendera disertakan. Thecomm
memberi nama exacutable saja. Alias untuk ituucmd
danucomm
. Saya salah membaca tentang opsi AIX, yang sebenarnya dapat ditentukan dengan format seperti printf,% a untuk args,% c untuk commCara yang lebih umum. Kami menentukan kolom perintah. Dengan cara ini, tidak masalah sakelar mana yang digunakan
ps
.Output sampel
Dan bagaimana
pstree
?Output sampel
sumber
Saya menemukan cara yang sulit untuk mencapai ini dari sini
sudo ps aux | rev | cut -d ' ' -f 1 | rev
rev
membalikkan outputps
dan kemudian memotong dapat membantu Anda membatasi bidang pertama (yang merupakan yang terakhir!) dan kemudian membalikkannya lagi ...bekerja untukku.
sumber
ps aux
itu sendiri akan terdaftar sebagaiaux
.sudo
tidak diperlukan untukps
dan perintah memotong banyak perintah, jadi itu tidak terlalu akurat, jika Anda ingin bekerja dengan colum, gunakanawk
itu jauh lebih baik untuk tugas itu. Bahkan, perintah yang tepat adalahps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
awk
harus bekerja.sudo ps
dan saya pikirawk
akan terlalu rumit untuk tugas ini dan keluar bersamacut
. Bagaimanapun, bukankah seharusnya Anda memperbarui jawaban Anda dengan kode itu sehingga OP dapat menerimanya?ps
itu tidak bisa diurai secara membabi buta. Saya pikir satu-satunya metode yang aman di sini adalahps -e -o
.