Linux Command: 백그라운드에서 프로세스 실행하기

Kaite.Kang·2025년 3월 16일

개요

터미널에서 실행된 프로세스가 제어 터미널과 연관되어 있으면 두 가지 문제가 발생한다.

  1. 제어 터미널에 출력 데이터 및 오류/진단 메시지가 쌓여 터미널을 사용할 수 없게 된다. 특히, 오래 걸리는 작업의 경우 문제가 된다.
  2. 터미널이 닫히면 하위 프로세스와 함께 프로세스가 종료된다.

이 문제는 제어 터미널에서 프로세스를 분리하여 백그라운드에서 실행함으로써 해결할 수 있다.

1. 터미널에서 프로세스를 완전히 분리하는 방법

프로세스를 실행하기 전인지 후인지에 따라 다음 방법으로 백그라운드에서 프로세스를 실행할 수 있다.

1-1. 실행된 프로세스를 백그라운드로 전환하는 방법

  1. [Ctrl + Z] 입력: 현재 실행 중인 프로세스를 정지시킨다.
  2. bg %<id> 입력: 정지된 프로세스를 백그라운드에서 이어서 실행한다.
  3. jobs 입력: 백그라운드에서 실행 중인 프로세스를 확인한다.
  4. disown -h 입력: SSH 연결이 끊어져도 해당 프로세스가 계속 실행되도록 설정한다.

1-2. 실행 전에 백그라운드에서 실행하는 방법

  1. <command> & 입력: 명령어 실행 시 &(앰퍼샌드) 기호를 사용하여 백그라운드에서 실행한다.
  2. jobs 입력: 실행 중인 백그라운드 프로세스를 확인한다.
  3. disown [%<id>] [-a] 입력: 프로세스를 쉘에서 분리하여 쉘 종료 후에도 작업이 계속 진행될 수 있도록 설정한다.

2. 백그라운드 프로세스 제어하기

2-1. 백그라운드에서 실행되는 프로세스 상태 확인

  • jobs: 실행 중인 백그라운드 프로세스를 확인한다.
  • jobs -l: 실행 중인 프로세스의 PID를 확인한다.
  • ps -ef | grep <프로세스 이름>: 특정 프로세스를 검색하여 확인한다.

2-2. 백그라운드 프로세스 종료

  • kill <PID>: 특정 프로세스를 종료한다.

[참고1] Ctrl-C vs Ctrl-Z

  • Ctrl-C: 현재 실행 중인 프로세스를 종료한다.
  • Ctrl-Z: 현재 실행 중인 프로세스를 정지시킨다. 이후 bg 명령을 사용하면 백그라운드에서 실행할 수 있다.
    • 종료된 프로세스는 다시 실행할 수 없지만, 정지된 프로세스는 재개할 수 있다.

[참고2] 프로세스를 백그라운드에서 포그라운드로 전환하는 방법

  • fg %<process-id>: 백그라운드에서 실행 중인 특정 프로세스를 포그라운드로 가져온다.
    • 반드시 띄어쓰기를 포함해야 한다. 예를 들어 fg%3 대신 fg %3으로 입력해야 한다.

참고

  1. How to Run Linux Commands in Background and Detach in Terminal

  2. SSH 접속 끊어도 프로세스 돌아가도록 하기

0개의 댓글