Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 2개 있습니다.)
Linux: 34. 사용자 정보를 함께 출력하는 리눅스의 ps 명령어 사용 방법
; https://www.sysnet.pe.kr/2/0/12386

Linux: 87. ps + grep 조합에서 grep 명령어를 사용한 프로세스를 출력에서 제거하는 방법
; https://www.sysnet.pe.kr/2/0/13770




사용자 정보를 함께 출력하는 리눅스의 ps 명령어 사용 방법

기본적으로 ps 명령어는 현재 프로세스 (대개의 경우 명령행이므로 bash shell)에 대한 현황만을 보여줍니다.

$ ps
    PID TTY          TIME CMD
   2232 pts/0    00:00:00 bash
   3954 pts/0    00:00:00 ps

위에서 ps가 나오는 것은 아마도 bash 프로세스 및 그것의 fork 프로세스까지 보여주기 때문인 듯합니다. 이에 더해 사용자 계정 정보도 기본적으로는 -u 옵션으로 간단하게 해결할 수 있습니다.

$ ps -u
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
tster       2232  0.0  0.0  12172  5612 pts/0    Ss   15:44   0:00 /bin/bash
tster       3982  0.0  0.0  12784  3584 pts/0    R+   22:35   0:00 ps -u

그런데, 사실 대개의 경우 ps 명령어를 현재 시스템에 특정 프로세스가 떠 있는지 확인하려는 용도로 많이 사용할텐데요, 예를 들어 dockerd가 실행되어 있는지 확인하기 위해 "-A" 옵션을 주면 이때부터는 -u 옵션이,

$ ps -Au
error: list of users must follow -u

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).

사용자를 명시해야 하는 걸로 바뀝니다. 즉, root 사용자가 실행한 프로세스 목록을 확인하려고 하는 등의 목적으로,

$ ps -A -u root

쓸 수 있을 뿐, 특정 프로세스의 사용자 목록을 확인하는 용도로 사용할 수 없습니다. 잘은 모르지만 이럴 때는 -o 옵션으로,

finding systemd unit 'owning' a running daemon process
; https://unix.stackexchange.com/questions/225802/finding-systemd-unit-owning-a-running-daemon-process

출력 칼럼을 선택하는 식으로 처리해야 합니다.

$ ps -A -o 'user,cmd'
USER     CMD
root     /sbin/init splash
root     [kthreadd]
root     [rcu_gp]
root     [rcu_par_gp]
root     [kworker/0:0H-kblockd]
...[생략]...

또한 grep을 이용해 특정 프로세스에 대한 필터링 조건으로 사용할 수 있고,

$ ps -A -o 'user,cmd' | grep dockerd
root     dockerd --group docker --exec-root=/var/snap/docker/471/run/docker --data-root=/var/snap/docker/common/var-lib-docker --pidfile=/var/snap/docker/471/run/docker.pid --config-file=/var/snap/docker/471/config/daemon.json
tster    grep --color=auto dockerd

또는 grep의 인자에 마이너스(-) 기호 등의 escape가 필요한 경우에는 요런 식으로 실행할 수 있습니다.

