我正在迁移我的新贵 mysql 初始化脚本,该脚本检查是否有 >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。我可以制作一个虚拟单元并将其包含在Requires中吗?类似于 Upstart 的start on starting mysql
.
您能做的最好的是将 bash 的长行移动到它自己的文件中并
ExecStartPre=
调用该文件。没有内置
system
功能或指令可以根据可用磁盘空间有条件地启动服务。