Memory 在磁盘已满之前暂停进程

Memory 在磁盘已满之前暂停进程,memory,linux-df,Memory,Linux Df,某些进程(如git-gc--aggressive)需要很长时间才能运行,占用大量磁盘空间,如果磁盘空间用完就会死掉。因此,如果磁盘空间即将用完,我想暂停它们,这样我就有时间释放一些内存。我怎样才能做到这一点呢?这是我提出的一个初步解决方案。使用Mac OS X进行测试。欢迎提供建议 #/bin/bash FILESYSTEM=“/dev/disk1” DF=/usr/local/opt/coreutils/libexec/gnubin/DF OSASCRIPT=/usr/bin/OSASCRIP

某些进程(如
git-gc--aggressive
)需要很长时间才能运行,占用大量磁盘空间,如果磁盘空间用完就会死掉。因此,如果磁盘空间即将用完,我想暂停它们,这样我就有时间释放一些内存。我怎样才能做到这一点呢?

这是我提出的一个初步解决方案。使用Mac OS X进行测试。欢迎提供建议

#/bin/bash
FILESYSTEM=“/dev/disk1”
DF=/usr/local/opt/coreutils/libexec/gnubin/DF
OSASCRIPT=/usr/bin/OSASCRIPT
如果![[-x$DF]];然后回显“错误:$DF不可执行。”;出口1;fi
PID=$1
停留时间=2美元
#验证输入
如果[[-n${PID/[0-9]/}]];然后echo“Error:第一个参数应该是整数”;出口1;fi
如果[[-n${STOPAT/[0-9]/}]];然后echo“Error:第二个参数应该是整数”;出口1;fi
红色='\033[0;31m';紫色='\033[0;35m';蓝色='\033[0;36m'
NC='\033[0m'#无颜色
echo-e“当${PURPLE}$文件系统${NC}上还有${PURPLE}$STOPAT${NC}字节时,将暂停以下进程”
进程=`ps-p$PID | grep$PID`
echo-e“${BLUE}$进程${NC}”
#每秒钟检查一次,看看文件系统是否还有超过STOPAT字节。
虽然是真的;做
左=`$DF | grep-m1$FILESYSTEM | tr-s‘| cut-d‘-f4`
echo-ne“$left bytes left\r”;
如果[[$left-lt$STOPAT]];则
MSG=“暂停进程…$PID”;
echo$MSG;
如果[[-x$OSASCRIPT]];则
$OSASCRIPT-e“显示通知”$MSG“
fi
kill-TSTP$PID
打破
fi
睡眠1秒
完成
您需要更改
DF
以匹配您的
DF
(我没有直接调用
DF
,因为在我的系统上,它别名为
DF-h