긴 문자로 된 사용자 이름의 ps aux는 더하기 부호를 표시합니다


18

ps aux다음과 같이 출력을 얻으려고합니다 .

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

그러나 Ubuntu 14.04 LTS에서이 명령을 실행하면 대신 다음이 제공됩니다.

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

그렇다면 더하기 기호를 제거하고 대신 전체 사용자 이름을 표시하도록 명령에 지시하는 방법은 무엇입니까?


1
흥미 롭습니다. 제 사용자 이름은 길이가 같고 잘리지 않습니다
Jamie

답변:


24

에 따르면 man ps, ps -aux" 표준 (UNIX) 구문을 사용하여 시스템의 모든 프로세스를 보려면 "입니다. 출력을 표시하기 위해 사용자 정의 형식을 설정하는 방법을 찾지 못했습니다.

그러나 BSD 구문 에서는 다음 과 같이 열 너비를 설정할 수 있습니다 user:<width>. 다음은 사용자 이름 열 너비를 20 (또는 다른 값)으로 설정하여 동일한 정보를 제공해야합니다.

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

(매우) 긴 이름으로 출력 :

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

열 너비를 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

편의상 다음 줄을 추가 할 수 있습니다 ~/.bashrc.

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

그래서 그 ps aux동안 "정상"출력이며, psaux당신에게 전체 이름 - 버전을 제공합니다.

노트 :

이름 열을 마지막 위치로 이동하여 전체 이름을 표시 할 수도 있습니다.

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

제공합니다 :

 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

USER 열의 너비를 자동으로 설정하여 출력을 표시하는 방법

USER- 열의 너비를 설정하는 또 다른 더 세련된 방법이 있습니다. USER 열 너비에 대해 매우 높은 값으로 명령을 실행하면 작은 스크립트를 사용하여 행을 다시 정렬하여 열 너비를 가장 긴 사용자 이름으로 조정할 수 있습니다.

그렇게하려면

  • 아래 스크립트를 복사하여 빈 파일에 붙여넣고로 저장하십시오 psaux_alternative.py.
  • 그것을 실행 가능하게 만드십시오
  • 에 줄을 추가하십시오 ~/.bashrc:

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

그런 다음 psaux터미널 창에서 실행 하면 USER 열의 너비가 자동으로 출력됩니다.

스크립트 :

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

이것은 매우 좋은 해결 방법입니다. Jacob에게 대단히 감사합니다! 그러나 적절한 방법이 있다고 생각합니까? 방금 우리가 한 일이 열 너비를 늘리는 것이었지만 가장 큰 사용자 이름 길이에 따라 Ubuntu 가이 너비를 자동으로 늘리는 방법이 있습니까?
Giovanni Mounir

@GiovanniMounir 이제 흥미로운 질문입니다! 그리고 가능합니다. 나는 내일 또는 내일 늦게까지 다시 돌아올 것이다.
Jacob Vlijm

2
@GiovanniMounir 나는 일을 할 작은 스크립트를 만들었습니다. 이를 실행하면 USER 열의 출력 너비 자동 너비가 표시됩니다.
Jacob Vlijm

훌륭한 해결책, 야곱! 대단히 감사합니다!
Giovanni Mounir

@JacobVlijm 아주 좋은 것! 나는 다시 한번 모든 목적을 위해 당신의 스크립트에 깊은 인상을 받았습니다 ...; D
바이트 사령관

1

같은 문제가 발생했습니다. ps 매뉴얼은 WIDE-WCHAN-COLUMN에 대해 알려줍니다. 병렬로 구성된 WIDE-RUSER-COLUMN을 사용한 스마트 한 시도는 원하는 결과로 끝났습니다.

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

답변에 명령을 설명하는 컨텍스트를 추가해 주시겠습니까? 환영과 감사
αғsнιη

@KasiyA 편집되었습니다.
바이트 사령관

@ByteCommander 알겠습니다. BTW, 나는 downvoted 사람이 아닙니다 :( 그를 위해 +1.
αғsнιη
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.