有没有办法在 systemd 服务初始化期间创建 ramdisk,并在创建后和“主”服务进程启动后运行一些命令?
基本上我想要完成的是,在启动 Postgres 数据库(例如sudo systemctl start postgresql@13-my_db
)时,我首先创建一个 ramdisk,运行一个从安全保管库读取 TLS 证书和私钥的脚本,并将其存储在具有正确权限的该 ramdisk 中,然后 Postgres 可以开始从该 ramdisk 读取文件。
此外,当服务停止时,文件也会消失,因为 ramdisk 会被系统自动卸载。
这可能吗?我发现几乎可行的唯一方法是使用TemporaryFileSystem
功能来创建 ramdisk,然后使用ExecStartPre
它来运行获取文件的脚本。
这可行,但不幸的是,systemd 似乎在ExecStartPre
和ExecStart
调用之间卸载了 ramdisk,因此当 Postgres 数据库启动时,ramdisk 已经不可用。