在啟動時掛載一個 tmpfs 文件夾(易失性),並創建一個子文件夾
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/volatile
tempfs 中創建此目錄。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 服務,您還可以添加
After
unit 指令和命令來創建您需要的子目錄到ExecStartPre
命令中。