"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_systemdpam_systemdバラよりhttps://github.com/systemd/systemd/issues/7451

この最後のポイントでは、いくつかの混乱した動作、つまり手動suで実行したときにプロセスが表示されない理由について説明します。user-1009.slicesu - user-1009

関連情報