systemdサービスでnvidia-settingsを実行する

systemdサービスでnvidia-settingsを実行する

スクリプトを使用しようとしていますが、NVIDIAファンコントローラ、マイシステム(Arch Linux)のGPU温度を制御します。 systemdを介して実行しようとするとエラーが発生することを除いて、うまくいきます。

nvidia-settings control display is undefined

調査結果の問題は、サービスで使用されている.Xauthorityファイルで発生したようです。nvidia-settingsはスクリプトで使用され、.Xauthorityファイルを使用しますが、ファン速度を変更するにはrootアクセスが必要です。 systemdを介してアクセスできる.Xauthorityファイルをルートに提供する方法はありますか?サービスは、現在のサービスのインストールに使用しているsysadminユーザーに対してこのファイルを指すため、他のユーザーがログインしても実行されません。

ユーザーサービスを作成しようとしましたが、コマンドをrootとして実行する必要があるため、機能しませんでした。

ベストアンサー1

現在、同じディストリビューションで同様の問題に取り組んでいますが、Arch Wikiで次のセクションを見つけました。https://wiki.archlinux.org/title/Systemd/User#DISPLAY_and_XAUTHORITY

私はその内容とスクリプトの使い方をよく理解していませんが、次のコマンドを使用しました。

systemctl --user show-environment

環境変数を一覧表示し、DISPLAY と XAUTHORITY をサービスに追加するには、次の手順を実行します。

[Unit]
Description=GPU fan speed controller service

[Service]
ExecStart=/usr/local/bin/fan_sped_control.sh
Environment="DISPLAY=:1"
Environment="XAUTHORITY=/run/user/1000/gdm/Xauthority"

これを達成するためのよりきれいな方法を知っている人がいれば教えてください。 :)

おすすめ記事