Linux

在啟動時掛載一個 tmpfs 文件夾(易失性),並創建一個子文件夾

  • December 9, 2019

fstab目前使用帶有此文件的 Debian 9.5 :

# /etc/fstab: static file system information.
#
/dev/mmcblk1p1  /              ext4   noatime,errors=remount-ro  0  1    
tmpfs           /var/volatile  tmpfs  defaults,x-mount.mkdir     0  0

現在,如果該文件夾/var/volatile不存在,它將被創建 ( x-mount.mkdir)。/var/volatile/subfolder在安裝過程成功後創建子文件夾(例如)的正確方法是什麼?

我希望在 systemd 繼續其任務直到完成啟動之前創建這個子文件夾。

在探索了 systemd 之後,我偶然發現了一個很好的發現。事實證明,沒有必要創建自定義服務來處理這個問題,因為 systemd 已經為此提供了解決方案 ( systemd-tmpfiles)。它是一種管理臨時目錄和文件的結構化和可配置的方法。

https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html

只需創建一個/etc/tmpfiles.d/volatile-subfolder.conf包含以下內容的文件:

d       /var/volatile/subfolder 0755 root root - -

並重新啟動。

解決此問題的一種方法是創建一個新的 systemd 服務(或修改現有的服務)以使用unit 指令在您的/var/volatiletempfs 中創建此目錄。After=local-fs.target

[Unit]
Description=Tempfs initialize
After=local-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=mkdir -p /var/volatile/subfolder


[Install]
WantedBy=multiuser.target

將此添加到/etc/systemd/system/tmpfsinit然後執行通常的systemctl daemon-reload && systemctl enable tempfsinit.

或者,如果您已經有一個自定義的 systemd 服務,您還可以添加Afterunit 指令和命令來創建您需要的子目錄到ExecStartPre命令中。

引用自:https://unix.stackexchange.com/questions/554788