ioerror

nice - 프로세스의 실행 우선순위(Nice 값)를 설정하여 실행하는 명령어 본문

OS

nice - 프로세스의 실행 우선순위(Nice 값)를 설정하여 실행하는 명령어

반응형

nice - 우선순위 조정 변경(Invoke a utility with an altered scheduling priority)

프로세스가 시작될 때 CPU 스케줄링 우선순위를 결정하는 Nice 값을 설정하는 명령어이다. 시스템 자원을 많이 소비하는 백그라운드 작업의 우선순위를 낮추어 다른 중요한 작업의 성능 저하를 방지하는 역할을 한다. 일반 사용자는 우선순위를 낮추는 것(Nice 값 증가)만 가능하며, 우선순위를 높이는 것(Nice 값 감소)은 루트(root) 권한이 필요하다.

1. 명령어 용도

  • 시스템 자원을 대량으로 사용하는 백그라운드 컴파일, 백업, 인코딩 작업을 수행할 때 시스템이 멈추는 현상을 방지하기 위해 사용된다.
  • CPU 점유율이 높은 데이터 분석 스크립트를 실행하면서 동시에 웹 서버 등 주요 서비스의 응답성을 유지해야 하는 환경에서 자주 활용된다.

[실행 예시]

# 시스템에 부담을 주지 않도록 커널 컴파일 작업을 가장 낮은 우선순위로 실행하다.
nice -n 19 make -j4

# 일반적인 백그라운드 압축 작업을 수행하다.
nice tar -czf backup.tar.gz /var/www/html

2. 명령어 서식

nice [옵션] [명령어 [인수...]]

3. 명령어 옵션

옵션 설명 사용가능 OS 및 쉘
-n, --adjustment=N 우선순위(Nice 값)를 지정한 수치만큼 조정하다. (기본값은 10 증가)  
--help 명령어 사용법 및 도움말을 출력하다. [GNU/Linux]
--version 버전 정보를 출력하다. [GNU/Linux]

 

[명령어 옵션 사용 결과 예시]

# 기본 nice 값(0)에서 15만큼 증가시켜(우선순위를 낮춰) 스크립트를 실행하다.
nice -n 15 python3 data_analysis.py &

# 현재 실행 중인 프로세스의 nice 상태를 확인하다.
ps -el | grep python3
# F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
# 0 S  1000  123456  123000 15  95  15    -  54321 -      pts/0    00:01:20 python3

[결과항목별 설명]

  • F (Flag): 프로세스 플래그 (상태 정보 플래그)
  • S (State): 프로세스 상태 (R: 실행 중, S: 수면, D: 대기, Z: 좀비, T: 정지)
  • UID (User ID): 프로세스를 실행한 사용자의 ID
  • PID (Process ID): 프로세스 고유 번호
  • PPID (Parent PID): 부모 프로세스 고유 번호
  • C (CPU): CPU 사용량 관련 수치
  • PRI (Priority): 커널이 부여한 실제 우선순위 (낮을수록 높음)
  • NI (Nice): 사용자가 조절한 우선순위 가중치 (-20 ~ 19)
  • ADDR (Address): 프로세스의 메모리 주소
  • SZ (Size): 프로세스가 사용하는 가상 메모리 크기
  • WCHAN (Waiting Channel): 프로세스가 대기 중인 커널 시스템 호출 함수명
  • TTY (Teletype): 프로세스가 연결된 터미널 기기
  • TIME (Time): 프로세스가 사용한 총 CPU 시간
  • CMD (Command): 실행한 명령어 이름 명칭

4. 명령어 특이사항(유의사항)

  • Nice 값의 범위는 -20(가장 높은 우선순위)부터 19(가장 낮은 우선순위)까지 설정되다.
  • 일반 사용자는 오직 Nice 값을 높여서 자신의 프로세스 우선순위를 낮추는 것만 허용되다. 만약 일반 사용자가 우선순위를 높이기 위해 음수 값을 지정하면 Permission denied 오류가 발생하거나 값이 무시되다.
  • 루트 권한(sudo)을 사용하면 음수 값을 지정하여 프로세스의 CPU 스케줄링 우선순위를 강제로 끌어올릴 수 있다.
  • 이미 실행 중인 프로세스의 우선순위를 변경할 때는 nice가 아닌 renice 명령어를 사용해야 하다.

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

 

 

반응형
Comments