执行一个命令,检查某个部分的磁盘空间是否大于1 KB
,返回-1
否则返回0
例如:
df| tail -n 1 | awk '{print $4}'
此命令返回根分区上的可用空间,此命令在磁盘上返回23%的空间。
如果空格小于-1
,我希望它返回1 KB
,否则返回0
我们不能为此写sh文件,所以我希望0
和-1
通过命令回答
已更新 它应该退出该返回码意味着它应该以returncode 0或-1
退出答案 0 :(得分:3)
这可能会:
df | awk 'END {print ($4<1024?"-1":"0")}'
0
您可以将数字更改为符合您需要的任何数字
END
用于获取最后一行,而不是tail
要将其输入退出/返回代码,请执行以下操作:
(exit $(df | awk 'END {print ($4<1024?"-1":"0")}')); echo "$?"
PS exit -1
会提供255
答案 1 :(得分:1)
使用stat
获取可用的块和块大小,创建表达式并输入bc
。
在这里,我在几个FS上测试它的值为10240 bytes ,其中一个少于免费,另一个少于:
$ stat -f /sys/fs/cgroup -c "(%a * %s >= 10240) - 1" | bc
-1
$ stat -f / -c "(%a * %s >= 10240) - 1" | bc
0
将10240调整为您想要的值,以字节为单位。
这是传统的df
输出:
$ df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 11440712 5517040 5319464 51% /
$ df /sys/fs/cgroup/
Filesystem 1K-blocks Used Available Use% Mounted on
none 4 0 4 0% /sys/fs/cgroup
相应的stat
基于:
$ stat -f / -c "%a * %s / 1024" | bc
5319464
请注意,使用此代替awk
来解析df
的输出对df
的可能输出格式更改不太脆弱。
要从脚本设置退出代码,捕获输出看起来没问题:
#!/bin/bash
echo Testing $@
exit `stat -f $@ -c "(%a * %s >= 10240) - 1" | bc`
请注意,您获得255而不是-1返回 - 但是 -1超出范围,因为退出代码只能是0到255.
$ ./sizer.sh /sys/fs/cgroup/
Testing /sys/fs/cgroup/
$ echo $?
255
$ ./sizer.sh /
Testing /
$ echo $?
0