远程监控linux系统信息内存,cpu

2024-05-08 11:18

本文主要是介绍远程监控linux系统信息内存,cpu,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、主要指令

当需要监控linux的系统运行状态时,不免要获取部分系统信息如内存cpu等,主要指令有:

1.top 用于获取cpu等信息,类似于windows上面的任务管理器

2.free 用于获取内存信息,包括可用内存等

3.df用于获取瓷盘信息,如瓷盘的使用空间和剩余空间等

二、命令执行

这些指令要如何通过windows上的程序下发到Linux执行并获取返回值呢,这里需要用到ssh.net库,具体用法详见代码。

三、权限管理

如果不以root登录的话,是没有权限执行重启等操作的的。那么,如何以远程方式登录root账户呢?这就需要在ssh中配置允许以root账户登录:

方法如下:

vi /etc/ssh/sshd_config,将PermitRootLogin设置为yes。如果没有该项的话,向其添加:

PermitRootLogin yes

2. 重启ssh服务

Service sshd restart 

若不行的话就重启机器。

    说明:server表示linux 服务器ip,username表示用户名,由于权限限制,所以用户名一般就是root,password表示linux密码

这三个参数要记得在测试和正式运行时做相应修改。

        /// <summary>/// 获取linux内存cpu磁盘信息/// </summary>/// <returns></returns>static string GetTerminalSystemInfo(){string cpucommand = "top -bn 1 -i -c|grep %Cpu";string memcommand = "free -m | grep cache:";string discommand = "df -h | grep sda1";try{using (var client = new SshClient(server, username, password)){try{client.Connect();string cpuStr = client.RunCommand(cpucommand).Execute();string splitor = "ni,";string a = cpuStr.Substring(cpuStr.IndexOf(splitor) + splitor.Length).Trim(' ');string b = a.Remove(a.IndexOf("id,")).Trim(' ');//cpu 空闲率string memStr = client.RunCommand(memcommand).Execute();splitor = "-/+ buffers/cache:";a = memStr.Substring(memStr.IndexOf(splitor) + splitor.Length).Trim(' ');string c = a.Remove(a.IndexOf(" ")).Trim(' ');//mem usagestring d = a.Substring(a.IndexOf(" ") + 1).Trim(' ').TrimEnd(Environment.NewLine.ToCharArray());//去掉换行符string diskStr = client.RunCommand(discommand).Execute();splitor = "/dev/sda1";a = diskStr.Substring(diskStr.IndexOf(splitor) + splitor.Length).Trim(' ');string[] arr =  a.Split(' ');//linqList<string> numArr = arr.Where(x => !x.Equals(string.Empty)).Select(x => x).ToList();//数组//List<string> numArr = new List<string>();//foreach(var item in arr)//{//    if(!item.Equals(string.Empty))//    {//        numArr.Add(item);//    }//}double fff = 100 - Convert.ToDouble(b);client.Disconnect();return string.Format("CPU使用率:" + fff.ToString("F2") + "% 内存使用率:" + c + "MB" + " 内存剩余量:" + d + "MB." + "磁盘总量:" + numArr[0] + " 磁盘使用率:" + numArr[3]);}catch (Exception ex){return "获取系统信息失败,原因:" + ex.Message;}}}catch (Exception ex){return "获取系统信息失败,原因:" + ex.Message;}}/// <summary>/// 重启linux/// </summary>/// <returns></returns>static string RestartTerminal(){string restartCommand = "reboot";try{Task.Run(() =>{using (var client = new SshClient(server, username, password)){try{client.Connect();client.RunCommand(restartCommand).Execute();}catch (Exception ex){Console.WriteLine(ex.ToString());}}});}catch (Exception ex){return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 终端重启失败,原因:" + ex.Message;}return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 终端重启完成!";}}

补充:此法需要linux开启ssh,windows电脑不需要安装ssh软件。

 

 

 

 

这篇关于远程监控linux系统信息内存,cpu的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/970163

相关文章

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象