개발바닥

리눅스 백그라운드 실행 본문

ETC

리눅스 백그라운드 실행

라이언 2022. 3. 6. 18:55
반응형

1. 백그라운드 실행

$ 명령어 &

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

&만 사용하여 실행했을 때, 사용자가 터미널 세션을 끊어버리면 백그라운드 중인 작업도 같이 종료된다.

 

2. 터미널 세션이 끊켜도 백그라운드에 계속 실행하는 방법

$ nohup 명령어 &

nohup 명령어를 함께 사용하면 백그라운드에서 작업함과 동시에 터미널 세션을 끊거나 컴퓨터를 종료해도 프로세스가 사라지지 않는다.

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

 

출력 문구를 생성하고 싶지 않다면 아래 커맨드를 사용하면 된다.

$ nohup 명령어 & > /dev/null

※ /dev/null 파일은 항상 비어있으며, /dev/null 에 전송되는 데이터는 버려진다. (출력이 필요없는 경우 출력으로 지정해서 사용)

 

 

파일 설명자 설명

0 표준 입력
1 표준 출력
2 표준 오류(진단) 출력

 

3. 프로세스 강제 종료 시키기

ps -ef 로 해당 쉘 pid 확인해서 kill로 종료시키면 된다.

ps -ef | grep task이름 // pid 확인
kill -9 pid번호 // 프로세스 강제 종료

 

4. 백그라운드 사용 후 pid 파일에 작성하기

nohup 명령어 > /dev/null 2>&1 & echo $! > tmp.pid

위 커맨드를 하나씩 분석해보겠습니다.

1. nohup

터미널이 종료되더라도 백그라운드로 계속 실행합니다.

2. /dev/null 2>&1

에러가 발생하면 에러 메시지를 콘솔에 출력. ( 2>&1에 의미는 표준 출력의 전달되는 곳으로 표준에러를 전달하라는 의미)

3. echo $!

백그라운드 가장 마지막에 실행되는 프로세스의 pid 값을 출력

4. > tmp.pid 

tmp.pid 에 write하라.

 

매번 느끼지만 리눅스 명령어 사용할 때 제대로 실행이 안된다면 쪼개서 체크해보고 오타가 있는지 체크하시기 바랍니다..

 

반응형
Comments