根据条件关闭软件

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: 根据条件关闭软件

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

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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
Windows
Win10彻底关闭更新的三步操作
Win10彻底关闭更新的三步操作
28 0
|
10月前
|
Linux
linux中使用if/else语句实现条件控制的示例
linux中使用if/else语句实现条件控制的示例
86 3
|
运维 Apache 数据库
DO447管理任务执行--控制提权
DO447管理任务执行--控制提权
142 0
DO447管理任务执行--控制提权
|
运维 API 网络安全
DO447管理任务执行--控制任务执行
DO447管理任务执行--控制任务执行
126 0
DO447管理任务执行--控制任务执行
SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 -
SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 -
SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 -
|
网络安全 Windows
Windows 技术篇-是否允许程序连接网络误操作解除方法,如何解除阻止程序连接网络,程序连接网络设置方法
Windows 技术篇-是否允许程序连接网络误操作解除方法,如何解除阻止程序连接网络,程序连接网络设置方法
270 0
Windows 技术篇-是否允许程序连接网络误操作解除方法,如何解除阻止程序连接网络,程序连接网络设置方法