Qt实现Linux下的硬盘空间监测和文件清理
引言
与数据文件有关的应用软件一般都会有硬盘检测与文件清理的功能。
本文代码实现在Linux系统下使用Qt编写的硬盘监测与文件清理模块。
代码之路
当内存占比大于85%时,会进行文件的删除,保留最新的半年来的文件。
内存监测部分的实现,是定期执行Linux的shell命令(df -k);
文件删除比较简单,使用QDir::entryInfoList函数与QFileInfo函数的配合。
废话不说,直接上代码。
硬盘空间监测函数:
bool SysResource::get_disk_space()
{QProcess process;process.start("df -k");process.waitForFinished();process.readLine();while(!process.atEnd()){QString str = process.readLine();if (str.startsWith("/dev/root")){str.replace("\n", "");str = str.simplified();auto lst = str.split(" ");if (lst.size() > 5){QString tmpPercent = lst[4].toString();QString PercentStr = tmpPercent.left(tmpPercent.size() - 1);int PercentInt = QString::number(PercentStr);if (PercentInt > 85){qDebug() << "Memery used percent is:" << tmpPercent <<", start Delete files";return false;}}}}return true;
}
文件清理函数,是一个定时器的槽函数:
void SysResource::OnDataRemove()
{if (get_disk_space()){return;}QDir dir("xxx");dir.setFilter(QDir::Files|QDir::NoSymLinks|QDir::NoDotAndDotDot);dir.setSorting(QDir::Time);QFileInfoList fileList = dir.entryInfoList();int fileNum = fileList.size();if (fileList.size() > 180) //180天--1天一个文件{for (int i = 180; i < fileNum; i++){QFileInfo fileInfo = fileList.at(i);fileInfo.dir().remove(fileInfo.fileName());}}
}
总结
硬盘空间检测和文件清理的功能实现比较像软件的日志模块,需求简单的话代码量非常少,但是要求比较高的话就不容易实现了。文章分享一个简单需求的实现,对复杂要求还是很有借鉴意义的。
Qt实现Linux下的硬盘空间监测和文件清理相关推荐
- Linux下显示硬盘空间的两个命令
1.df -h ,用于显示目前所有文件系统的可用空间及使用情况,示例如下: [root@msg45 ~]# df -h Filesystem Size Used ...
- linux下查找占空间大的文件,Linux中查找当前目录下占用空间最大的前10个文件
du命令 计算出单个文件或者文件夹的磁盘空间占用 -a或--all:包含全部的文件系统: --block-size=:以指定的区块大小来显示区块数目: -h或--human-readable:以可读性 ...
- 固态硬盘对于linux提升,对提升Linux下固态硬盘使用率的探讨
固态硬盘(SSD)不是普通的硬盘.文件在固态硬盘中的处理方式与地普通硬盘中的方式完全不同,如果安装Linux不同版本时没有把这些差异考虑进去,就很难充分发挥固态硬盘的优势,而且很可能在使用一段时间后造 ...
- linux下的磁盘配额简介暨 linux下加挂硬盘续
linux下的磁盘配额简介暨 linux下加挂硬盘续 实验环境 VMware 6.5.2 +redhat Enterprise 5 as 以上是内核版本,还有方便起见加挂一块硬盘 这只是我的环境 实验 ...
- Linux 下固态硬盘恢复误删除文件
首发地址:学习日记 Linux 下固态硬盘恢复误删除文件 – 学习日记 上次分享了一则Linux下恢复误删除文件的视频,有朋友在视频下方询问是否机械硬盘,由此引出今天这则Linux下固态硬盘恢复误删除 ...
- u盘linux需要多大内存,linux下获取硬盘、内存、U盘大小及使用大小
/* * 获取硬盘大小;内存大小;usb大小 */ #ifndef SYSINFOGET_H #define SYSINFOGET_H #include //磁盘信息 #include #includ ...
- 如何查看linux的分区类型,linux 下查看硬盘分区类型
可以用 df 这个命令 具体 要 man df 仔细看看 实例 [root@localhost mnt]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 /d ...
- 在linux中hdparm作用,Linux下hdparm硬盘测速
在Linux下可以使用hdparm对硬盘进行测试或者查看硬盘的相关信息.这样你就知道了硬盘读写速度. Hdparm功能说明:显示与设定硬盘的参数. 语 法:hdparm [-CfghiIqtTvyYZ ...
- linux 下检查硬盘坏道/扇区
http://zhidao.baidu.com/question/238047105.html http://zhangwenxin82.blog.163.com/blog/static/114595 ...
最新文章
- Linux echo 显示内容颜色
- SQL SERVER 2005 同步复制技术 发布与订阅功能使用说明
- Linq to Sql : 三种事务处理方式
- ListView中convertView和ViewHolder的工作原理
- qtextedit 默认文案_QTextEdit的paste
- Linux技术网站中文,Linux技术网站,putty工具,中文显示设置
- 主机管理+堡垒机系统开发:前端批量命令结果(十二)
- Hibernate学习资源
- 【转】Java多线程面试问题集锦
- C语言编程入门——程序练习(下)
- oracle服务商前几名,oracle厂商服务有哪几种
- [宋史学习] 取蜀将帅不利
- java游戏管理器 闪退_手游频繁崩溃”闪退”? 从程序上找原因
- 【CSS】CSS中alt属性和title属性用法
- stm32USB之模拟U盘
- 北京大学可视化发展前沿暑期学校第四讲
- LTE下行传输机制——PHICH信道
- 华为 AISC 研究型实习生招聘~北京 or 深圳
- 打击侵犯个人信息犯罪,推动信息保护立法
- MATLAB基本常识
热门文章
- oracle在linux自启动和停止脚本
- python幂函数无序分布_Python:从幂律分布中生成随机数
- 南卫理公会大学计算机科学,南卫理公会大学计算机科学与工程硕士
- Lync Server 2010 安装指南
- Shadowing, Overriding, Hiding and Obscuring
- 计算机网络(五)—— 运输层(8):TCP的连接建立和连接释放
- Win7任务栏相关设置
- 操作 Windows7 任务栏的快捷方式
- 在虚拟机端搭建lamp和通过docker技术在云服务器搭建lamp环境
- 马斯克被曝摆架子/ 朱晓彤卸任特斯拉中国法人/ 苹果M2Pro首发台积电3nm...今日更多新鲜事在此...