본문 바로가기
Linux

[Linux] 프로세스 관리

by oncerun 2021. 8. 2.
반응형

ps 명령은 특정한 순간의 프로세스의 상태를 보여주는 것이라고 할 수 있는데, 프로세스의 수행 상황을 실시간으로 모니터링할 수 있는 명령도 필요하다.

 

프로세스 모니터링과 관리 명령 : top

 현재 실행 중인 프로세스의 상태와 시스템 자원의 동적 운영 상황을 실시간으로 확인하려면 top 명령을 사용한다.

프로세스의 상태뿐 아니라 CPU와 메모리 사용률,  시스템의 부하 등을 기본적으로 3초 간격으로 갱신하여 화면 상에 출력해 준다.

 

명령의 형식은 다음과 같다.

 

 top [options]

 

옵션 설명
-d delay 갱신 시간의 주기를 초 단위로 설정한다.
-p pids 지정된 PID를 가진 프로세스를 모니터링 한다.
-n num 프로세스의 상태를 몇 번이나 표시할 것인지를 정한다. num회를 출력한 뒤 명령은 종료된다.
-S 누적 시간 모드의 토글 모드로 수행되며 On일 때는 프로세스의 총 CPU 사용시간이 함께 수행된다. 대화식 서브 명령에서 S를 사용하면 토글 모드 On/Off할 수 있다.
-u user 지정된 사용자명 또는 EUID를 가진 프로세스를 모니터한다.

 

top명령을 종료하려면 서브 명령으로 q를 입력한다. top의 실행 중에 대화식 서브 명령으로 h를 사용하면 도움말을 출력해 준다.

 

신호 보내기 : kill

시그널은 커널이나, 프로세스가 다른 프로세스에게 비동기적으로 사건을 전달하기 위해 사용하는 기능을 의미한다. 시그널을 받은 프로세스는 해당 사건에 적절한 동작으로 반응하게 된다.

 

프로세스 간의 의사소통을 위해 시그널을 보낼 수 있다. 명령의 이름이 암시하듯이 프로세스에 대한 소유권을 가지고 있다면 kill 명령을 사용하여 수행 중인 프로세스를 죽일 수 있다. kill 명령은 지정한 프로세스에 다양한 시그널을 보내는 기능을 수행한다. 운영체제들은 프로세스가 시그널을 받아 처리할 수 있게 시그널 핸들러 집합을 제공한다.

시그널은 식별 번호와 이름으로 표시되고 구분된다.

관리자 관점에서 가장 자주 사용하는 시그널은 KILL(9) 과 TERM(15)이다.

TERM(15)은 kill 명령의 기본 시그널로 프로세스에 정리 작업 후 스스로 종료할 것을 요청하는 것이다. 다만 프로세스의 종료를 보장하지는 못한다.  각 프로세스마다 받은 시그널에 대한 처리 방법이 다를 수 있다. 그러나 KILL(9)과 STOP(19) 시그널에 대해서는 그렇게 할 수 없는데 KILL(9) 시그널은 프로세스를 강제로 종료시키는 시그널이다. kill 명령을 사용하여 시그널을 보내려면 프로세스의 ID가 필요하며 시그널이 생략되면 TERM(15) 시그널로 간주된다. 

 

 

kill 명령의 형식은 다음과 같다.

 

kill [-s signal] pids

kill [-signal] pids

 

 

번호 이름 의미
1 HUP hang-up의 의미로 터미널이 종료될 때 터미널의 포어그라운드 프로세서에 보내지는 시그널이다. 셸이 이 시그널을 받으면 종료 전에 자식 프로세스에도 이 시그널을 보낸다. 데몬 프로세스가 설정 파일을 다시 읽어 재시작하게 만들 때도 이 시그널을 사용할 수 있다.
2 INT Interrupt의 의미로 터미널에서 ctrl +c를 누르는 것과 같다. 
9 KILL KILL의 의미로 프로세스를 강제로 종료시킨다. 프로세스가 종료전에 스스로 정리할 기회가 없어 최후 수단으로 사용된다.
15 TERM Terminate의 의미로 kill 명령의 기본 시그널이다. 정상적인 종료으로 프로그램을 종료시킨다.
18 CONT Continue의 의미로 STOP시그널로 중단된 프로세스를 재개한다.
19 STOP Stop의 의미로 프로세스를 잠시 중단시킨다.
20 TSTP Terminate Stop의 의미로 터미널에서 Ctrl + z를 누른 것과 같다. Stop과 달리 무시당할 수 있다.

 

 

시그널을 보낸후 Enter키를 누르면 메시지를 볼 수 있다.

 

특정 프로세스에 여러 개의 시그널을 보내려면 killall 명령을 사용한다.

 

killall [options] [-s signal] [-u user] names

 

nohup 명령

사용자는 터미널을 열어 사용하다가 셸에서 백그라운드로 프로세스를 수행시킨다. 만약 이때 사용자가 로그아웃 하거나 터미널을 exit명령으로 창을 종료하면 백그라운드 프로세스에도 HUP 시그널이 보내져 백그라운드 프로세스도 같이 종료되도록 한다.

만약 터미널이 종료되더라도 백그라운드 프로세스가 HUP 시그널의 수신과 관계없이 스스로 종료할 때까지 계속 수행하도록 하려면 nohup명령을 사용한다. 이 명령은 명시적으로 &를 붙여 백그라운드에 보내 주어야 한다.

 

반응형

'Linux' 카테고리의 다른 글

명령어 [복습]  (0) 2022.03.10
환경 구축 (2)  (0) 2022.03.09
[Linux] 볼륨 관리  (0) 2021.08.02
리눅스 배포판  (0) 2021.08.02
리눅스 커널  (0) 2021.07.04

댓글