Linux下获取系统的磁盘使用情况、内存使用情况使用QT界面进行显示

简介: Linux下获取系统的磁盘使用情况、内存使用情况使用QT界面进行显示

一、环境介绍

操作系统:  ubuntu 18.04 64位  PC机

QT版本:  5.12

二、运行效果图

image.png

三、核心代码

mainwindow.cpp代码:

#include "widget.h"
#include "ui_widget.h"
#include <QProcess>
#include <QDebug>
#include <sys/sysinfo.h>
#include <QTimer>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QTimer::singleShot(1000, this, SLOT(GetSystemInfo()));
}
void Widget::GetSystemInfo(void)
{
    /*1. 获取当前系统磁盘使用情况*/
    /*
     * 格式:  /dev/sda1        49G   38G  9.3G   81% /
     */
    QProcess process;
    process.start("df -h");
    process.waitForFinished();
    QByteArray output = process.readAllStandardOutput();
    QString str_output = output;
    str_output=str_output.mid(str_output.indexOf("/dev/sda1"));
    //得到: /dev/sda1        49G   38G  9.3G   81%
    str_output=str_output.section('/',0,2);
    str_output=str_output.section(' ',1);
    //将多个空格换成单个空格
    str_output=str_output.replace(QRegExp("[\\s]+"), " ");
    QString text;
    text="磁盘总容量: "+str_output.section(' ',1,1)+"\n";
    text+="已用: "+str_output.section(' ',2,2)+"\n";
    text+="可用: "+str_output.section(' ',3,3);
    //获取百分比
    ui->progressBar_rom->setValue(str_output.section(' ',4,4).section('%',0,0).toInt());
    ui->label_ROM->setText(text);
    /*2. 获取当前系统内存使用情况*/
    struct sysinfo s_info;
    if(sysinfo(&s_info)==0)
    {
        text=tr("总内存: %1 KB\n").arg(s_info.totalram/1024);
        text+=tr("未使用内存: %1 KB\n").arg(s_info.freeram/1024);
        text+=tr("交换区总内存: %1 KB\n").arg(s_info.totalswap/1024);
        text+=tr("交换区未使用内存: %1 KB\n").arg(s_info.freeswap/1024);
        text+=tr("系统运行时间: %1s").arg(s_info.uptime);
        ui->label_RAM->setText(text);
    }
     QTimer::singleShot(1000, this, SLOT(GetSystemInfo()));
}
Widget::~Widget()
{
    delete ui;
}

mainwindow.h代码:

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private slots:
    void GetSystemInfo(void);
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

image.png

目录
相关文章
|
2月前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
273 0
Linux内存问题排查命令详解
|
7月前
|
存储 监控 Linux
Linux: 检测磁盘坏块 你得会吧!
Linux: 检测磁盘坏块 你得会吧!
456 19
Linux: 检测磁盘坏块 你得会吧!
|
6月前
|
缓存 Linux 数据安全/隐私保护
Linux环境下如何通过手动调用drop_caches命令释放内存
总的来说,记录住“drop_caches” 命令并理解其含义,可以让你在日常使用Linux的过程中更加娴熟和自如。
1213 23
|
6月前
|
Linux
在线对Linux进行磁盘扩容的技术指南。
综上所述,Linux磁盘扩容的过程,重要的不仅是技术,更是对每一步骤的深刻理解和投入的爱心。只要手握正确的工具,我们不仅能满足"孩子"的成长需求,还能享受其中的乐趣和成就。
452 10
|
7月前
|
监控 固态存储 Linux
如何判断Linux磁盘是SSD还是HDD?
总的来说,判断磁盘是SSD还是HDD并不复杂,只需要使用正确的命令和方法,就可以轻松得到结果。希望这些信息对你有所帮助,如果你还有其他问题,欢迎随时提问。
723 15
|
8月前
|
监控 Linux Python
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
294 27
|
8月前
|
Linux
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
778 10
|
9月前
|
缓存 NoSQL Linux
Linux系统内存使用优化技巧
交换空间(Swap)的优化 禁用 Swap sudo swapoff -a 作用:这个命令会禁用系统中所有的 Swap 空间。swapoff 命令用于关闭 Swap 空间,-a 参数表示关闭 /etc/fstab 文件中配置的所有 Swap 空间。 使用场景:在高性能应用场景下,比如数据库服务器或高性能计算服务器,禁用 Swap 可以减少磁盘 I/O,提高系统性能。
384 3
|
9月前
|
缓存 Linux
Linux查看内存命令
1. free free命令是最常用的查看内存使用情况的命令。它显示系统的总内存、已使用内存、空闲内存和交换内存的总量。 free -h • -h 选项:以易读的格式(如GB、MB)显示内存大小。 输出示例: total used free shared buff/cache available Mem: 15Gi 4.7Gi 4.1Gi 288Mi 6.6Gi 9.9Gi Swap: 2.0Gi 0B 2.0Gi • to
750 2
|
9月前
|
存储 固态存储
磁盘和内存的区别
存储特性: • 磁盘:非易失性存储,数据在断电后不会丢失,适合长期存储数据。 • 内存:易失性存储,数据在断电后会丢失,适合临时存储当前运行的程序和数据。 容量: • 磁盘:容量通常较大,从几百GB到数TB不等,适合存储大量的文件和数据。 • 内存:容量相对较小,一般在几GB到几十GB之间,用于提供快速的临时存储空间。 速度: • 磁盘:读写速度较慢,HDD一般在几十MB/s,SSD可以达到几百MB/s甚至数GB/s。 • 内存:读写速度非常快,通常在几十纳秒到几百纳秒之间,能够快速响应CPU的指令。
621 2