Linux工具之htop(含移植到arm-linux系统)

news/2024/11/7 14:37:06/

文章目录

  • 介绍
  • 安装
  • 使用
    • 一些参数讲解
    • 功能键说明
    • 一些快捷键
    • 一些指令参数
  • 拓展:Linux进程PRI与NI值
  • 拓展:VIRT(虚拟内存)RES(常驻内存)和SHR(共享内存)
  • 拓展:编译成应用放到开发板上使用
    • 源码下载
    • 解压编译

介绍

Htop是一个免费的(GPL)基于NCourses的Linux进程查看器。它类似于top,但允许您垂直和水平滚动,因此您可以看到系统上运行的所有进程,以及它们的完整命令行,还可以将它们视为进程树,选择多个进程并同时对它们执行操作。与流程相关的任务(终止、重新冻结)可以在不输入PID的情况下,通过鼠标来完成。允许用户根据CPU,内存和时间间隔对进程进行排序。

安装

系统不会自带,若是Ubuntu,通过sudo apt指令可以下载,若是Centos, 通过yum 可以安装。

ubuntu系统

sudo apt install htop

使用

在这里插入图片描述

一些参数讲解

任务(tasks)是打开的进程总数的代表,但并不是每个打开的进程都在不断消耗CPU。 每个进程都处于几种状态

  • R: Running:表示进程(process)正在使用CPU

  • S: Sleeping: 通常进程在大多数时间都处于睡眠状态,并以固定的时间间隔执行小检查,或者等待用户输入后再返回运行状态。

  • T/S: Traced/Stoped: 表示进程正在处于暂停的状态

  • Z:Zombie or defunct:已完成执行但在进程表中仍具有条目的进程。

Load Average

  • 三个值是指系统在最后1分钟,最近5分钟和最后15分钟的平均负载 (0.56, 0.74, 0.74)

Uptime

  • 表示这个系统一共运行了多长的时间

PRI

  • 描述Linux内核查看的进程优先级

TIME+

  • 进程占用的CPU时长

Command

  • 它与每个进程并行显示完整的命令执行 (比如/usr/lib/R)

功能键说明

功能键功能说明
F1获取功能键命令帮助
F2设置区域二展示内容,可以设置颜色方案、列等等
F3搜索,可以搜索command列中的信息
F4过滤,可以过滤command列中匹配的进程
F5按照进程树样式展示
F6排序,根据选择的列排序
F7设置进程优先级,减小优先级
F8设置进程优先级,增加优先级
F9杀死进程,需要先选中进程,然后选择需要发送的信号量
F10退出

案例:

  • 按下F2,增加线程树的展示

在这里插入图片描述

  • 按下F6可以指定排序【注意:可以使用下面的快捷键进行设置】
    在这里插入图片描述

一些快捷键

  • u – 用于显示特定用户拥有的所有进程。

  • P –用于基于高CPU消耗对进程进行排序。

  • M –用于基于高内存消耗对进程进行排序。

  • T –用于根据时间段对过程进行排序。

  • h –用于打开帮助窗口并查看此处未提及的更多快捷方式。

一些指令参数

用法:htop [参数选项]

参数参数说明
-C、 --no-color使用单色配色方案
-d 、–delay=DELAY设置刷新间隔时间,单位十分之一秒
-h 、–help打印帮助信息
-s、 --sort-key=COLUMN按照指定列排序选择
-t、 --tree默认值,按照树结构视图显示
-u 、–user=USERNAME只显示指定用户进程信息
-p、 --pid=PID,[,PID,PID…]只显示指定pid进程信息
-v、 --version打印命令版本

拓展:Linux进程PRI与NI值

  1. PRI -> 进程的优先级,大部分系统(Linux、UCOSII)都是数字越低优先级越高,进程就优先运行 , Linux中的PRI(new) = PRI(old) + nice ,其中 , PRI(old)为系统算法决定 ,在创建时被赋予不同的值,用户不可修改 ,用户只能通过修改nice来修改进程的优先级

  2. NI -> nice , 进程优先级的修正量, -20 ~ 19 ,用户可修改 (root用户可修改nice值-20 ~ 19 ,普通用户只能修改nice值0~19 )。一般情况下,子进程继承父进程的nice值,由于init进程的nice值为0,所有大部分进程的nice值都为 0

  3. 用户可通过renice xx 进程号 的命令修改进程的优先级 ,其中xx为nice值,注:PRI(old)被系统保留 ,每执行一次renice xx 进程号命令,都是在PRI(old)基础上+nice值

拓展:VIRT(虚拟内存)RES(常驻内存)和SHR(共享内存)

VIRT:

  • 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等;

  • 2、假如进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量。

  • 3、VIRT = SWAP + RES

RES:

  • 1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;

  • 2、包含其他进程的共享;

  • 3、如果申请10MB的内存,实际使用1MB,它只增长1MB,与VIRT相反;

  • 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小。

  • 5、RES = CODE + DATA

SHR:

  • 1、除了自身进程的共享内存,也包括其他进程的共享内存;

  • 2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小;

  • 3、计算某个进程所占的物理内存大小公式:RES – SHR;

  • 4、swap out后,它将会降下来。

