gpt4 book ai didi

systemd - 脚本状态的条件?

转载 作者:行者123 更新时间:2023-12-03 21:32:28 25 4
gpt4 key购买 nike

我有一个 SystemD 单元,它在云中格式化文件系统。

根据 the systemd unit documentation ,存在许多不同的Condition*单元接受的参数来确定它们是否应该运行。我需要能够确定是否 /dev/xvdb格式为 ext4,我发现这样做的唯一方法是执行以下操作:

if ! blkid -t TYPE=ext4 | grep xvdb >/dev/null; then
mkfs.ext4 /dev/xvdb
fi

虽然我可以将这个 bash 脚本放在文件系统的某个地方,但如果 SystemD 可以执行一个脚本来确定服务是否应该有条件地启动,这似乎更直观。

是否有解决方法不涉及在文件系统上删除文件?

我看到的唯一两个选择是:
  • 在文件系统上放置一个 bash 脚本,它总是返回 0 并且只在必要时进行格式化。
  • 使用 ExecStartPost , touch文件系统上的一个文件作为标签,然后 ConditionPathExists=!/path .

  • 有没有办法让 SystemD 调用脚本来确定它是否应该执行一个单元?

    最佳答案

    对于 systemd v243 及更高版本(后 #12933),您可以使用 ExecCondition :

    ExecCondition=sh -c '! blkid -t TYPE=ext4 | grep -q xvdb'

    请注意 systemd 如何解释 command linesspecial executable prefixes ,这在条件下可能有用(或令人惊讶)。

    关于systemd - 脚本状态的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067756/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com