프로세스 초기화 및 부팅 🚀

init vs systemd

  • 리눅스가 부팅될 때 가장 먼저 실행되는 최상위 프로세스(PID 1) 를 말합니다.
  • init: 전통적인 리눅스 시스템에서 사용되던 프로세스입니다. 다른 모든 프로세스를 fork 방식으로 생성하고 관리합니다.
  • systemd: CentOS 7부터 도입된 새로운 초기화 시스템입니다. 기존 init을 대체하며, 병렬 처리 등으로 부팅 속도를 개선했습니다.

💡 Tip 일반적인 리눅스 설명에서는 init이 PID 1이라고 하지만, CentOS 7 이상에서는 systemd가 PID 1을 가집니다.

이더넷 카드 장치명

  • CentOS 버전에 따라 이더넷 카드의 기본 장치명 형식이 다릅니다.
    • CentOS 6 이하: eth0
    • CentOS 7 이상: enp0s3

프로세스 관리 및 모니터링 📊

프로세스 확인 명령어

  • ps: 현재 실행 중인 프로세스의 상태를 보여줍니다.
옵션설명
a다른 사용자의 프로세스를 포함한 모든 프로세스 출력
u사용자 이름과 프로세스 시작 시간 출력
x터미널에 종속되지 않은 모든 프로세스 출력
e모든 프로세스에 대한 환경 변수까지 출력
f프로세스 간의 부모-자식 관계를 트리 구조로 출력 (PPID 확인)
lNI(Nice), PRI(Priority) 등 상세 정보 출력
efSTIME (프로세스 시작 시간) 등 전체 정보 확인
auxRSS (실제 메모리 사용량), TIME (총 CPU 사용 시간) 등 확인
ps 상태 코드설명
D중단 불가능한 대기 상태 (Uninterruptible Sleep)
S중단 가능한 대기 상태 (Interruptible Sleep)
T작업 제어 신호에 의해 중지된 상태 (Stopped)
Z좀비 프로세스 (Zombie)
R실행 중 또는 실행 대기 상태 (Running or Runnable)
N우선순위가 낮아진 상태
<우선순위가 높아진 상태
  • pstree: 실행 중인 프로세스를 부모-자식 관계의 트리 구조로 시각화하여 보여줍니다.

  • top: 시스템의 전반적인 상태와 실행 중인 프로세스 정보를 실시간으로 보여주는 작업 관리자입니다.

    • -d: 갱신 간격(초) 지정. 예: top -d 1
    • -p: 특정 PID의 정보만 모니터링. 예: top -p 8080

시그널(Signal)과 프로세스 종료

시그널은 프로세스에 특정 이벤트를 알리는 방법입니다.

  • 1 SIGHUP: 재시작 (터미널 종료 시 발생)

  • 2 SIGINT: 인터럽트 (Ctrl+C)

  • 9 SIGKILL: 강제 종료 (무시할 수 없음)

  • 15 SIGTERM: 정상 종료 (기본값)

  • 19 SIGSTOP: 일시 정지

  • kill: PID를 사용하여 프로세스에 시그널을 보냅니다. 기본적으로 15번(SIGTERM) 시그널을 사용합니다.

    • kill [PID]
    • kill -9 [PID] (강제 종료)
  • killall: 프로세스 이름을 사용하여 관련된 모든 프로세스에 시그널을 보냅니다.

백그라운드 프로세스 관리

  • jobs: 현재 셸 세션에서 실행 중인 백그라운드 작업 목록을 보여줍니다.
  • nohup: 사용자가 로그아웃하거나 터미널을 종료해도 프로세스가 계속 실행되도록 합니다. 보통 백그라운드 실행(&)과 함께 사용됩니다.
    • nohup [명령어] &
  • 백그라운드 프로세스 종료: Job 번호 앞에 %를 붙여 kill 명령어로 종료합니다.
    • kill %2 (Job 번호가 2번인 프로세스 종료)

프로세스 우선순위 스케줄링 ⚖️

  • nice / renice: 프로세스의 실행 우선순위를 조정하는 명령어입니다.
    • NI (Nice 값): 사용자가 설정하는 값 (-20 ~ 19). 낮을수록 우선순위가 높습니다.
    • PRI (Priority 값): 커널이 실제로 사용하는 우선순위 값.
  • nice: 새로운 프로세스를 시작할 때 우선순위를 지정합니다.
    • nice -n 5 [프로세스명] (우선순위 낮춤)
    • nice -n -10 [프로세스명] (우선순위 높임, root 권한 필요)
  • renice: 이미 실행 중인 프로세스의 우선순위를 PID를 사용하여 변경합니다.

데몬(Daemon) 프로세스 ⚙️

  • 데몬: 시스템이 부팅될 때 실행되어 백그라운드에서 주기적이고 지속적인 서비스 요청(웹, DB 등)을 처리하는 프로세스입니다. 이름 뒤에 d가 붙는 경우가 많습니다 (예: sshd).
  • 실행 방식:
    • Standalone 방식: 항상 메모리에 상주하며 요청을 대기. 응답 속도가 빠릅니다. (예: 웹서버, 메일서버)
    • inetd 방식: 요청이 들어올 때만 관련 데몬을 활성화하고, 접속 종료 시 자동으로 종료. 메모리를 절약할 수 있습니다.

주기적 작업 스케줄링 (cron)

  • cron: 특정 시간에 특정 명령이나 스크립트를 주기적으로 실행하도록 예약하는 데몬입니다.
  • crontab: cron 작업을 설정하는 명령어 및 설정 파일입니다.
    • 시간 형식: 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7)
    • -e: 작업 편집
    • -l: 작업 목록 확인
    • -r: 모든 작업 삭제
  • 설정 파일 경로: /var/spool/cron/[사용자명]