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

htop是一个基于NCurses的Linux进程查看工具,提供丰富的界面和功能,如滚动查看进程、按不同标准排序、鼠标操作等。文章介绍了htop的安装方法,详细解释了其参数、功能键、快捷键和Linux进程状态。此外,还涉及了VIRT、RES和SHR内存概念,以及如何在开发板上编译和使用htop。
摘要由CSDN通过智能技术生成

介绍

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 5.4.0-150-generic x86_64【uname -srm指令】

开发板:100ASK_STM32MP157_PRO开发板

源码下载

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/sh
 
LIBS=/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系统

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值