繁体   English   中英

在“直到”循环中监视磁盘空间

[英]Monitor disk space in an `until` loop

我的第一个问题在这里。 希望它是一个好人。

所以,我希望创建一个杀死运行另一种语言的脚本arecord时,我的盘达到一定的使用。 (我应该指出,我不确定我是如何到达那个df过滤器的...只是有点搜索...)我的计划是在以下目录中同时运行两个脚本(一个记录和一个监视磁盘使用情况)分开的screen

我正在Raspberry Pi上进行所有操作,顺便说一句。

到目前为止,这是我的代码:

#!/bin/bash

DISK=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')

until [ $DISK -ge 50 ]
    do
        sleep 1
    done

killall arecord

当我使用起始值(“ 50”更改为“ 30”左右)播放时,此代码有效。 但这似乎并不能以我希望的方式“监视”磁盘。 我对发生的事情有所了解:变量DISK仅分配一次,而不定期检查或重新定义。

换句话说,我可能想要我的until循环中从df “获取”磁盘使用率的内容,对吗? 有什么好的解决方法?

=

PS我对听到如何将整个脚本的目的结合到运行记录本身的脚本中非常感兴趣,但是现在这超出了我的范围……还有另一个问题……

设置DISK ,因为它是在循环开始之前完成,而不是作为循环过程的一部分进行一次。

一个简单的解决方法是将对磁盘空间的评估合并到实际的while循环本身中,例如:

#!/bin/bash
until [ $(df / | awk 'NR==2 {print $5}' | tr -d '%') -ge 50 ] ; do
    sleep 1
done
killall arecord

您会注意到我也对该命令做了一些小的修改,特别是:

  • 您可以使用awk本身从ps输出中获取相关行,而无需在单独的管道阶段中使用grep
  • 我更喜欢用tr删除单个字符, sed可以做到,但这有点矫kill过正。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM