系统运行状态信息是我们关注的重点,通过当前系统的输出信息,如内存大小、进程数量、运行时间等,以便分析CPU负载、软硬件资源占用情况,确保系统高效和稳定。Linux系统中,提供sysinfo以获取相关运行状态信息。

  • sysinfo调用原型
#include <sys/sysinfo.h>
int sysinfo(struct sysinfo *info);

  形参,info,返回状态信息
  返回,成功反0,失败返回-1,错误码存于error

  • 具体看看struct sysinfo数据结构
struct sysinfo {  long uptime;          /* 系统运行时间 */  unsigned long loads[3];/* 平均负载,与top命令查看的类似 */    /* 1, 5, and 15 minute load averages */  unsigned long totalram;  /* 总内存 */  unsigned long freeram;   /* 空闲内存 */  unsigned long sharedram; /* 共享内存 */  unsigned long bufferram; /* 缓冲区*/  unsigned long totalswap; /* 交换区大小 */  unsigned long freeswap;  /* 空闲交换分区*/  unsigned short procs;    /* 进程数目 */  unsigned long totalhigh; /* 总内存高位 */  unsigned long freehigh;  /* 空闲内存高位 */  unsigned int mem_unit;   /* 以字节为单位的内存大小 */  char _f[20-2*sizeof(long)-sizeof(int)];   /* 保留空间 */
};
  • sysinfo用法

  可以通过万能“男人”man查看其用法。

acuity@ubuntu:~$ man sysinfo
SYSINFO(2)                                                                                           Linux Programmer's Manual                                                                                           SYSINFO(2)NAMEsysinfo - returns information on overall system statisticsSYNOPSIS#include <sys/sysinfo.h>int sysinfo(struct sysinfo *info);DESCRIPTIONUntil Linux 2.3.16, sysinfo() used to return information in the following structure:struct sysinfo {long uptime;             /* Seconds since boot */unsigned long loads[3];  /* 1, 5, and 15 minute load averages */unsigned long totalram;  /* Total usable main memory size */unsigned long freeram;   /* Available memory size */unsigned long sharedram; /* Amount of shared memory */unsigned long bufferram; /* Memory used by buffers */unsigned long totalswap; /* Total swap space size */unsigned long freeswap;  /* swap space still available */unsigned short procs;    /* Number of current processes */char _f[22];             /* Pads structure to 64 bytes */};and the sizes were given in bytes.Since Linux 2.3.23 (i386), 2.3.48 (all architectures) the structure is:struct sysinfo {long uptime;             /* Seconds since boot */unsigned long loads[3];  /* 1, 5, and 15 minute load averages */unsigned long totalram;  /* Total usable main memory size */unsigned long freeram;   /* Available memory size */unsigned long sharedram; /* Amount of shared memory */unsigned long bufferram; /* Memory used by buffers */unsigned long totalswap; /* Total swap space size */unsigned long freeswap;  /* swap space still available */unsigned short procs;    /* Number of current processes */unsigned long totalhigh; /* Total high memory size */unsigned long freehigh;  /* Available high memory size */unsigned int mem_unit;   /* Memory unit size in bytes */char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding to 64 bytes */};and the sizes are given as multiples of mem_unit bytes.
  • 来个具体例子
#include <stdio.h>
#include <sys/sysinfo.h>int main(int argc,char **argv)
{struct sysinfo sys_info;if (sysinfo(&sys_info)){perror("call sysinfo failed\n");return -1;}printf("running time: %lu S\n", sys_info.uptime);printf("1 minute load average : %lu\n", sys_info.loads[0]);    printf("5 minute load average : %lu\n", sys_info.loads[1]);    printf("15 minute load average: %lu\n", sys_info.loads[2]);printf("total memory: %lu MB\n", sys_info.totalram/1024/1024);printf("free memory: %lu MB\n", sys_info.freeram/1024/1024);printf("swap total memory: %lu MB\n", sys_info.totalswap/1024/1024);printf("swap free memory: %lu MB\n", sys_info.freeswap/1024/1024);printf("running progress: %u\n", sys_info.procs);    return 0;
}
  • 实例运行结果
acuity@ubuntu:/home$ gcc sysinfo.c -o sysinfo
acuity@ubuntu:/home$ ./sysinfo
running time: 13856 S
1 minute load average : 4032
5 minute load average : 992
15 minute load average: 256
total memory: 7965 MB
free memory: 6163 MB
swap total memory: 0 MB
swap free memory: 0 MB
running progress: 452

