> 프로세스 관리 > disown

disown: 실행 중인 작업의 소유권 포기 (nohup 깜빡했을 때)

이미 실행 중인 작업을 현재 쉘의 작업 목록에서 제거하여, 터미널을 닫거나 로그아웃해도 해당 작업이 종료(SIGHUP)되지 않게 보호합니다. 보통 실수로 nohup 없이 명령어를 실행했을 때 사용합니다.

disown이란 무엇인가?

Bash 같은 쉘은 터미널이 닫힐 때 자신이 관리하던 모든 작업(Job)들에게 '종료해!'라는 신호(SIGHUP)를 보냅니다. `disown`은 특정 작업을 쉘의 관리 목록(족보)에서 파버려서, 쉘이 종료될 때 같이 죽지 않도록 만듭니다.

언제 사용하나요?

  • nohup을 깜빡했을 때: 오래 걸리는 작업을 그냥 실행했는데, 퇴근은 해야 하고 작업은 끄면 안 될 때 사용합니다.
  • 작업 흐름: 실행 중 중지(Ctrl+z) -> 백그라운드 전환(bg) -> 소유권 포기(disown) 순서로 사용합니다.
  • 쉘 내장 명령어: 별도 프로그램이 아니라 쉘(Bash, Zsh 등)에 내장된 기능입니다.

주요 옵션 (Shell)

옵션 없이 사용하면 가장 최근 작업을 대상으로 합니다. 특정 작업을 지정하려면 '작업 번호(Job ID)'를 사용합니다.

1. 기본 사용 및 대상 지정

2. 상태 보존

3. 도움말

생성된 명령어:

명령어를 조합해 보세요.

설명:

`disown` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 시나리오 예시 (필수 패턴)

disown은 단독으로 쓰이기보다 `Ctrl+z`, `bg`와 함께 세트로 쓰입니다.

상황 가정: nohup 없이 백업을 돌려버렸다!

`backup.sh`를 그냥 실행했는데, 1시간이 걸린다고 합니다. 터미널을 끄면 백업도 멈춥니다. 이때 구조하는 방법입니다.

구조 3단계 (Step-by-Step)

아래 순서대로 키보드를 입력하세요.

  • 1. 실행 중인 터미널에서 `Ctrl + z` 를 눌러 작업을 일시 정지시킵니다.
  • 2. `bg` 명령어를 입력해 멈춘 작업을 백그라운드에서 다시 돌립니다.
  • 3. `disown` 명령어를 입력해 쉘과의 연결을 끊습니다.

특정 작업만 골라서 분리하기

disown %2

`jobs`로 확인한 2번 작업만 분리합니다.

목록에는 남겨두기 (-h)

disown -h %1

`jobs` 명령어 쳤을 때 보이기는 하지만, 터미널 꺼도 죽지는 않게 만듭니다.

설치

disown은 Bash, Zsh 같은 쉘에 기본 내장(Built-in)된 명령어이므로 별도 설치가 필요 없습니다.

설치 불필요

리눅스 터미널을 쓰고 계시다면 이미 설치되어 있습니다.

팁 & 주의사항

유용한 팁

  • Job ID vs PID: `disown`은 프로세스 ID(PID, 예: 1234)가 아니라 쉘의 작업 번호(Job ID, 예: %1)를 사용합니다. `%`를 붙여야 함을 잊지 마세요.
  • 출력 확인 불가: `nohup`은 `nohup.out` 파일을 만들어주지만, `disown`은 이미 실행된 녀석을 떼어내는 것이라 출력이 공중분해될 수 있습니다. 출력을 보존하려면 `gdb` 등을 써야 하므로 복잡해집니다.
  • 확인 방법: disown 후에는 `jobs` 목록에서 사라집니다(옵션 안 썼을 시). 프로세스가 살아있는지 보려면 `ps -ef | grep 명령어`로 확인해야 합니다.

관련 명령어

기능적으로 유사하거나 함께 자주쓰이는 명령어들입니다.



동일 카테고리 명령어