ps aux untuk nama pengguna yang panjang menunjukkan tanda plus


18

Saya mencoba untuk mendapatkan output ps auxsehingga terlihat seperti:

giovanni     28331  4381  0 15:43 ?       00:00:00 sshd: giovanni@pts/1
giovanni     28346 28331  0 15:43 pts/1   00:00:00 -bash
giovanni     28646 28346  0 15:43 pts/1   00:00:00 ./example.sh

Namun, menjalankan perintah ini di Ubuntu 14.04 LTS, sebagai gantinya memberikan hal berikut:

giovan+     28331  4381  0 15:43 ?       00:00:00 sshd: giovanni@pts/1
giovan+     28346 28331  0 15:43 pts/1   00:00:00 -bash
giovan+     28646 28346  0 15:43 pts/1   00:00:00 ./example.sh

Jadi bagaimana saya bisa menghapus tanda plus ini dan menginstruksikan perintah untuk menunjukkan kepada saya seluruh nama pengguna?


1
Itu menarik, nama pengguna saya sama panjang dan tidak terpotong
Jamie

Jawaban:


24

Menurut man ps, ps -auxadalah "Untuk melihat setiap proses pada sistem menggunakan sintaks standar (UNIX) ". Saya tidak menemukan cara untuk mengatur format yang ditentukan pengguna untuk menampilkan output.

Di BSD sintaks Namun, Anda dapat mengatur lebar kolom seperti: user:<width>. Berikut ini akan memberi Anda informasi yang sama, mengatur lebar kolom nama pengguna menjadi 20 (atau nilai lainnya):

ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm

output dengan (sangat) nama panjang:

USER                   PID %CPU %MEM    VSZ   RSS TT       STAT  STARTED     TIME COMMAND

.........................................................................................

root                  3826  0.0  0.1  77828  4788 ?        Ss   08:15:55 00:00:00 cupsd
lp                    3831  0.0  0.0  63156  2224 ?        S    08:15:56 00:00:00 dbus
lp                    3832  0.0  0.0  63156  2220 ?        S    08:15:56 00:00:00 dbus
root                  4822  1.7  5.1 446964 210416 tty8    Ss+  08:38:00 00:03:27 Xorg
root                  4923  0.0  0.1 174652  4412 ?        Sl   08:38:02 00:00:00 lightdm
tantemarievanhier     5181  0.0  0.1 544216  4796 ?        Sl   08:38:08 00:00:00 gnome-keyring-d
tantemarievanhier     5228  0.0  0.0  40492  2740 ?        Ss   08:38:08 00:00:00 init
tantemarievanhier     5369  0.0  0.0  41816  3064 ?        Ss   08:38:09 00:00:02 dbus-daemon
tantemarievanhier     5376  0.0  0.0  10616   316 ?        Ss   08:38:09 00:00:00 ssh-agent

mengatur lebar kolom ke 7:

ps axo user:7,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm

USER     PID  %CPU %MEM    VSZ   RSS TT       STAT  STARTED     TIME COMMAND

.........................................................................................

tantem+  6623  0.0  0.0 287228  3820 ?        Sl   08:39:00 00:00:00 unity-webapps-s
tantem+  6679  0.0  0.4 676856 18640 ?        Sl   08:39:20 00:00:00 update-notifier
tantem+  6721  0.0  0.1 541224  7056 ?        Sl   08:40:20 00:00:00 deja-dup-monito
tantem+  6743  0.0  0.5 810616 21888 ?        Sl   08:41:55 00:00:00 unity-scope-hom
tantem+  6758  0.0  0.2 717256 10352 ?        Sl   08:41:55 00:00:00 unity-files-dae
tantem+  6760  0.0  0.5 607208 22920 ?        Sl   08:41:55 00:00:00 unity-scope-loa
tantem+  6784  0.0  0.2 350676  9060 ?        Sl   08:41:56 00:00:00 unity-music-dae

Untuk alasan kenyamanan, Anda dapat menambahkan baris berikut ke ~/.bashrc:

alias psaux='ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm'

jadi itu ps auxadalah output "normal", sementara psauxmemberi Anda versi nama-lengkap.

catatan:

Anda juga dapat menampilkan nama lengkap dengan memindahkan kolom nama ke posisi terakhir:

ps axo pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm,user

memberi:

 PID %CPU %MEM    VSZ   RSS TT       STAT  STARTED     TIME COMMAND         USER


 5181  0.0  0.1 544216  4548 ?        Sl   08:38:08 00:00:00 gnome-keyring-d tantemarievanhier
 5228  0.0  0.0  40492  2668 ?        Ss   08:38:08 00:00:00 init            tantemarievanhier
 5369  0.0  0.0  41816  3032 ?        Ss   08:38:09 00:00:07 dbus-daemon     tantemarievanhier

Cara menampilkan output, mengatur lebar kolom USER secara otomatis

Ada cara lain yang lebih halus untuk mengatur lebar kolom USER. Jika kita menjalankan perintah dengan nilai yang sangat tinggi untuk lebar kolom USER, kita bisa menggunakan skrip kecil untuk mengatur ulang garis, menyesuaikan lebar kolom dengan nama pengguna terpanjang.

Untuk melakukannya

  • Salin skrip di bawah ini, rekatkan ke file kosong, simpan sebagai psaux_alternative.py.
  • Jadikan itu dapat dieksekusi
  • Tambahkan baris ke ~/.bashrc:

    alias psaux='/path/to/psaux_alternative.py`
    

Kemudian, berjalan psauxdi jendela terminal akan menampilkan output dengan lebar otomatis dari kolom USER.

Naskah:

#!/usr/bin/env python3

import subprocess

command = "ps axo user:30,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm"
l = subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").split("\n")
minlen = sorted(set([30-len(item.split(" ")[0]) for item in l]))[0]
for line in l:
    print(line[:30-minlen]+line[30:])

Ini adalah solusi yang sangat bagus, terima kasih banyak Yakub! Namun, apakah Anda pikir ada cara yang tepat untuk melakukan ini? Maksud saya apa yang baru saja kami lakukan adalah meningkatkan lebar kolom, tetapi apakah tidak ada cara untuk membiarkan Ubuntu secara otomatis menambah lebar ini menurut panjang nama pengguna terbesar?
Giovanni Mounir

@GiovanniMounir sekarang itu pertanyaan yang menarik! Dan ya, itu seharusnya mungkin. Saya akan kembali ke sana besok atau lusa paling lambat.
Jacob Vlijm

2
@GiovanniMounir Saya membuat skrip kecil untuk melakukan pekerjaan itu. Menjalankannya akan menampilkan lebar keluaran otomatis lebar dari kolom USER.
Jacob Vlijm

Penanganan yang luar biasa, Yakub! Terima kasih banyak!
Giovanni Mounir

@JacobVlijm Sangat bagus! Saya sekali lagi terkesan dengan skrip Anda untuk setiap tujuan ...; D
Byte Commander

1

Saya mengalami masalah yang sama. Manual ps memberitahu kita tentang WIDE-WCHAN-COLUMN. Percobaan cerdas dengan WIDE-RUSER-COLUMN paralel yang dibentuk berakhir dengan hasil yang diinginkan:

$ ps -e -o ruser=WIDE-RUSER-COLUMN

Bisakah Anda menambahkan beberapa konteks dalam jawaban Anda yang menjelaskan perintah? selamat datang dan terima kasih
αғsнιη

@KasiyA Telah diedit.
Byte Commander

@ByteCommander saya mengerti. BTW, saya bukan orang yang menurunkan
unduhan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.