$ ps -A -o 'user,cmd' | grep '\-\-'
message+ /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root     /usr/sbin/NetworkManager --no-daemon
root     /usr/sbin/irqbalance --foreground
root     /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root     /usr/lib/policykit-1/polkitd --no-debug
root     /usr/sbin/ModemManager --filter-policy=strict
root     dockerd --group docker --exec-root=/var/snap/docker/471/run/docker --data-root=/var/snap/docker/common/var-lib-docker --pidfile=/var/snap/docker/471/run/docker.pid --config-file=/var/snap/docker/471/config/daemon.json
root     /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
kernoops /usr/sbin/kerneloops --test
...[생략]...




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 10/28/2020]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 106  107  108  109  110  [111]  112  113  114  115  116  117  118  119  120  ...
NoWriterDateCnt.TitleFile(s)
11147정성태2/19/201721064오류 유형: 377. Windows 10에서 Fake 어셈블리를 생성하는 경우 빌드 시 The type or namespace name '...' does not exist in the namespace 컴파일 오류 발생
11146정성태2/19/201719673오류 유형: 376. Error VSP1033: The file '...' does not contain a recognized executable image. [2]
11145정성태2/16/201721156.NET Framework: 643. 작업자 프로세스(w3wp.exe)가 재시작되는 시점을 알 수 있는 방법 - 두 번째 이야기 [4]파일 다운로드1
11144정성태2/6/201724544.NET Framework: 642. C# 개발자를 위한 Win32 DLL export 함수의 호출 규약 (부록 1) - CallingConvention.StdCall, CallingConvention.Cdecl에 상관없이 왜 호출이 잘 될까요?파일 다운로드1
11143정성태2/5/201721969.NET Framework: 641. [Out] 형식의 int * 인자를 가진 함수에 대한 P/Invoke 호출 방법파일 다운로드1
11142정성태2/5/201729972.NET Framework: 640. 닷넷 - 배열 크기의 한계 [2]파일 다운로드1
11141정성태1/31/201724236.NET Framework: 639. C# 개발자를 위한 Win32 DLL export 함수의 호출 규약 (4) - CLR JIT 컴파일러의 P/Invoke 호출 규약 [1]파일 다운로드1
11140정성태1/27/201720006.NET Framework: 638. RSAParameters와 RSA파일 다운로드1
11139정성태1/22/201722667.NET Framework: 637. C# 개발자를 위한 Win32 DLL export 함수의 호출 규약 (3) - x64 환경의 __fastcall과 Name mangling [1]파일 다운로드1
11138정성태1/20/201720952VS.NET IDE: 113. 프로젝트 생성 시부터 "Enable the Visual Studio hosting process" 옵션을 끄는 방법 - 두 번째 이야기 [3]
11137정성태1/20/201719697Windows: 135. AD에 참여한 컴퓨터로 RDP 연결 시 배경 화면을 못 바꾸는 정책
11136정성태1/20/201718843오류 유형: 375. Hyper-V 내에 구성한 Active Directory 환경의 시간 구성 방법 - 두 번째 이야기
11135정성태1/20/201719887Windows: 134. Windows Server 2016의 작업 표시줄에 있는 시계가 사라졌다면? [1]
11134정성태1/20/201727305.NET Framework: 636. System.Threading.Timer를 이용해 타이머 작업을 할 때 유의할 점 [5]파일 다운로드1
11133정성태1/20/201723475.NET Framework: 635. C# 개발자를 위한 Win32 DLL export 함수의 호출 규약 (2) - x86 환경의 __fastcall [1]파일 다운로드1
11132정성태1/19/201734936.NET Framework: 634. C# 개발자를 위한 Win32 DLL export 함수의 호출 규약 (1) - x86 환경에서의 __cdecl, __stdcall에 대한 Name mangling [1]파일 다운로드1
11131정성태1/13/201723819.NET Framework: 633. C# - IL 코드 분석을 위한 팁 [2]
11130정성태1/11/201724381.NET Framework: 632. x86 실행 환경에서 SECURITY_ATTRIBUTES 구조체를 CreateEvent에 전달할 때 예외 발생파일 다운로드1
11129정성태1/11/201728746.NET Framework: 631. async/await에 대한 "There Is No Thread" 글의 부가 설명 [9]파일 다운로드1
11128정성태1/9/201723157.NET Framework: 630. C# - Interlocked.CompareExchange 사용 예제 [3]파일 다운로드1
11127정성태1/8/201722691기타: 63. (개발자를 위한) Visual Studio의 "with MSDN" 라이선스 설명
11126정성태1/7/201727443기타: 62. Edge 웹 브라우저의 즐겨찾기(Favorites)를 편집/백업/복원하는 방법 [1]파일 다운로드1
11125정성태1/7/201724271개발 환경 구성: 310. IIS - appcmd.exe를 이용해 특정 페이지에 클라이언트 측 인증서를 제출하도록 설정하는 방법
11124정성태1/4/201727711개발 환경 구성: 309. 3년짜리 유효 기간을 제공하는 StartSSL [2]
11123정성태1/3/201723203.NET Framework: 629. .NET Core의 dotnet.exe CLI 명령어 확장 방법 [1]
11122정성태1/3/201722676.NET Framework: 628. TransactionScope에 사용자 정의 트랜잭션을 참여시키는 방법 [2]파일 다운로드1
... 106  107  108  109  110  [111]  112  113  114  115  116  117  118  119  120  ...