[DB] 백그라운드로 sh 파일 실행하기 (nohup 명령어)

SSuyn·2023년 7월 11일
0

DataBase

목록 보기
8/10
post-thumbnail

리눅스 환경에서 프로그램을 백그라운드로 돌리는 방법에 대하여 알아보자!
회사 세션은 건들이지 않으면 얼마 안있다가 꺼져버린다. 그래서 데이터파일을 막 100개씩 추가하고 싶으면 일일이
alter tablespace DATAFILE01 add datafile size 30g autoextend off;
명령어를 100개 쳐야한다...! 세션이 끊기더라도 백그라운드로 sh 파일로 만들어서 돌릴수 없나 사수님한테 물어보니까 nohup을 이용하여 하면 된다고 하더라!

nohup 이란

nohup은 no hang up의 약자로 “끊지마!” 를 뜻한다.
nohup 명령어는 리눅스에서 프로세스를 실행한 터미널의 세션 연결이 끊기더라도 프로세스가 백그라운드에서 계속 동작되도록 해주는 명령어이다.

기본적으로 터미널에서 세션 로그아웃이 발생하면, 리눅스는 해당 터미널에서 실행한 프로세스들에게 HUP signal이 전달하여 종료시키게 되는데, 이 HUP signal 을 프로세스가 무시하도록 하는 명령어가 nohup이란 이름이다.

nohup 기본 명령어 사용법

add_datafile.sh 쉘파일을 nohup을 이용하여 돌린다고 전제할 것 이다.

nohup 파일 권한 설정

우선, nohup명령어를 사용하려면 파일의 권한이 755(rxwrx-rx-) 이상이여야 한다.

chmod 755 add_datafile.sh

nohup 파일 실행

nohup [실행하고자 하는 파일 이름] &

nohup .out 파일 생성하지 않는 명령어
nohup [실행하고자 하는 파일 이름] 1>dev/null 2>&1 &

nohup ./add_datafile.sh &

nohup 실행 확인

nohup 실행 파일을 확인하고 싶다면

ps -ef | grep add_datafile.sh

nohup 종료

nohup 명령어로 실행을 시키면, 프로세스는 대기 상태가 되고 Ctrl+C 누르면 종료된다. 그리고 해당 스크립트 프로그램의 표준 출력이 nohup을 실행시킨 경로에 nohup.out 파일이 출력된다. 터미널이 종료되어도 표준 출력은 nohup.out 파일에 계속해서 기록되기 때문에 프로세스의 상태 확인 가능하다.
하지만 필요 이상의 로그가 nohup.out 파일에 찍히면 디스크 공간 낭비하기 때문에 꼭 필요한 로그만 출력하거나 nohup.out 파일 생성하지 않는 것이 좋다.

nohup 실행 종료하기

kill -9 [pid번호]
profile
한량 DBA

0개의 댓글