nice 명령어
nice
명령어는 UNIX 및 리눅스 시스템에서 프로세스의 우선순위(niceness)를 조정하여 실행하는 데 사용됩니다. 시스템에서 프로세스 스케줄러가 프로세스에 CPU 시간을 할당할 때, nice
값은 프로세스의 우선순위를 나타내는 데 사용되며, 높은 nice
값은 낮은 우선순위를 의미합니다.
nice 명령어 사용법
nice
명령어의 기본 구문은 다음과 같습니다:
nice [옵션] [명령]
명령
: 우선순위를 조정하고자 하는 명령입니다.옵션
: 특히-n
옵션은nice
값(우선순위를 조정하는 데 사용되는 값)을 지정하는 데 사용됩니다.
예시
- 새로운
nice
값과 함께 명령 실행하기:
nice -n 10 command
이 예시는 command
를 nice
값 10으로 실행합니다. 기본적으로, nice
값은 0에서 시작하며, 값이 높을수록 우선순위가 낮아집니다. nice
값은 -20
에서 19
까지의 범위를 가집니다.
- 기존 프로세스의
nice
값 변경하기:
이를 위해서는 renice
명령어를 사용합니다:
renice 10 -p 12345
이 예시는 프로세스 ID가 12345
인 프로세스의 nice
값을 10으로 변경합니다.
주의사항
nice
값이 낮을수록 (음수에 가까울수록) 프로세스는 더 높은 CPU 우선순위를 가집니다.- 일반 사용자는 자신의 프로세스의
nice
값을 낮출 수 없습니다(즉, 우선순위를 높일 수 없습니다). 이것은 시스템의 보안과 안정성을 위한 조치입니다. - 관리자(루트 사용자)는 모든 프로세스의
nice
값을 조정할 수 있습니다. nice
값 조정은 CPU 점유율에 영향을 줍니다. 따라서 자원 집약적인 작업을 배경에서 실행할 때 시스템의 반응성을 유지하기 위해nice
값을 증가시키는 것이 일반적인 관행입니다.
사례
사례 1: 리소스 집약적인 작업의 우선순위 낮추기
예를 들어, 대규모 데이터베이스에 대한 복잡한 데이터 분석을 수행하는 스크립트가 있다고 가정해 봅시다. 이 스크립트는 시스템의 리소스를 많이 소모하여 다른 사용자나 서비스에 영향을 줄 수 있습니다. 이 경우, 작업의 우선순위를 낮춰서 시스템의 반응성을 유지하고 싶을 수 있습니다.
nice -n 15 ./analyze-database.sh
이 명령은 analyze-database.sh
스크립트를 기본 우선순위보다 낮은 우선순위(15)로 실행합니다. 이렇게 하면, 스크립트는 CPU를 필요로 하는 다른 프로세스보다 낮은 우선순위를 가지게 되어, 다른 작업이 CPU 시간을 더 많이 요구할 때 자동으로 CPU 사용량이 줄어들게 됩니다.
사례 2: 우선순위가 높은 작업 실행하기
시스템 관리자가 긴급한 업데이트 스크립트를 빠르게 실행해야 하는 경우가 있을 수 있습니다. 루트 사용자로 로그인하여 다음과 같이 명령어를 실행할 수 있습니다.
nice -n -5 ./emergency-update.sh
이 명령은 emergency-update.sh
스크립트를 더 높은 우선순위(-5)로 실행하여, 다른 일반 프로세스보다 더 많은 CPU 시간을 할당받도록 합니다. 일반 사용자는 nice
값을 감소시킬 수 없지만, 루트 사용자는 가능합니다.
사례 3: 이미 실행 중인 프로세스의 우선순위 조정하기
시스템에서 이미 실행 중인 프로세스의 우선순위를 변경해야 할 수도 있습니다. 이 경우에는 renice
명령어를 사용합니다.
renice 10 -p 9876
이 명령은 프로세스 ID가 9876
인 프로세스의 nice
값을 10으로 변경합니다. 이 작업을 수행하기 위해서는 해당 프로세스의 소유자이거나 루트 권한이 필요합니다. 이렇게 하면 해당 프로세스는 다른 일반 우선순위의 프로세스보다 CPU 시간을 덜 할당받게 됩니다.
이러한 사례들은 nice
명령어를 사용하여 시스템 리소스를 관리하고, 다양한 프로세스의 CPU 시간 할당을 조정하는 방법을 보여줍니다.
'Linuxpia > Linux 명령어' 카테고리의 다른 글
[리눅스 명령어] 암호 관리 명령어, passwd (61) | 2023.11.28 |
---|---|
[리눅스 명령어] 8진수로 파일 보는 리눅스 명령어, od (54) | 2023.11.27 |
[리눅스 명령어] 리눅스명령어 netstat (64) | 2023.11.25 |
[리눅스 명령어] 리눅스명령어 mzip (103) | 2023.11.24 |
[리눅스 명령어] 리눅스명령어, 파일 옮기는 명령 mv (59) | 2023.11.23 |