리눅스 환경에서 백그라운드로 프로세스를 실행시키기 위해서는 주로 nohub과 &(앰퍼샌드 기호)를 사용한다.
nohub과 & 사용법에 대해서 정리하겠다.
1. nohub / &(앰퍼샌드)
nohub과 & 모두 백그라운드에서 실행하도록 할 때 사용한다. 이 둘의 차이점을 보자.
nohub
nonhub은 "no hang up" 줄임말로 특정 프로세스를 백그라운드로 실행시킨 후 현재 연결되어 있는 터미널 세션과 연결이 끊어져도 작업이 계속 실행되도록 보장한다.
&
&는 특정 프로세스를 백그라운드로 실행시킨 후 현재 연결되어 있는 터미널 세션과 연결이 끊어지면 프로세스도 함께 종료된다.
하지만 세션이 끊어져도 프로세스가 종료되지 않을 경우에는 옵션이 default로 적용되어 있기 때문이다. 옵션을 변경하게 되면 터미널과 세션이 끊어지면 프로세스도 함께 종료된다.
아래 명령어는 shell 옵션을 조회할 수 있다. 위 명령어를 입력한 뒤 "huponexti off"라고 나오면 세션이 종료되더라도 프로세스는 종료되지 않는다.
$ shopt | grep hupnexit
2. nohub 사용법
a. nohub 사용 방법
$ nohub "실행파일"
$ nohub ./date.sh # 예시
이렇게 실행시키면 실행파일은 백그라운드에서 동작하며, 세션이 종료되더라도 정상적으로 동작한다. 실행파일은 반드시 실행 권한을 가지고 있어야 한다.
기본적으로 실행파일에서 발생한 출력 로그들은 기본적으로 실행시킨 경로의 nohup.out에 출력된다.
다른 파일에 출력 로그를 남기고 싶을 경우에는 직접 지정해서 사용할 수 있다.
$ nohub "실행파일" >> "출력 로그를 남길 파일"
$ nohub ./date.sh >> date.txt # 예시
>> 사용할 경우에는 date.txt에 로그를 누적해서 저장한다.
> 사용할 경우에는 date.txt에 로그를 덮어쓴다.
3. & 사용법
& 사용법 또한 간단하다.
$ "실행파일" &
$ date.sh & # 예시
이렇게 실행시키면 실행파일은 백그라운드에서 동작하며, 세션이 종료되면 실행파일도 함께 종료한다. 마찬가지로 실행파일은 반드시 실행 권한을 가지고 있어야 한다.
ps -ef | grep "실행파일" 을 입력하면 백그라운드로 동작하는지 확인할 수 있다.
4. 프로세스 종료하는 방법
백그라운드로 실행 중인 프로세스를 종료하기 위해서는 프로세스 아이디(PID)가 필요하다.
아래 명령어를 입력하면 프로세스 아이디를 조회할 수 있다.
ps -ef | "실행파일"
아래 명령어를 입력하면 백그라운드로 동작 중인 프로세스가 종료된다.
kill "PID"
'DevOps > Linux' 카테고리의 다른 글
[Linux] SFTP로 파일 전송하기 (0) | 2024.01.02 |
---|---|
[Linux] 프로세스 모니터링을 위한 supervisor 적용 과정 (0) | 2023.12.28 |
[Linux] 리눅스에서 JAVA 애플리케이션 실행하기 (0) | 2023.09.16 |
[Linux] crontab과 스케줄링 (0) | 2023.09.15 |
[Linux] Shell Scrip 작성 및 실행 (0) | 2023.09.15 |