"systemctl set-property user-1009.slice CPUQuota=50%" - user-1009.slice에서 장치 속성을 설정할 수 없습니다: 장치 user-1009.slice가 로드되지 않았습니다.

"systemctl set-property user-1009.slice CPUQuota=50%" - user-1009.slice에서 장치 속성을 설정할 수 없습니다: 장치 user-1009.slice가 로드되지 않았습니다.

프로세스에 대해 사용자별 제한을 설정하려고 하는데, 대부분은 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

https://www.reddit.com/r/linuxquestions/comments/9c9dka/issue_with_systemctl_setproperty_user1009slice

답변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/ suPAM은 Linux에서 사용해야 합니다. RedHat 및 Debian 기반 운영 체제 에서 본 구성에서는 pam_systemd. pam_systemd바라보다https://github.com/systemd/systemd/issues/7451

이 마지막 지점에서는 몇 가지 혼란스러운 동작, 즉 su수동으로 실행할 때 프로세스가 표시되지 않는 이유를 설명합니다.user-1009.slicesu - user-1009

관련 정보