사용자가 프로세스의 우선 순위를 부정적으로 인식하도록하려면 어떻게해야합니까?


12

사용자가 시스템에서 특정 좋은 프로세스를 음수 값으로 실행하기를 원합니다. 이 특정 프로그램은 마인 크래프트 서버이므로 서버를 제어하기 위해 명령 줄에 의존하기 때문에 프로세스를 배경으로 포크 할 수는 없습니다.

내 현재 bash 스크립트는 다음과 같습니다 (중요 부분).

sleep 10 && \
sudo renice -n $NICENESS $(ps -u $(id -u) -o "%p:%c" | sed -n "s/:java$//p") & \
java -Xmx8G -Xms2G -jar minecraft_server.jar nogui    

sleep단순히 실행을 지연시킵니다 renice. renice자체는 ps사용자 자신의 ID를 사용하여 Java 프로세스를 확인하는 데 사용합니다. 다른 사용자에게는 다른 Java 스폰 인스턴스가있을 수 있지만 minecraft 서버는 자체 사용자 minecraft 에서 실행됩니다 .

서버를 시작할 때마다 암호를 입력하고 싶지 않습니다.
에서 의 / etc /의 sudoers :

minecraft ALL = NOPASSWD: /etc/renice

더 우아한 방법이 있습니까? NOPASSWD 와 함께 단순히 사용하는 nice것은 옵션이 아닙니다 . 옵션은 큰 보안 문제입니다.sudo nice bash

답변:


9

pam_limits.so 모듈이 도움이 될 수 있습니다.

특정 개별 사용자 및 그룹 또는 와일드 카드 또는 사용자 및 그룹 범위에 대한 특정 제한을 설정할 수 있습니다.

설정할 수있는 제한은 일반적으로 ulimit 설정이지만 동시 로그인 세션 수, 프로세스, CPU 시간, 기본 우선 순위 및 최대 우선 순위 (renice)입니다. 자세한 내용은 limits.conf 매뉴얼 페이지를 확인하십시오.

예를 들어, 모든 프로세스가 기본 우선 순위를 높여 시작하도록 mindcraft 그룹을 구성 할 수 있으며 nice 및 renice 명령을 사용하여 우선 순위를 줄이는 대신 중요한 작업의 우선 순위를 수동으로 높이도록 할 수 있습니다.

# /etc/security/limits.conf
# increase default and max prio for members of the mindcraft group
@mindcraft   hard priority -10
@mindcraft   hard nice     -18   

4
에 대한 하드 제한을 설정하는 것만으로는 nice보이지 않는 것 같습니다 -.
Baarn

우분투 16.04에서 전혀 작동하지 않는 것 같습니다. 나는 priority-10과 nice-15로 설정 했고 무언가에 "nice -n -2"를 사용하려고하더라도 항상 "permission denied"를 받는다. 재부팅해야합니까? 이 조언에 따라 방금 로그 아웃했다가 다시 로그인했습니다 .
Richard Wiseman

이전 게시물 업데이트 ... 재부팅 후 priority설정이 적용 되는 것을 발견 했지만 nice우선 순위를 낮출 수만 있습니다. 기본 우선 순위로 무언가를 시작하면 이제 -10입니다. 내가 할 수있는 renice-9 과정을하지만 할 수없는 renice그것을 다시 -10.
Richard Wiseman

업데이트 2 : 해결했습니다! 그것을 사용 hard하여 문제를 일으켰습니다. 나는 -대신에 그것을 바꾸었고 모든 것이 잘 작동합니다. 이 답변 은 저의 결론에 도달하는 데 도움 되었습니다. 문제는 소프트 한계가 방해가되어 어쩌면 하드 한계를 재정의 한 것이 었습니다. 어쨌든 나를 -대신 hard고정시키는 대신 .
Richard Wiseman

1

renice없이 사용하는 sudo것은 불가능합니다. 나는 renice(1)맨 페이지 에서 인용한다 :

수퍼 유저 이외의 사용자는 자신이 소유 한 프로세스의 우선 순위 만 변경할 수 있으며 리소스 제한이없는 한 0에서 PRIO_MAX (20) 범위 내에서``좋은 값 ''(보안상의 이유로)을 단조롭게 증가시킬 수 있습니다. 설정 (Linux 2.6.12 이상).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.