본문 바로가기

Linux

[Linux] 리눅스 백그라운드 실행 및 관리

리눅스에서 서비스(백그라운드) 실행 및 관리방법

 

서비스 실행하기

${프로세스명}&

 

명령어 뒤에 &을 붙이면 백그라운드에서 작업을 실행함

사용자가 터미널 세션을 끊으면 백그라운드 중인 작업도 같이 종료됨



$nohup {프로세스명} &

nohup으로 실행하면 사용자가 터미널 세션을 끊어도 작업이 종료되지 않음 

nohup으로 실행하면 실행한 위치에 nohup.out 파일이 생성되는데, 명령어 실행 시 발생하는 표준 출력을 nohup.out에 입력함

 

백그라운드 프로세스 확인

ps

 

현재 실행되고 있는 모든 백그라운드 프로세스 확인

ps -e

 

 

 

현재 실행되고있는 모든 백그라운드 프로세스 상세 확인

ps -ef

 

현재 실행되고있는 백그라운드 프로세스 중 {키워드}를 포함하고 있는 백그라운드 프로세스 확인

ps -ef|grep {키워드}

 

 

ps 명령어 옵션

옵션 의 미 
a  터미널과 연관된 프로세스 출력.
 보통 x 옵션과 연계하여 모든 프로세스를 출력할때 사용
e  프로세스에 관련된 환경 변수 정보 출력
f  프로세스간 상속관계를 트리형식으로 출력
l  프로세스의 정보를 길게 보여줌
u  프로세스의 소유자를 기준으로 출력
x  터미널에 종속되지 않는 프로세스 출력
p  지정한 프로세스 출력
-a   세션리더를 제외하고 터미널에 종속되지 않은 모든 프로세스 출력
-A  모든 프로세스 출력
-C [process]  뒤에 입력된 프로세스만 출력
-e  모든 프로세스 출력
-f  유닉스 스타일로 출력해줌
-o [value]  출력 포맷을 지정함, 값에는 pid, tty, time 등을 지정한다.

 

서비스 종료하기

시그널

시그널은 프로세스 사이의 통신 수단으로 프로세스에 메시지를 보내 프로세스를 제어함

명령어를 실행하여 프로세스를 시작하고 그 프로세스를 제어하기 위하여 사전에 정의된 시그널이 존재함

$ kill -l

 

 

주요 시그널

번호 시그널  의 미 
1 SIGHUP  터미널에서 접속이 끊겼을때 보내지는 시그널, 변화된 내용을 적용하기 위해 재시작 할 때 사용된다. 
2 SIGINT  인터럽트 시그널로 실행을 중지시킴, Ctrl + c 입력시 보내지는 시그널 
3 SIGQUIT  실행 중지 시그널로서 Ctrl + \ 입력시 보내지는 시그널 
9 SIGKILL  프로세스를 강제로 종료 시키는 시그널 
15 SIGTERM  kill의 기본 시그널로 정상 종료 시키는 시그널 
18 SIGCONT  시그널에 의해 정지된 프로세스를 다시 실행시키는 시그널 
19 SIGSTOP  정지 시그널 
20 SIGTSTP  일시정지 시키는 시그널로서 Ctrl + z 입력시 보내지는 시그널 

 

 

ps 명령어로 종료시킬 프로세스의 pid를 확인해서 kill 명령어로 종료시킴

$ kill [options] [pid]

$ kill -9 {pid} # pid를 시그널 번호 9(KILL) 전송해서 죽임

 

kill 명령어 옵션

옵션 의미
-signal, -s signal 지정한 시그널을 보냄
-l 사용 가능한 시그널의 목록을 출력

 

 

프로세스 여러개 종료하기

$ killall [option] [signal] 프로세스
옵션 의 미 
-l   시그널의 종류 출력 
-s   시그널의 이름을 지정하는 옵션 
-v   시그널 전송 결과를 출력 
-w   시그널을 받은 프로세스들이 종료 될때까지 대기