사용자가 음의 nice 값으로 시스템에서 특정 프로세스를 실행하기를 원합니다. 이 특정 프로그램은 마인 크래프트 서버이고 명령 줄에 의존하여 서버를 제어하므로 프로세스를 백그라운드로 포크 할 수 없습니다.
내 현재 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
이 작업을 수행하는 더 우아한 방법이 있습니까? 단순히 사용하는 nice
것은 옵션이 아니며 NOPASSWD : 옵션 sudo nice bash
과 함께 사용하면 큰 보안 문제가됩니다.
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
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다