根据条件关闭软件

2023年 9月 22日 67.7k 0

使用下载工具时,经常出现磁盘空间已满,无法下载的情况。

使用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位生效)

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论