远程监控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

相关文章

Java内存管理 - 垃圾收集算法

我们都知道Java 中垃圾收集器 [GC] 的功能。但只有少数人试图深入了解垃圾收集的工作原理。你不是其中之一,这就是你在这里的原因。 在这个Java内存管理教程中,我们将尝试了解Java垃圾收集的当前算法,我们将了解这些算法的演变。 目录1. Java中的内存管理2.引用计数机制3.标记和清除机制4.停止并复制GC 5.分代停止和复制6.如何提高Java中的内存利用率 1.

Linux命令学习之二

每日一结 ​               命令置换:是将一个命令的输出作为另一个命令的参数,命令格式如下: commond1 `command2` 其中,命令command2的输出将作为命令command1的参数,需要注意的是, 命令置换的单引号为ESC键下方的 ` 其意思就是说,先运行单引号内的命令,再将其命令作为

Linux命令学习之一

每日一结                                                                                        注:当用户不确定一个软件包的类型时, 可使用file命令查看文件类型

Linux文件I/O之一

每日一结(标准I/O)   一  库    本质 :一组实现函数接口 [printf,scanf,strcpy,strlen]   使用标准库好处:屏蔽底层细节,向上层提供统一的接口,提高程序的可移植性   windows 库 : *.dll  linux   库 : *.so    二 系统调用接口    本

Linux网络编程之五

每日一结 组播: ​ 网络地址: 一些特殊的组播地址:   一 组播包收和发 1.发送方 (1)创建用户数据报套接字 (2)填充组播地址和端口  (3)发送数据到组播地址 2.接收方  (1)创建用户数据报套接字 (2)加入组播组  struct ip_mreq mreq; mreq.imr_m

Linux网络编程之四

每日一结 一 UDP并发  核心思想:父进程接收到客户端的数据,就创建子进程,在子进程中创建一个新的套接字  和客户端交互  int do_client(接受客户端地址,数据,数据长度) { 1.创建用户数据报套接字  2.自动分配地址  3.处理数据[例如:输出数据内容] 4.通过新创建的套接字将数据回发给客户端  w

Linux网络编程之三

每日一结 Tftp服务器的实现: server.c ​       client.c     代码分析如下:     一 Linux IO模型  (1)阻塞IO  (2)非阻塞IO  非阻塞IO

Linux网络编程之二

每日一结   一 TCP 函数接口  int listen(int sockfd, int backlog); 功能:设置流式套接字为监听模式  参数: @sockfd    流式套接字的fd  @backlog   请求队列的长度,最大128  返回值: 成功返回0,失败返回-1    int accept(i

Linux网络编程之一

每日一结 一 网络基础知识 (一)IP地址 1.IP   :网络中一台主机唯一标识  2.组成 :网络号 + 主机号  3.IP 分类 最高位    第一个字节 A  1 + 3     0        [0-127]     B  2 + 2    10        [128-191]

Linux进程与线程之五

每日一结 一 共享内存 :内核空间预留出来的一块内存,用于进程间通信  (1)int shmget(key_t key, size_t size, int shmflg); 功能:获取共享内存段的ID  参数: @key    IPC_PRIVATE  或 ftok()  @size   申请的共享内存段大小 [4k的倍