기본 문법
nice [-n 증감값] 명령어 [인자...]
nice는 프로그램을 실행할 때 CPU 스케줄링 우선순위를 조정하는 명령어입니다. 리눅스에서 각 프로세스는 -20부터 19까지의 nice 값을 가지며, 값이 작을수록 우선순위가 높고 클수록 낮습니다. 일반 셸에서 실행한 프로세스의 기본 nice 값은 0이며, ps 출력의 NI 열에서 확인할 수 있습니다.
백업, 압축, 대용량 로그 분석처럼 오래 걸리지만 급하지 않은 작업에 높은 nice 값을 주면 다른 서비스가 CPU를 상대적으로 더 확보할 수 있습니다. 반대로 우선순위를 높이려면(음수 값) root 권한이 필요하며, 일반 사용자는 자신의 프로세스라도 nice 값을 낮출 수 없습니다.
nice는 '실행 시점'에 적용되고, 이미 실행 중인 프로세스에는 renice를 사용합니다. 이 차이를 구분해 두면 '#167 nice 값 지정해 백그라운드 프로세스 실행하기', '#119 프로세스 우선순위 확인 및 변경 - nice, renice' 문제를 푸는 데 도움이 됩니다.
자주 쓰는 옵션
| 옵션 | 의미 | 예 |
|---|---|---|
-n N, --adjustment=N | 현재 nice 값에 N을 더해 명령을 실행합니다. 최종 값은 -20~19 범위로 잘립니다(범위를 벗어나면 경계값으로 고정). | nice -n 15 sleep 300 |
(옵션·명령 모두 없음) | 인자 없이 실행하면 현재 셸의 nice 값을 출력합니다. | nice |
(명령만 지정) | -n을 생략하고 명령만 주면 nice 값이 10 증가한 상태로 실행됩니다. | nice sleep 60 |
--help | 사용법과 옵션 목록을 출력합니다. | nice --help |
--version | coreutils 버전 정보를 출력합니다. | nice --version |
실무 예시
현재 셸의 nice 값 확인
$ nice
0
인자 없이 실행하면 현재 셸이 상속한 nice 값을 숫자로 출력합니다. 일반적인 로그인 셸에서는 0입니다.
nice 값 15로 백그라운드 실행 후 PID 저장
준비: mkdir -p /tmp/demo
$ nice -n 15 sleep 300 & echo $! > /tmp/demo/sleep.pid; cat /tmp/demo/sleep.pid
28
백그라운드로 실행한 뒤 셸 변수 $!로 마지막 백그라운드 프로세스의 PID를 얻어 파일에 저장합니다. 비대화형 셸(스크립트, 컨테이너 실행 등)에서는 '[1] PID' 같은 작업 제어 알림이 출력되지 않고 cat으로 읽은 PID만 표시됩니다. PID 숫자는 실행할 때마다 달라집니다.
-n 없이 실행하면 10이 더해짐
$ nice sleep 60 & sleep 1; ps -o pid,ni,cmd -p $!
PID NI CMD
47 10 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 60
증감값을 지정하지 않으면 기본 증감 10이 적용되어 NI가 10으로 표시됩니다.
nice로 실행 후 renice로 변경
준비: mkdir -p /tmp/demo; nice -n 5 sleep 300 & echo $! > /tmp/demo/p.pid; sleep 1
$ renice -n 10 -p $(cat /tmp/demo/p.pid) && ps -o pid,ni,cmd -p $(cat /tmp/demo/p.pid)
56 (process ID) old priority 5, new priority 10
PID NI CMD
56 10 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 300
이미 실행 중인 프로세스의 우선순위는 nice가 아니라 renice로 바꿉니다. 변경 후 NI가 10이 됩니다. util-linux 2.32의 renice에서 -n은 '증감'이 아니라 설정할 절대 nice 값으로 동작합니다.
높은 nice 값으로 압축 작업 실행
준비: mkdir -p /tmp/demo/src; echo data > /tmp/demo/src/a.txt
$ nice -n 19 tar czf /tmp/demo/src.tar.gz -C /tmp/demo src && ls -l /tmp/demo/src.tar.gz
-rw-r--r--. 1 root root 149 Sep 16 11:52 /tmp/demo/src.tar.gz
CPU를 많이 쓰는 압축 작업에 가장 낮은 우선순위를 주어 다른 프로세스가 CPU를 더 확보하도록 합니다. 파일 크기와 시각은 환경에 따라 달라지며, 권한 뒤의 점(.)은 SELinux 보안 컨텍스트가 있음을 뜻합니다.
주의할 점
- 일반 사용자는 nice 값을 낮출 수 없습니다. 음수 값(-20~-1)을 주려면 root 권한이 필요합니다. renice로도 마찬가지로 값을 낮추는 것은 root만 가능합니다.
- nice는 실행 시점에만 적용됩니다. 이미 실행 중인 프로세스는 renice -n 값 -p PID로 바꿔야 합니다.
- -n을 생략하면 0이 아니라 기본 증감 10이 적용됩니다. 정확한 값이 필요하면 -n을 명시하세요.
- nice 값은 절대 우선순위가 아니라 상대적 조정치이며, 부모 프로세스의 값에 더해져 자식에게 상속됩니다. 계산 결과가 -20~19를 벗어나면 경계값으로 고정됩니다.
- nice 값은 CPU 스케줄링에만 영향을 줍니다. 디스크 I/O가 병목인 작업은 nice로 체감 효과가 작으므로 ionice 등을 함께 검토해야 합니다.
- 예시의 PID, 파일 크기, 시각은 실행 환경마다 다르므로 값 자체가 아니라 출력 형식과 NI 열을 확인하세요.
이 명령어로 풀 수 있는 실습 문제
브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.
관련 명령어
마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.
