«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 в другом терминале, но это не помогло

На всякий случай, если кому-то нужно решение, вместо использования 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

Я пытаюсь установить для каждого пользователя ограничения на процессы, большинство из которых запускаются с помощью sudo –user.

Почему user-1001 и user-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 в Linux должен использовать PAM. И в конфигурациях, которые я видел в ОС RedHat и Debian, он использует pam_systemd . Но есть третий случай, когда pam_systemd не pam_systemd в силу: если вы запускаете команду внутри существующего пользовательского сеанса. См. https://github.com/systemd/systemd/issues/7451.

Этот последний момент объясняет некоторое запутанное поведение su , то есть почему вы не видели никаких процессов в user-1009.slice когда вы вручную запускали su - user-1009 .