参考博文:编写Linux C++程序如何影响VIRT(虚存)和RES(实存/常驻内存),讲解new分配的堆空间在使用和未使用情况下虚拟内存与常驻内存的差别等

拓展:编译成应用放到开发板上使用

linux主机:ubuntu-18.04

交叉编译器:arm-buildroot-linux-gnueabihf

开发板kernel:Linux 100ask 5.4.31 #1 SMP PREEMPT Thu Oct 27 11:04:26 UTC 2022 armv7l GNU/Linux

开发板:MarsBoard(imx6d)

源码下载

ubuntu@ubuntu: wget http://hisham.hm/htop/releases/1.0.1/htop-1.0.1.tar.gz #htop源码
ubuntu@ubuntu: wget http://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz #ncurses源码

解压编译

tar xvzf ncurses-5.9.tar.gz
tar xvzf htop-1.0.1.tar.gz

由于htop依赖于ncurses库,因此需要先编译ncurses,进入ncurses目录,并配置交叉编译

进入ncurses-5.9目录下执行该命令添加环境变量

export CPPFLAGS="-P"

新建make.sh脚本,如果是编译到不同的平台要替换–host后面的交叉编译链工具

# /bin/sh./configure --prefix=$PWD/install \--without-cxx --without-cxx-binding \--without-ada --without-manpages \--without-progs --without-tests \--with-shared --host=arm-buildroot-linux-gnueabihf
ubuntu@ubuntu: source make.sh
ubuntu@ubuntu: make -j4
ubuntu@ubuntu: make install

编译htop

进入htop-1.0.1目录下

新建make.sh脚本,新建的脚本需要应用编译好的ncurses库文件和头文件,请看make.sh脚本中的引用

# /bin/shLIBS=/home/book/Desktop/test/ncurses-5.9/install./configure --prefix=$PWD/install --disable-unicode  --host=arm-none-linux-gnueabi \LDFLAGS=-L$LIBS/lib/ \CPPFLAGS="-I$LIBS/include/ncurses -I$LIBS/include/"
ubuntu@ubuntu: source make.sh
ubuntu@ubuntu: make -j4
ubuntu@ubuntu: make install

此时在/home/book/Desktop/test/htop-1.0.1/install/bin有编译好的可执行文件

查看文件的属性可以知道该文件运行在arm平台上
在这里插入图片描述
、、、未成功

参考博文:
arm-linux开发环境之(htop命令移植)
交叉编译HTOP并移植到ARM嵌入式Linux系统


http://www.ppmy.cn/news/242906.html

相关文章

来了解一下白盒测试,黑盒测试,灰盒测试吧(超详解~)

根据被测对象的不同,软件测试可以分为白盒测试、黑盒测试、灰盒测试三种方式。那么,这三种测试方式具体是如何运行的?各有什么特点?下面,跟着静姐一起了解一下吧! 01、白盒测试 WHITE BOX ●概念&#x…

【Django知识点】【Django Rest Framework学习】fbv开发、cbv开发、...

前言 本文内容主要讲解介绍Django Rest Framework框架,结合如下django项目学习食用 Github仓库地址 基本概念 FBV:function based views 特点 无需继承类 基于函数形式的视图开发 fbv默认为get方法,如果提供post或其他类型方法&#x…

【动态规划】最长回文子序列(java)

最长回文子序列 leetcode516. 最长回文子序列题目描述 暴力递归解题思路代码演示 递归 缓存解题思路代码演示 动态规划解题思路代码演示 动态规划专题 leetcode516. 最长回文子序列 来源:力扣(LeetCode) 链接:https://leetcode.c…

智能语音电话机器人怎么选?从这三方面下手

电销机器人市场鱼龙混杂,哪个电话机器人品牌好? 小编觉得可以从三个方面下手: 第一、核心技术 使用传统电销时需要考虑这些数据:接通率、通话时长、投诉、客户满意度等,因为它们直接影响着电销人员的业务素质&#…

你了解过“本次通话将被录音,请您谅解“背后的智能语音质检?

“为了保证通话服务质量,本次通话将被录音,请您谅解", 这句话是不是很耳熟,这里的电话录音就是为了方便公司监察、纪检、管理等部门能随机抽取电话录音对公司的客服或销售人员在与客户通话的过程服务态度作出评价: 比如是否按照规定话术…

手机录音 怎么单声道_手机通话小不是手机问题,打开这个开关,音量提高好几倍...

平时在打电话的时候,你是否有这样的困扰?明明都把手机通话音量调整到最大了,但声音却还是感觉很小的样子。在一些公共场合下,没有携带耳机,又不能将手机开通免提,这种情况实在是很磨人! 其实我们…

电话机器人源码可以低成本高效率为OEM代理前景保驾护航

深圳电销机器人OEM代理前景怎么样?随着人工智能的发展,越来越多的企业开始选择采用智能语音机器人,来减轻人工的压力,更好的服务客户,提高效率。 而随着人工智能的发展,越来越多的企业开始选择采用智能语音…

SpringBoot整合第三方技术 -- SpringBoot快速入门保姆级教程(三)

文章目录 前言三、SpringBoot整合第三方技术1.SpringBoot整合junit2.Spring整合junit入门案例3.SpringBoot整合Mybatis4.SpringBoot整合Mybatis入门案例5.SpringBoot整合Mybatis更换默认数据源 总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博…