백그라운드 작업 확인하기 — jobs 명령어

터미널에서 &로 뭔가를 백그라운드에 올려두고 잊어버린 적이 있습니다. ps aux | grep ...로 찾으려 하면 시스템 전체 프로세스가 쏟아집니다. 현재 세션에서 내가 올린 것만 보고 싶을 때 쓰는 게 jobs입니다.

jobs는 현재 셸 세션의 백그라운드 작업 목록을 보여줍니다. Windows 작업 표시줄처럼 "이 세션에서 내가 실행한 것 중 지금 백그라운드에 있는 것"만 보여줍니다. 시스템 전체가 아닙니다.

기본 사용

백그라운드 작업을 하나 만들어봅니다.

sleep 100 &

&는 명령어를 현재 세션의 백그라운드로 보냅니다. 셸은 바로 다음 입력을 받을 수 있습니다.

jobs를 실행하면 이렇게 나옵니다.

jobs
[1] + 12345 Running sleep 100 &

각 필드의 의미입니다.

필드 값 의미
[1] 작업 번호 fg %1, kill %1 등에서 사용
+ 현재 기본 작업 fg, bg 기본 대상
12345 Process Group ID -l 옵션에서 표시됨
Running 상태 아래 참조
sleep 100 & 명령어 실행한 명령 그대로

+는 다음 fg/bg 호출의 기본 대상, -는 + 작업이 종료되면 기본이 될 다음 후보입니다.

상태값

jobs 출력에서 볼 수 있는 상태입니다.

상태 의미
Running 실행 중
Done 정상 종료 (exit 0)
Done(code) 비정상 종료 (exit code)
Stopped SIGTSTP로 중단 (Ctrl+Z)
Stopped (SIGSTOP) SIGSTOP으로 중단
Stopped (SIGTTIN) 백그라운드에서 터미널 입력 대기
Stopped (SIGTTOU) 백그라운드에서 터미널 출력 대기

옵션

jobs [-l | -p] [job_id...]
  • -l: Process Group ID 포함해서 출력
  • -p: Process Group ID만 출력 (스크립트에서 PID 추출할 때 유용)

job_id를 지정하면 해당 작업만 표시합니다. 생략하면 전체를 보여줍니다.

zsh 버그

Created :

Modified :

댓글 보기