Systemdにはフラグがあり、--global
私のデプロイUbuntuでcatch-22を見つけました。
- 権限のないユーザーとして実行すると、systemctlにユニットファイルを
/etc
。 - と変数を設定できない
sudo
ため機能しません。sudo
$DBUS_SESSION_BUS_ADDRESS
$XDG_*
sudo -E
環境を保護すると、機能する場合と動作しない場合があります。セッションroot
(仮想コンソールなど)で実行している場合は、確実に機能します。
それを使用する正しい方法は何ですかsystemctl --global
?
答え1
--global
enable
:と一緒に使用すると、グローバルdisable
ユーザー設定ディレクトリで機能し、すべてのユーザーの将来のすべてのログインに対してユニットファイルをグローバルに有効または無効にします。
このフラグは「グローバル」レベルのサービスをsystemctl --global
表し、主に/ユーザー単位で使用されます。systemctl --user
enable
disable
すべてのユーザーシステムから。
ユニットとは異なり、systemctl --system
アクティブな--global
ユニットはそうではありません。スタート個人ユーザーまでログインしたがって、ユーザー単位を「したい」。 (sudo
/ はsu
この意味でユーザーを「ログイン」しないことに注意してください。以下の選択肢を参照してください。)
見たらシステムユーザーごとの検索パス、ユーザー以外の人が使用できない一部の「グローバル」ディレクトリが含まれていることがわかりますroot
。これらのディレクトリ内のセルは、sudo systemctl --global
(すべてのユーザーに対して)または(個々のユーザーに対して)systemctl --user
管理できます。
ls -l /usr/lib/systemd/user
ls -l /etc/systemd/user
sudo systemctl --global
管理単位でのみ使用文書、主に有効/無効にします。ユーザー単位をグローバルに手動で有効にすると、/etc/systemd/user
個々のユーザーのTargets / wantsディレクトリにシンボリックにリンクされます~/.config/systemd/user
。
ls -l ~/.config/systemd/user
デスクトップシステムには、(パッケージ)インストール中にデフォルトで有効にできるかなりのグローバルユーザーユニットがあります。 「メモリ内」ユニットリストには、作成された一時ユニット/「ファイル」も含まれます。装備そして範囲。たとえば、--type service
狭い範囲を使用します。
systemctl --global list-unit-files
systemctl --global list-units
systemctl --global list-units --all
ユーザー単位のファイルリストは--global
個人リストと非常によく似ていますが、--user
後者は検索パスに(非グローバル)ユーザー固有のディレクトリを含めます。また、見ることができますuser.conf
、どこ追加のユーザーディレクトリ構成できます。
systemctl --user list-units
systemctl --user list-unit-files
user.conf
現在のユーザーのカスタム追加エントリを含む組織検索ディレクトリの「リアルタイム」リストを表示するには、次のようにします。systemctl show
。
systemctl --user show --property 'UnitPath' --value
(内のsystemctl --global list-unit-files
アイテムを除外している間にそのアイテムが含まれていることを確認しました。正しくないか、少なくとも一貫性がないと思いますか?)~/.config/systemd/user
systemctl --global list-units
ユーザーユニットは、ユーザーがログインするまでロード/実行されないため、ログインした--global status
各ユーザー(自分と他のユーザー)のデバイスステータスを表示できません。
sudo
/は実際にはシステムの観点からsu
「適切なログイン」を実行しないため、他のユーザーのユニットを管理するために使用しないでください。代わりに見てください--machine
、ここで、および@
は.host
現在のシステムを参照するために使用できます。sudo systemctl --user --machine [email protected]
# NOTE: demo status for yourself, but via sudo.
sudo systemctl --user --machine "${USER}@.host" status
すべてのDBusなどの機能を持つ別々のセッションで別のユーザーとして「ログイン」するには、次のようにします。machinectl
を起動しますshell
。 (これはmachinectl login
シェルも起動しますが、より面倒な「手動」ログインプロセスであることに注意してください。)
# NOTE: demo logging in as yourself, but with a custom/different login shell.
sudo machinectl shell "${USER}@.host" /bin/sh
また、見ることができますloginctl
特に、「手動」ログインを必要とせずにenable-linger
長期実行サービスを許可します。--user