systemdサービスを構成すると、PrivateTmp=true
サービスは個人用tmp
ディレクトリを使用します。代わりに、/tmp
これらのサービスは次のディレクトリを使用します。
/tmp/systemd-private-94ebb0a353a34259b6c794fe503c35f8-colord.service-Rb11Zg/tmp
は94ebb0a353a34259b6c794fe503c35f8
開始ID(/proc/sys/kernel/random/boot_id
)で、次の6桁のIDは何ですかservice-
?どのファイルに保存されていますか?
答え1
systemd-privateディレクトリ名の末尾にある6つのランダム文字は、ディレクトリ名が一意であり、作成時に既存のディレクトリと競合しないようにするためです。 systemd v245以降、これは一意の一時ディレクトリを作成し、一意性を確保するために任意のサフィックスを生成するsetup_one_tmp_dir()
関数src/core/namespace.c
呼び出しです。mkdtemp()
mkdtemp()
特定のデバイスの現在の一時ディレクトリパスをsystemdから直接抽出する方法が見つかりませんでしたが、本当に必要な場合は、次の2つの手順でその情報を取得できます。
- PIDを実行し
systemctl show some.service -p MainPID
て抽出します(またはセル内の1つのプロセスのPIDを取得します)。 - 興味
/proc/ThePID/mountinfo
のあるインストールを検索し、そこからパスを抽出します。/tmp
/var/tmp
機械装置の組み合わせに複数のsystemd-privateディレクトリーがある場合にのみ、これを実行する必要があります。 systemdは何らかの理由で実行が停止したデバイスのディレクトリを削除するため、それ自体はまれです。もちろん、誰かがシステム化された個人ディレクトリを作成して混乱を招く可能性があるため、セキュリティがsystemd-private-$bootID-some.service-*
懸念される場合にのみこれを実行しないでください。