Uzun karakterli kullanıcı adları için ps aux artı işareti gösterir


18

Ben ps auxöyle görünüyor ki bir çıktı almaya çalışıyorum :

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

Ancak, bu komutu Ubuntu 14.04 LTS'de çalıştırmak, bunun yerine aşağıdakileri verir:

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

Peki bu artı işaretlerini nasıl kaldırabilir ve komutun yerine bana tüm kullanıcı adını göstermesini nasıl söyleyebilirim?


1
Bu ilginç, kullanıcı adım aynı uzunlukta ve kesilmemiş
Jamie

Yanıtlar:


24

Göre man ps, ps -auxbir "kullanarak sistemde her süreci görmek için standart (UNIX) sözdizimi ". Çıktıyı görüntülemek için kullanıcı tanımlı bir biçim ayarlamanın bir yolunu bulamadım.

In BSD sözdizimi ancak, gibi sütunun genişliğini ayarlayabilirsiniz: user:<width>. Aşağıdakiler, kullanıcı adı sütun genişliğini 20 (veya başka bir değer) olarak ayarlayarak size aynı bilgileri vermelidir:

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

(çok) uzun isim ile çıktı:

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

sütun genişliğini 7 olarak ayarlama:

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

Kolaylık nedeniyle, aşağıdaki satırı ekleyebilirsiniz ~/.bashrc:

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

yani bu ps aux"normal" çıktıdır, psauxtam ad sürümünü verir.

Not:

Ad sütununu son konuma taşıyarak tam adı da gösterebilirsiniz:

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

verir:

 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

Çıktı nasıl görüntülenir, USER sütununun genişliği otomatik olarak ayarlanır

USER sütununun genişliğini ayarlamanın daha rafine bir yolu daha vardır. Komutu USER sütun genişliği için çok yüksek bir değerle çalıştırırsak, sütun genişliğini en uzun kullanıcı adına ayarlayarak satırları yeniden düzenlemek için küçük bir komut dosyası kullanabiliriz.

Böyle yaparak

  • Aşağıdaki komut dosyasını kopyalayın, boş bir dosyaya yapıştırın, olarak kaydedin psaux_alternative.py.
  • Yürütülebilir yap
  • Aşağıdakilere bir satır ekleyin ~/.bashrc:

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

Daha sonra, psauxbir terminal penceresinde çalışmak çıktıyı USER sütununun otomatik genişliğiyle görüntüler.

Senaryo:

#!/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:])

Bu çok güzel bir çözüm, çok teşekkür ederim Jacob! Ancak, bunu yapmanın uygun bir yolu olduğunu düşünüyor musunuz? Demek istediğim az önce sütun genişliğini artırmaktı, ama Ubuntu'nun bu genişliği otomatik olarak en büyük kullanıcı adı uzunluğuna göre artırmasına izin vermenin bir yolu yok mu?
Giovanni Mounir

@GiovanniMounir şimdi bu ilginç bir soru! Ve evet, bu mümkün olmalı. Yarın ya da yarın ertesi gün geri döneceğim.
Jacob Vlijm

2
@GiovanniMounir İşi yapmak için küçük bir senaryo hazırladım. Çalıştırıldığında, USER sütununun çıkış genişliği otomatik genişliği görüntülenir.
Jacob Vlijm

Harika bir çözüm, Jacob! Çok teşekkür ederim!
Giovanni Mounir

@JacobVlijm Çok hoş biri! Senaryolarınızdan her amaç için bir kez daha etkilendim ...; D
Bayt Komutanı

1

Aynı sorunla karşılaştım. Ps kılavuzu bize WIDE-WCHAN-COLUMN hakkında bilgi verir. Paralel oluşturulmuş WIDE-RUSER-COLUMN ile yapılan akıllı bir deneme, istenen sonuçla sona erdi:

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

Lütfen cevabınıza komutu açıklayan bir bağlam ekleyebilir misiniz? welcome and thanks
αғsнιη

@KasiyA Düzenlendi.
Bayt Komutanı

@ByteCommander Anlıyorum. BTW, indiremeyen kişi değilim :( +1 onun için.
αғsнιη
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.