通过sysinfo获取Linux系统状态信息相关推荐

  1. linux系统状态(磁盘大小、内存、进程、cpu使用率、网络连接)

    分享一下自己做的一个获取Linux系统状态的类(c++)(代码整理后的,在物理机上测试可以,在vm虚拟机上测试,磁盘计算有问题) 头文件 #ifndef LINUXSERVERSTATE_H #def ...

  2. 查看Linux系统版本信息

    扫码关注获取更多IT知识 在使用Linux操作系统的时候,有时候会需要了解当前使用的系统版本信息,特别是在给别人进行服务器部署运维的时候,准确的系统版本信息至关重要,今天明月就给大家分享几个获取 Li ...

  3. 使用Python获取Linux系统的各种信息

    From: http://www.jb51.net/article/52058.htm 这篇文章主要介绍了使用Python获取Linux系统的各种信息,例如系统类型.CPU信息.内存信息.块设备等,需 ...

  4. 监控linux系统状态

    监控linux系统状态 监控介绍 安装zabbix4.0 监控客户机 解决中文名称不能写数据库的问题 解决图形中乱码 zabbix邮件告警 zabbix监控Nginx zabbix监控Tomcat z ...

  5. 查看linux系统版本信息 lsb_release -a

    查看linux系统版本信息 查看linux系统版本信息命令:lsb_release -a linux查询gcc版本及相关的命令 一. 1.gcc版本 gcc -v cat /proc/version ...

  6. Unix toolbox注解2之Linux系统状态用户和限制

    Unix toolbox注解1之Linux系统硬件信息 Unix toolbox注解2之Linux系统状态用户和限制 本系列文章为笔者对Unix toolbox的一些个人注解,加入个人的一些元素,删减 ...

  7. python相关linux_Python实现获取Linux系统基本信息

    Python实现获取Linux系统基本信息,获取信息如下: 主机名 系统版本 系统内核版本 总内存 CPU生厂商 CPU总核心数 服务器生厂商 服务器序列号 各网卡IP,MAC和网卡名信息 实现代码如 ...

  8. 获取linux命令硬盘信息,Linux下如何获取磁盘信息

    HUX布斯 1,Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息.但是对于双核的cpu,在cpuinfo中会看到两个cpu.常常会让人误以为是两个单核的cpu.其实应该通过Phy ...

  9. 监控Linux系统状态的命令

    监控Linux系统状态的命令1 :w uptime命令查看系统负载 : w/uptime 最后面三个数字表示1分钟 ,5分钟 ,15分钟 平均有多少进程占用CPU 某一时刻1颗CPU只能有一个进程在使 ...

最新文章

  1. cisco路由器视频下载
  2. 使用ContentProvider
  3. 【bzoj5082】弗拉格 矩阵乘法
  4. Sam Palmisano Reveals Secret Behind IBM's Century Of Success
  5. jQuery-对Select的操作集合
  6. %@taglib prefix=c uri=http://java.sun.com/jsp/jst1/core%报错
  7. 解决spring整合mybatis时错误 ‘org.mybatis.spring.mapper.MapperScannerConfigurer#0‘
  8. Bootstrap研究0-概述
  9. PHP常用函数之字符串处理
  10. 2021-10-08梦笔记
  11. c command语言学例子,语言学资料(一)CHAPTER 4
  12. 深富策略短线获利了结为主
  13. latex利用bibmap生成双语对照的文献表
  14. @所有人:产品汪、运营喵专属台历,你值得拥有!
  15. graph sage 翻译
  16. 数据库表结构导出(编写数据库设计文档)
  17. Mac DataGrip 闪退问题
  18. IUV“经世杯”option3X
  19. Python生成器推导式
  20. Jenkins+Allure测试报告+飞书机器人发送通知

热门文章

  1. win10怎么创建局域网共享文件
  2. python界面开发案例:制作一个计算器软件
  3. 汽车芯片,竞逐新周期
  4. 数据处理---之---倒排索引---讲解
  5. MS08067红队攻防第四期 开班啦~
  6. 声音数据集汇总【持续更新】
  7. 【算法】算法中的趣味数学(一)
  8. js中给数组添加元素的方法有哪些
  9. 卑微的人依然可以有美丽的梦想——一段让无数人感动的视频
  10. 用Foxmail for Mac客户端登录网易163邮箱