systemdでtmp file/directoryの作成

systemdにはsystemd-tmpfilesという機能が合ってテンポラリなファイルやディレクトリをsystemdを使って作ることができます。systemdを使うので使い道としてはシステムの起動時に作るというのが基本的なユースケースだと思います。
マニュアルはsystemd-tmpfilestmpfiles.dになります。

systemd-tmpfilesは設定ファイルに従ってディレクトリ/ファイルの作成をします。設定ファイルの置き場所は以下の3箇所があります。この中のどこにファイルを置くかというと/etc/tmpfiles.dが無難でしょうね。/runは大概のディストリビューションだとtmpfsでしょうし、/usr/lib/は基本的にディストリビューションが使いますし。

  • /etc/tmpfiles.d/*.conf
  • /run/tmpfiles.d/*.conf
  • /usr/lib/tmpfiles.d/*.conf

では軽く使ってみます。例えば/homeの下にtmpというディレクトリ、/dev/nullへのシンボリックリンクな/home/null,hello, worldと書いてあるファイルを作ってみます。この場合、下記のようになります

masami@linux-tip:~$ cat /etc/tmpfiles.d/home.conf
#Type Path Mode UID  GID  Age Argument
d /home/tmp 0755 root root 1d -
L+ /home/null - - - - /dev/null
f /home/foobar 0644 root wheel - "hello, world"

そうするとこのようにファイル・ディレクトリができているのが確認できます。

masami@linux-tip:~$ ls -la /home/
total 20
drwxr-xr-x  4 root   root   4096 Sep 21 12:04 ./
drwxr-xr-x 17 root   root   4096 Jul 22 23:33 ../
-rw-r--r--  1 root   wheel    24 Sep 21 12:05 foobar
drwx------  9 masami masami 4096 Sep 21 12:03 masami/
lrwxrwxrwx  1 root   root      9 Sep 21 11:59 null -> /dev/null
drwxr-xr-x  2 root   root   4096 Sep 21 11:59 tmp/
masami@linux-tip:~$ cat /home/foobar
hello, worldhello, worldmasami@linux-tip:~$

基礎からわかる Go言語

基礎からわかる Go言語