使 systemd 服务有可用磁盘空间的条件

使 systemd 服务有可用磁盘空间的条件

正在迁移我的 upstart mysql init 脚本,该脚本检查是否有 >100MB 的可用磁盘空间,如果没有,则休眠 10 秒并重试。

我可以像这样在systemd中实现它,但它会伤害我的眼睛。

[Service]
RestartSec=10
Restart=on-failure
ExecStartPre=/bin/bash -c '/usr/bin/test $(($(/usr/bin/stat -f --format="%a*%S/1024/1024" /data))) -gt 100 || (echo Less than 100MB available on /data; /bin/false)'
ExecStart=/usr/sbin/mysqld
TimeoutSec=300

有没有更干净的解决方案?可能是当可用磁盘空间低于某个阈值时停止 mysql。我可以创建一个虚拟单元并将其包含在需要? 类似于 Upstart 的start on starting mysql

答案1

您所能做的最好的事情就是将长行 bash 移到其自己的文件中并调用ExecStartPre=该文件。

没有内置system功能或指令可以根据可用磁盘空间量有条件地启动服务。

相关内容