我有一个 SystemD 单元,用于格式化云中的文件系统。
根据systemd 单元文档,单元接受许多不同的Condition*参数来确定它们是否应该运行。我需要能够确定是否/dev/xvdb格式化为 ext4,我发现做到这一点的唯一方法是执行以下操作:
if ! blkid -t TYPE=ext4 | grep xvdb >/dev/null; then
mkfs.ext4 /dev/xvdb
fi
Run Code Online (Sandbox Code Playgroud)
虽然我可以将此 bash 脚本放在文件系统上的某个位置,但如果 SystemD 可以执行脚本来确定服务是否应有条件启动,则看起来会更直观。
是否有解决方法,不涉及在文件系统上删除文件?
我看到的唯一两个选择是:
ExecStartPost,touch文件系统上的文件作为标记,然后ConditionPathExists=!/path.有没有办法让 SystemD 调用脚本来确定它是否应该执行某个单元?
对于 systemd v243 及更高版本( #12933之后),您可以使用ExecCondition:
ExecCondition=sh -c '! blkid -t TYPE=ext4 | grep -q xvdb'
Run Code Online (Sandbox Code Playgroud)
请注意 systemd 如何解释命令行和特殊的可执行前缀,这在某些情况下可能很有用(或令人惊讶)。
| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |