프로세스에 대해 사용자별 제한을 설정하려고 하는데, 대부분은 sudo --user를 사용하여 실행됩니다. 내 시스템에 user-1001 및 user-1008에 대한 슬라이스 파일이 있는데 1009에서는 표시되지 않는 이유는 무엇입니까?
# systemctl set-property user-1009.slice CPUQuota=50%
Failed to set unit properties on user-1009.slice: Unit user-1009.slice is not loaded.
# systemctl status user-1009.slice
● user-1009.slice
Loaded: loaded
Active: inactive (dead)
수동으로 파일을 만들어 보았습니다.
# touch /etc/systemd/system/user-1009.slice
# systemctl status user-1009.slice
● user-1009.slice
Loaded: masked (/etc/systemd/system/user-1009.slice; masked; vendor preset: disabled)
Active: inactive (dead)
# systemctl set-property user-1009.slice CPUQuota=50%
Failed to set unit properties on user-1009.slice: Unit user-1009.slice is not loaded.
또한 이것은 나에게 이해가 되지 않습니다. 테스트 프로세스(PID 26668)는 ps -U 1009에 표시되지만 user-1008의 슬라이스에서 실행됩니다(user-1008이 sudo를 사용하여 실행하기 때문입니까?)
# ps -U 1009 ; systemctl status user-1008.slice
PID TTY TIME CMD
15727 pts/1 00:00:00 bash
26668 ? 00:00:00 testprocess
● user-1008.slice - User Slice of testuser
Loaded: loaded (/run/systemd/system/user-1008.slice; static; vendor preset: disabled)
Drop-In: /run/systemd/system/user-1008.slice.d
└─50-After-systemd-logind\x2eservice.conf, 50-After-systemd-user-sessions\x2eservice.conf, 50-Description.conf, 50-TasksMax.conf
Active: active since Thu 2018-08-30 19:35:01 EDT; 2 days ago
CGroup: /user.slice/user-1008.slice
└─session-1801668.scope
└─26668 ./testprocess
주변을 검색해 보면 사람들이 사용자로 로그인하면 이 문제가 해결된다고 말하는데, 해당 사용자가 이미 프로세스를 열어 놓은 것 같습니다. 다른 터미널에서 su - user1009를 사용해 보았지만 도움이 되지 않은 것 같습니다.
답변1
다른 사람에게 솔루션이 필요한 경우를 대비하여 sudo를 사용하는 대신 sudo systemd-run이 저에게 효과적이었습니다.
$ sudo systemd-run --uid=1009 --slice=user-1009 sleep 10
# ps -U 1009 ; systemctl status user-1009.slice
PID TTY TIME CMD
20199 ? 00:00:00 sleep
● user-1009.slice
Loaded: loaded
Active: active since Sun 2018-09-02 01:46:57 EDT; 2s ago
CGroup: /user.slice/user-1009.slice
└─run-20198.service
└─20199 /bin/sleep 10
답변2
프로세스에 대해 사용자별 제한을 설정하려고 하는데, 대부분은 sudo --user를 사용하여 실행됩니다.
사용자 1001과 사용자 1008이 내 시스템에 슬라이스를 가지고 있는 이유는 무엇입니까?
문서단위인데 1009에서는 받을 수 없나요?
현재 실행 중인 UID 1009 프로세스가 없으면 systemd
(또는 기술적으로 말하면 logind
) 해당 UID에 대한 슬라이스가 시작되지 않습니다.
또한 처리 중에 설정을 성공적으로 적용한 경우에도예프로세스가 모두 실행을 중지하면 해당 프로세스가 손실됩니다. 슬라이싱 장치가 다시 멈추기 때문입니다. 때로는 이것이 당신이 원하는 것일 수도 있지만 제 생각에는 매우 혼란스러울 수 있습니다.
내장된 구성 파일에 필수 설정을 추가하는 것이 더 합리적입니다 /etc/systemd/system/user-1009.slice.d/cpuquota.conf
.
systemd-analyze verify user-1009.slice
구성 파일을 확인하고 systemctl daemon-reload
로드하는 데 사용됩니다 . 업데이트된 구성은 슬라이싱 유닛이 정지된 후에만 적용되는 것으로 생각됩니다. 슬라이싱 장치를 수동으로 다시 시작할 수도 있지만 이렇게 하면 해당 장치에서 실행 중인 모든 프로세스가 종료됩니다.
user-1009.slice
프로세스에 시간이 없는 경우예사용자의 프로세스가 실제로 내부적으로 실행되고 있지 않기 때문에 실행 중입니다 pam_systemd
. 이는 아직 PAM 사용을 시작하지 않았기 때문일 수 있습니다. PAM "서비스"가 pam_systemd를 사용하도록 구성되지 않았기 때문일 수도 있습니다.
sudo
/ su
PAM은 Linux에서 사용해야 합니다. RedHat 및 Debian 기반 운영 체제 에서 본 구성에서는 pam_systemd
. pam_systemd
바라보다https://github.com/systemd/systemd/issues/7451
이 마지막 지점에서는 몇 가지 혼란스러운 동작, 즉 su
수동으로 실행할 때 프로세스가 표시되지 않는 이유를 설명합니다.user-1009.slice
su - user-1009