본문 바로가기

별걸다하는 IT/리눅스 유닉스

[리눅스/Linux] NICE와 RENICE 알아보자~! 프로세스 우선순위 변경하고 확인하는 명령어. PRI vs NI?

[ LINUX / 리눅스 완전정복 포스팅 링크 모음]

안녕하세요 양햄찌 블로그입니다~~!
오늘 알아볼 명령어는 NICE와 RENICE입니다.

NICE / RENICE 가 하는 일? 공통점과 차이점

nice와 renice 명령어는 프로세스의 우선순위를 변경하는 기능을 합니다.

다만 nice는 명령어를 치는 순간 지정한 우선순위로 프로세스를 실행하지만,

renice는 이미 실행된 프로세스에다가 우선순위를 변경할 수 있다는 차이점이 있습니다.

re~~~다시~~~재nice~~ 이런느낌으로 생각하시면 쉽게 구분할 수 있어요.

 

PS명령어로 먼저 프로세스 우선순위를 확인해볼까?

참고로 ps 명령어는 현재 실행중인 프로세스 목록과 상태를 확인하는 명령어인데요~ 

이 명령어로 실행중인 프로세스의 우선순위 정보도 확인할 수 있어요.

 

ps명령어를 모르시는 분은 아래 포스팅을 이용해주세요

▼ ps 명령어 : jhnyang.tistory.com/268

 

[리눅스, 유닉스] ps 프로세스 명령어 완벽정리, 프로세스 관리, 계열에 따른 옵션 차이, 조건에

[리눅스 유닉스 포스팅 링크 모음] 안녕하세요 오늘 들고온 포스팅은 ps 명령어 관련입니다. 프로세스(process)의 약자로 추정되는 명령어 ps는 현재 돌아가고 있는 프로세스를 확인할 수 있는 명령

jhnyang.tistory.com

'ps -l' 또는 아래처럼 'ps -el' 명령어를 쳐봅시다.

ps -el 결과 

여기 빨간색 네모 박스에 PRI, NI 항목이 보이시나요??

PRI 와 NI 둘다 프로세스 우선순위를 나타냅니다.

PRI, NI 둘다 값이 낮을 수록 우선순위가 높아요. 숫자가 크다고 높은게 아님!

 

PRI와 NI의 차이?

일단 둘다 우선순위를 나타냅니다. 그런데 왜 두개냐!

PRI는 운영체제에서 참고하는 우선순위로 조작이 안됩니다! 시스템 상황에 따라 부여되는 변경불가능한 값이예요. 즉 nice랑 renice로 조작하는 값은 PRI가 아닌 NI값이라는거죠~

반대로 NI는 사용자가 조작할 수 있는 우선순위값입니다. 그런데 일반 사용자는 우선순위를 낮출 수는 있어도 올릴 수는 없어요. root 관리자 계정만이 낯추고 올리고 둘 다 할 수 있습니다. 

 

NI 값 범위

우리가 지정할 수 있는 우선순위 값은 -20부터 19까지인데 앞에서 말했듯이 값이 낮아야 우선순위가 높으므로, 가장 높은 우선순위는 -20이 됩니다. 

 

가장 높은 우선순위 NI 값 : -20

가장 낮은 우선순위 NI 값 : 19 

기본적으로 주어지는 디폴트 값: 0

 

NICE 명령어 사용해보기 

man nice결과 

■ nice -n [N] [프로세스명]

기존 우선순위 값에 N만큼 더한 우선순위로 [프로세스명]을 실행시킨다.

■ nice [프로세스명]

-n 옵션 없이 사용할 경우 N값은 디폴트로 10을 갖습니다. 즉 10을 더해 우선순위를 낮춰서 실행시키는거죠~

■ nice -[N] 프로세스명

nice -n N 한 것과 동일합니다

 

즉 N값이 양수이면 우선순위가 낮아지고 음수이면 우선순위가 올라간다!

 

실습해보기~~~

ubuntu 계정(root가 아닌 일반 사용자 계정)으로 로그인한 뒤 ps -l 로 실행중인 bash 우선순위 값을 확인해봤습니다.

PID가 2728인 bash의 PRI는 80, NI 값은 0이었네요.

 

여기서 nice -n 15 bash 명령어를 쳐줬습니다.

이는 기존 우선순위값인 0에서 15를 더한 15 NI로 bash를 실행시키라는 명령이죠?

nice는 실행 중인 프로세스의 우선순위를 변경하는 게 아니기 때문에 기존 bash PID 2728과는 다른 새로운 2806 pid의 bash가 실행됩니다. 우선순위가 낮아진 것을 확인할 수 있어요 사용자가 설정한 것을 고려해 시스템도 이 bash는 우선순위를 낮췄네요 (PRI)

 

그럼 이번엔 우선순위를 올려볼까요?? 

nice -n -15 bash를 쳤는데 이런! Permission deniced 에러가 떳네요!! 

우선순위를 높이는 것은 root 관리자 계정만 가능하기 때문입니다. 

 

RENICE 명령어 사용해보기

man renice

running processes 실행 중인 프로세스의 우선순위를 변경하는 명령어입니다. 

 

■ renice [N] PID

실행 중인 PID 프로세스의 우선순위값 NI를 N만큼 더합니다. 

 

renice는 옵션이 몇 개 있는데요 옵션을 알아봅시다.

옵션 의미
-n  nice와 마찬가지로 우선순위를 조정할 때 사용합니다.
-g 특정 그룹을 지정해서 우선순위를 조정할때 사용합니다. 
-p (--pid) 디폴트 값이기 때문에 옵션 안붙이고 renice N pid 이렇게 쓰셔도 됩니다. renice N -p pid 와 동일~
-u (--user) 특정 사용자를 지정해서 우선순위를 조정합니다. 

 

# renice 10 -u ubuntu

ubuntu 계정의 NI 값을 10 더해 우선순위를 낮춥니다.

 

실습해보기~~~

renice 명령어로 현재 실행중인 pid 58389인 프로세스의 우선순위를 변경해줘봤어요~

-10 을 해줬으니 즉 10만큼 우선순위가 높아졌겠죠??

결과를 ps -l로 확인해보면 기존 NI값이 0이었는데 -10으로 변경된 것을 확인할 수 있습니다.

root 계정이기 때문에 우선순위를 높여도 permission denied 거절이 뜨지 않은 것을 확인할 수 있어요.

 

오늘은 여기까지입니다. 도움이 되셨다면 공감 어떤가요?

정보공유에 큰 힘이 됩니다. 다음 포스팅에서 봐요~~