根据条件关闭软件

简介: 根据条件关闭软件

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

使用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'

获取当前磁盘的剩余空间

微信截图_20230926172708.png

获取下载软件的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位生效)

目录
相关文章
|
运维 安全 网络协议
使用Frp的stcp实现安全内网穿透访问
使用Frp的stcp实现安全内网穿透访问
1379 1
使用Frp的stcp实现安全内网穿透访问
|
7月前
|
运维 数据可视化 前端开发
什么是低代码?低代码的技术发展、技术领域及对比纯代码的优劣势
低代码是一种通过可视化工具快速开发应用的技术模式,大幅降低开发门槛与成本。它结合了前端页面搭建、后端服务编排和自动化运维能力,使业务人员和技术团队都能高效构建企业应用,助力数字化转型。
|
8月前
|
编解码 缓存 开发工具
HarmonyOS NEXT实战:字符串工具
本课程讲解如何在HarmonyOS Next中使用ArkTS语言封装字符串工具类,实现字符串空值判断、编码转换、Base64编解码等功能,帮助开发者高效处理字符串操作。
264 1
|
9月前
|
设计模式 消息中间件 Java
【设计模式】【行为型模式】命令模式(Command)
一、入门 什么是命令模式? 命令模式是一种行为设计模式,它将请求或操作封装为对象,从而使你可以用不同的请求对客户进行参数化,并支持请求的排队、记录、撤销等操作。 命令模式的核心是将“请求”封装为独立的
267 15
|
存储 算法 安全
虚拟内存
【10月更文挑战第25天】虚拟内存是计算机系统中一项非常重要的技术,它通过扩展内存空间、提供内存保护和支持多任务处理等功能,提高了计算机系统的性能和可用性。虽然虚拟内存存在一些缺点,但通过合理的优化和管理,可以有效地发挥其优势,为计算机系统的稳定运行提供有力保障。
653 144
|
12月前
|
JSON Java 程序员
菜鸟之路Day17一一IO流(三)
本文主要介绍了Java中的打印流、压缩/解压缩流以及Commons-io和Hutool工具包的使用。打印流包括字节打印流(PrintStream)和字符打印流(PrintWriter),支持数据原样写出、自动刷新与换行。压缩/解压缩流通过ZipInputStream和ZipOutputStream实现文件和文件夹的压缩与解压。Commons-io和Hutool工具包提供了高效的IO操作方法,简化了文件复制、删除等常见任务。文中还展示了System.out.println()作为打印流的应用示例。
243 2
|
存储 监控 Linux
如何在 CentOS 7 中进行磁盘分区和挂载,包括准备工作、创建分区、格式化分区、创建挂载点、挂载分区及实践经验分享
随着业务扩展和技术进步,服务器硬盘容量需求不断增加。本文通过具体案例介绍如何在 CentOS 7 中进行磁盘分区和挂载,包括准备工作、创建分区、格式化分区、创建挂载点、挂载分区及实践经验分享,帮助读者更好地管理和利用磁盘空间。
763 3
|
前端开发 JavaScript API
一篇文章掌握Next.js的核心要点
一篇文章掌握Next.js的核心要点
2038 0
一篇文章掌握Next.js的核心要点
|
机器学习/深度学习 自然语言处理 数据库
文本摘要数据集的整理、总结及介绍(持续更新ing...)
文本摘要数据集的整理、总结及介绍(持续更新ing...)
文本摘要数据集的整理、总结及介绍(持续更新ing...)
|
JSON 前端开发 JavaScript
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕
1390 0
Threejs引入字体,实现3D文字,Canvas画布作为纹理贴图实现滚动字幕