回答:
systemdにディレクトリを作成させる2つの代替方法は、通常、RuntimeDirectory
サービスのユニットファイルでを宣言するのが最も簡単です。
RuntimeDirectory=, RuntimeDirectoryMode=
ディレクトリ名のリストを取得します。設定すると、指定された名前の1つまたは複数のディレクトリが/run
、ユニットの起動時に(システムサービスの場合)または$ XDG_RUNTIME_DIR(ユーザーサービスの場合)の下に作成され、ユニットの停止時に削除されます。ディレクトリには、アクセスモードで指定しなければならないRuntimeDirectoryMode=
、とユーザーとで指定されたグループによって所有されますUser=
とGroup=
。これを使用して、ユニットの1つまたは複数のランタイムディレクトリを管理し、そのライフタイムをデーモンランタイムにバインドします。指定するディレクトリ名は相対的である必要があり、「/つまり、作成または削除するために単純なディレクトリを参照する必要があります。これは、権限の不足により/ runにランタイムディレクトリを作成できない非特権デーモン、および使用後にランタイムディレクトリが自動的にクリーンアップされるようにする場合に特に便利です。
または、より複雑または異なる構成または寿命の保証が必要なランタイムディレクトリの場合tmpfiles.d
は、パッケージを使用してファイルをドロップします/usr/lib/tmpfiles.d/mydaemon.conf
。
#Type Path Mode UID GID Age Argument
d /run/mydaemon 0755 myuser myuser - -
/usr/lib/tmpfiles.d/php7.3-fpm.conf
おり/usr/lib/tmpfiles.d/php7.2-fpm.conf
、それでも/run/php
ディレクトリを作成しません。
開始時にディレクトリを作成するサービスを作成しました。
vim /etc/systemd/system/mydaemon-helper.service
の内容/etc/systemd/system/mydaemon-helper.service
:
[Unit]
Description=MyDaemon Helper Simple Service
After=network.target
[Service]
Type=simple
ExecStartPre=-/usr/bin/mkdir /var/run/mydaemon
ExecStart=/usr/bin/chown myuser:myuser /var/run/mydaemon
Restart=on-abort
[Install]
WantedBy=multi-user.target
次に、このサービスを開始しました:
systemctl start mydaemon-helper
systemctl status mydaemon-helper
出力:
[root@alpha etc]# systemctl status mydaemon-helper.service
● mydaemon-helper.service - MyDaemon Helper Simple Service
Loaded: loaded (/etc/systemd/system/mydaemon-helper.service; disabled; vendor preset: disabled)
Active: inactive (dead)
May 28 20:53:50 alpha systemd[1]: Starting MyDaemon Helper Simple Service...
May 28 20:53:50 alpha systemd[1]: Started MyDaemon Helper Simple Service.
最後に、起動時にロードするようにシステムに指示しました。
systemctl enable mydaemon-helper
RuntimeDirectory
これを行うのは良い方法である今、この答えが唯一の回避策ですので、私は、そのディレクティブが存在しないにsystemdの古いバージョン(208)を使用してサーバーに走りました。
systemd-sysv-generator
その週に十分な学習曲線があったため、後者を使用しました。その1つの.confファイルとその1行だけです。今は