특정 사용자에 대해 자동으로 "좋은" 작업을 수행하는 방법은 무엇입니까?

특정 사용자에 대해 자동으로 "좋은" 작업을 수행하는 방법은 무엇입니까?

내 서버 사용자가 웹 서버 작업에서 "nice" 명령을 사용하는 것을 계속 잊어버린 경우, 시작하는 모든 항목의 기본 우선 순위가 0보다 약간 높도록 설정을 변경할 수 있습니까?

답변1

이 작업은 /etc/security/limits.conf파일에서 수행할 수 있습니다.

사용자가 그룹의 구성원이라고 가정하면 users다음과 같은 줄을 추가할 수 있습니다.

@users soft nice 5

답변2

nicenice-ness는 실제로 원하는 도구가 아닌 것 같습니다 . cgroups는 그렇습니다! (사용자 nice자신에게 의존하는 것은 구조적인 실수입니다.) 실제로 알아차렸듯이! )

Linux에서 사용자, 서비스 및 사물에 대한 "슬라이스" 할당량을 제공할 수 있습니다. CPU 경합이 높을 때 nice-ness를 사용하여 특정 프로세스의 우선 순위를 낮추는 것과 유사하지만 더 광범위하게는 I/O 대역폭에서도 작동합니다. RAM, 프로세스 수 및 기타 몇 가지 사항입니다.

이것은 매우 간단합니다. 사용자 uid 1234(현재 로그인되어 슬라이스가 존재함)가 nginx HTTP 서비스 CPU 시간의 1/4을 얻지 못하도록 제한한다고 가정해 보겠습니다.

systemctl set-property user-1234.slice CPUShares=500 MemoryHigh=16G
systemctl set-property nginx.service CPUShares=2000 MemoryHigh=28G

(이러한 변경 사항은 영구적입니다)

제한하고 싶다면로그인한 모든 사용자의 합계, 사용 user.slice.

특정 사용자를 미리 제한하려면 /lib/systemd/system/user-1234.slice를 생성하세요.

[Unit]
Description=Goddammit stop hogging my server, Carl
Documentation=man:systemd.special(7)
Before=slices.target
CPUShares=500
MemoryHigh=2G

[Slice]
Slice=user-slice

[Install]
WantedBy=multi-user.target

답변3

내 서버 사용자가 웹 서버 작업에서 "nice" 명령을 사용하는 것을 계속 잊어버리는 경우

뭔가 잘못하고 있는 것 같군요/XY 문제입니다. 기술적으로 단순한 "사용자"가 서버 역할의 호스트에 대한 셸 액세스 권한을 가질 수 있는 이유는 무엇입니까? 이 시스템에서 다른 프로세스의 실행이 허용되는 이유는 무엇입니까? 이러한 프로세스에 운영 체제가 제공하려는 것보다 더 많은 CPU 시간이 필요한 이유는 무엇입니까?

관련 정보