共计 1386 个字符,预计需要花费 4 分钟才能阅读完成。
应用下载工具时,经常出现磁盘空间已满,无奈下载的状况。
应用 shell 写一个监控,每 2 分钟执行一次。判断以后磁盘的空间,低于 2G 时,敞开下载软件。
获取空间大小
➜ ~ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1s5s1 233Gi 14Gi 9.0Gi 62% 553757 2447547563 0% /
devfs 196Ki 196Ki 0Bi 100% 678 0 100% /dev
/dev/disk1s4 233Gi 1.0Gi 9.0Gi 10% 1 2448101319 0% /System/Volumes/VM
/dev/disk1s2 233Gi 300Mi 9.0Gi 4% 1209 2448100111 0% /System/Volumes/Preboot
/dev/disk1s6 233Gi 920Ki 9.0Gi 1% 17 2448101303 0% /System/Volumes/Update
/dev/disk1s1 233Gi 208Gi 9.0Gi 96% 1517128 2446584192 0% /System/Volumes/Data
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /System/Volumes/Data/home
可通过
df -h | grep "/$" | awk '{print $4}' | sed 's/Gi/ /g'
获取以后磁盘的残余空间
获取下载软件的 pid 并敞开
通过
ps -ef | grep /Applications/Thunder.app/Contents/MacOS/Thunder | grep -v grep | cut -c 7-15
可失去 pid。
应用
ps -ef | grep /Applications/Thunder.app/Contents/MacOS/Thunder | grep -v grep | cut -c 7-15 | xargs kill -9
敞开该过程。
命令详解 参见 批量 kill 掉蕴含某个关键字的过程
写成 shell 脚本,并配置定时工作
shell 脚本
#!/bin/bash
spareDisk=$(df -h | grep "/$" | awk '{print $4}' | sed 's/Gi/ /g')
echo '以后残余空间'$spareDisk'GB'
#echo "scale=0; ($spareDisk - 2)" | bc
safeDisk=$(echo "scale=0; ($spareDisk - 2)/1" | bc)
echo '以后空间离 2GB 还剩'$safeDisk'GB'
if [$safeDisk -gt 0]
then
echo '平安'
else
ps -ef | grep /Applications/Thunder.app/Contents/MacOS/Thunder | grep -v grep | cut -c 7-15 | xargs kill -9
echo '空间有余,已敞开软件'
fi
配置 crontab
crontab -e
*/3 * * * * /Users/xxxxx/kill.sh > space_check.log
每 3 分钟查看一次~
参考:
Linux bc 命令
bc 命令是任意精度计算器语言,通常在 linux 下当计算器用。
scale=2 设小数位,2 代表保留两位:
$ echo 'scale=2; (2.777 - 1.4744)/1' | bc
1.30
(/ 1 是为使准确到小数点后 2 位失效)
本文由 mdnice 多平台公布
正文完