正在迁移我的 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
功能或指令可以根据可用磁盘空间量有条件地启动服务。