티스토리 뷰

728x90
반응형

오늘도 실습 시작과 동시에 동기분에게 꿀팁을 전수받았다.

 

두고두고 필요할 것 같아서 정리해서 저장.

 

개발 공부를 한다고 이런저런 프로그램을 돌리다 보면 백그라운드에서 먼저 돌아가고 있던 프로세스 때문에

 

예상치 못했던 충돌 오류를 만나는 일이 자주 벌어진다.

 

당연히 창을 닫았으니 종료되었을거라 믿었던 프로세스가 내 리소스를 잡아먹고 충돌을 내는 당황스러운 상황

 

.. 을 예방하기 위해 백그라운드에서 어떤 일이 진행 중인지 조회하는 방법에 대해 얕게 정리하려고 한다.

 

Process?

 

먼저 커널(Kernel)은 운영체제의 정체성을 결정짓는 기반 프로그램이다.

 

이 커널이 필요한 만큼 하드웨어 리소스를 할당해 실행할 수 있는 애플리케이션을 프로그램이라 부르며,

 

실행 중인 프로그램, 혹은 실행중인 애플리케이션의 작업 단위프로세스(Process)라 부른다.

 

추가로 프로세스보다 작은 작업 단위를 스레드(Thread)라 부르며, 하나의 프로세스는 최소한 하나의 스레드를 가진다.

 

PS(Process Status), Kill

 

ps -ef / ps -ef | grep <process name>

 

바로 본론으로 들어가자면 모든 프로세스 리스트를 조회하는 명령어 / 특정 프로세스 정보를 확인하는 명령어이다.

 

가장 많이 쓰고 또 오늘 내가 사용한 것이라 제일 위에 적는다.

% ps -ef | head -3
  UID   PID  PPID   C STIME   TTY           TIME CMD
    0     1     0   0 금12AM ??         9:47.54 /sbin/launchd
    0    59     1   0 금12AM ??         1:04.91 /usr/sbin/syslogd
    
% ps -ef | grep MacOS | head -3
  501   131     1   0 금12AM ??         2:09.75 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow console
    0   148     1   0 금12AM ??         0:14.10 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/authd.xpc/Contents/MacOS/authd
    0   316     1   0 금12AM ??         0:00.38 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp -d

뒤에 적은 | head -3(| tail -3)은 상위(하위) 세 줄만 조회하는 명령어이다.

 

kill -9 <PID> / kill -9 <process name>

 

프로세스 아이디와 이름으로(라고 하니 주문을 외우는 것 같지만) 프로세스를 (강제) 종료하는 명령어.

 

kill 뒤에 붙은 -9가 강제 종료를 요구하는 명령어이다.

 

백그라운드에 원하지 않는 앱이 돌아가고 있을때 유용하다.

 

ps

 

현재 돌아가고 있는 프로세스를 조회하는 기본 명령어.

% ps  
  PID TTY           TIME CMD
52046 ttys000    0:00.24 -zsh

터미널에 그냥 ps만 입력하면 터미널 자체의 프로세스만 실행되고 출력된다.

 

ps -f / ps -l

 

ps -fps -l을 쓰면 각각 더 자세한 정보를 얻을 수 있다.

% ps -f 
  UID   PID  PPID   C STIME   TTY           TIME CMD
  501 52046 52045   0  5:16PM ttys000    0:00.26 -zsh
  
  
% ps -l 
  UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S             ADDR TTY           TIME CMD
  501 52046 52045     4006   0  31  0  4297412   1460 -      S                   0 ttys000    0:00.26 -zsh

 

UID, PID, PPID

 

출력되는 정보 중 가장 중요한 것은 다음의 세 가지이다.

 

  • UID - User ID. 사용자 식별 번호이다.
  • PID - Process ID. 프로세스 식별 번호이다. 뒤에 프로세스 종료 시 사용된다.
  • PPID - Parent Process ID. 프로세스를 실행시킨 부모 프로세스의 PID를 가리킨다.

 

ps -e / ps -ef

 

모든 프로세스 리스트를 출력할 때 사용된다. f의 유무는 위와 같은 기능을 한다.

 

ps aux

 

모든 프로세스 목록을 리소스 점유율과 함께 출력

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함