[Linux] 백그라운드 작업 실습

mommers·2026년 1월 30일

Linux

목록 보기
16/59


백그라운드 작업 (jobs, bg, fg, nohup)

  • 학습: 멀티태스킹. 터미널 꺼도 돌아가게 하기.
  • 실습:
    • 프로그램 실행 중 sleep 100 Ctrl+Z로 멈추고 bg로 백그라운드 보내기.
    • jobs 목록 확인 후 fg로 다시 불러오기.

nohup ./my_script & 실행 후 터미널 끄고 다시 접속해서 프로세스 살아있는지 확인

의미:
터미널을 끄거나 로그아웃해도 죽지 않고 백그라운드에서 계속 실행하라는 명령어. 서버 개발자의 필수품임.

1. 명령어 해부

  • nohup (No Hang Up): "전화 끊지 마"라는 뜻. 터미널 연결이 끊겨도(로그아웃) 프로세스가 종료 시그널(HUP)을 무시하게 만듦.
  • & (Ampersand): 프로세스를 백그라운드(뒷단)로 보내서, 터미널을 계속 쓸 수 있게 함.

2. 실행 결과 (자동 저장)

  • 화면에 나올 출력 내용이 *nohup.out이라는 파일에 자동으로 저장됨.
  • (별도로 리다이렉션을 지정하지 않았을 경우).

3. 더 깔끔한 실전 예제

nohup.out 파일이 계속 커지면 디스크가 꽉 찰 수 있음. 로그를 관리하거나 버리는 것이 좋음.

# 테스트 스크립트 생성
cat > my_script.sh << 'EOF'
#!/bin/bash
while true; do
    echo "Running at $(date)"
    sleep 5
done
EOF

# 실행 권한 부여
chmod +x my_script.sh

# 확인
ls -l my_script.sh

로그를 버리고 싶을 때

Bash

nohup ./my_script.sh > /dev/null 2>&1 &
ps -ef | grep my_script | grep -v grep
  • 설명: 아무것도 기록하지 않고 조용히 실행만 함.

4. 종료하는 법

터미널을 껐다 켜면 jobs 명령어로 안 보일 수 있음. 직접 찾아서 죽여야 함.

Bash

ps -ef | grep my_script | grep -v grep
kill -9 [PID]


pts/o

pts/0 = 가상 터미널 (Pseudo Terminal Slave) 0번

물리적인 모니터 앞에 앉은 것이 아니라, SSH(원격)로 접속했거나 GUI 환경의 터미널 창을 띄웠다는 뜻임.

1. 해부

  • pts (Pseudo Terminal Slave): 가짜(가상) 터미널. 실제 하드웨어 장치가 아니라 커널이 소프트웨어적으로 만들어준 터미널 인터페이스.
  • /0 (Number): 접속 순서 번호.
    • 가장 먼저 접속한 창이 0.
    • 터미널을 하나 더 띄우거나 다른 사람이 들어오면 pts/1, pts/2로 늘어남.

2. 비교: TTY vs PTS

리눅스 서버 관리 시 이 둘을 구분하는 게 중요함.

구분이름설명상황
물리 터미널tty (1~6)TeleTYpewriter. 서버 본체에 키보드/모니터를 직접 꽂고 쓰는 곳.데이터센터 현장 작업, 부팅 복구 시. (Ctrl+Alt+F1~F6)
가상 터미널pts (0~N)Pseudo Terminal. 네트워크나 윈도우 창을 통해 연결된 가상의 통로.SSH 접속, Xshell, Putty, VS Code 터미널 등 99%의 상황.

3. 내 터미널 확인법

지금 내가 쓰고 있는 창이 몇 번인지 알고 싶다면:

Bash

tty
# 결과: /dev/pts/0  (나는 0번방에 있구나)

또는 누가 들어와 있는지 전체 확인:

Bash

who
# 결과:
# pi      tty1         Jan 29 09:00  (본체에 로그인한 사람)
# pi      pts/0        Jan 29 21:10  (SSH로 들어온 나)


profile
임베디드 개발자가 되기 위해 공부중입니다!

0개의 댓글