사용자가 시스템에서 음의 양호 값으로 특정 프로세스를 실행하기를 원합니다. 이 특정 프로그램은 Minecraft 서버이고 서버를 제어하기 위해 명령줄에 의존하기 때문에 단순히 프로세스를 백그라운드로 분기할 수는 없습니다.
내 현재 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 인스턴스가 있을 수 있지만 Minecraft 서버는 자체 사용자로 실행됩니다.내 세상.
서버를 시작할 때마다 비밀번호를 입력하고 싶지는 않습니다.
~에서/etc/sudoers:
minecraft ALL = NOPASSWD: /etc/renice
이를 수행하는 더 우아한 방법이 있습니까? 단순히 사용하는 nice
것은 옵션이 아닙니다 sudo nice bash
.비밀번호 없음:옵션은 큰 보안 문제가 될 것입니다.
답변1
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
답변2
renice
그것 없이는 사용이 불가능합니다 sudo
. 나는 매뉴얼 renice(1)
페이지를 인용하고 있습니다 :
수퍼유저가 아닌 사용자는 자신이 소유한 프로세스의 우선 순위만 변경할 수 있으며 nice 리소스 제한이 설정되어 있지 않은 한(Linux 2.6) 보안상의 이유로 0에서 PRIO_MAX(20) 범위에서 "nice 값"을 단조롭게 늘릴 수만 있습니다. .12 이상).