1、什么是htop

htop来源于top,top是Unix/linux下功能强大的性能检测工具之一,用于实时检测并统计进程的属性和状态,基于ncurses库,可上显示文字界面。但是top已经非常陈旧,不支持鼠标点击操作,不支持查看进程的各个子线程的信息(对于我来说,这个非常重要,有助于分析代码的效率并优化),不支持color显示,易用性较差(曾有人提出改进top但未被接受)。htop官网对htop和top的比较,如下示例图为我的ubuntu12.4的htop效果:

  • In 'htop' you can scroll the list vertically and horizontally to see all processes and complete command lines.
  • In 'top' you are subject to a delay for each unassigned key you press (especially annoying when multi-key escape sequences are triggered by accident).
  • 'htop' starts faster ('top' seems to collect data for a while before displaying anything).
  • In 'htop' you don't need to type the process number to kill a process, in 'top' you do.
  • In 'htop' you don't need to type the process number or the priority value to renice a process, in 'top' you do.
  • 'htop' supports mouse operation, 'top' doesn't
  • 'top' is older, hence, more used and tested.

2、下载htop

htop官网提供两种下载:部分Linux发行版本的预编译二进制文件,以及源代码方式。

htop官网:http://hisham.hm/htop/index.php?page=downloads
 github上的源码:https://github.com/hishamhm/htop (git clone获取)

3、解决htop的编译依赖

htop编译时,必须有ncurses库的支持,所以编译htop之前,必须确保已存在ncurses库,交叉编译前需编译对应的ncurses库。

ncurses最新版本源码:ftp://invisible-island.net/ncurses/ncurses.tar.gz

 1 $ tar -zxvf ncurses-5.9.tar.gz 2 $ cd ncurses-5.9
  #配置前,可使用./configure --help查看配置帮助
  $ ./configure CC=arm-hisiv200-linux-gnueabi-gcc --prefix=$PWD/_install --host=arm-linux --with-shared #编译为共享库
  $ make && make install
  $ ls -lh _install/lib 
  total 4.5M
  -rw-r--r--  root root  93K  5月   : libform.a
  -rw-r--r--  root root 529K  5月   : libform_g.a
 lrwxrwxrwx  root root     5月   : libform.so -> libform.so.
 lrwxrwxrwx  root root     5月   : libform.so. -> libform.so.5.9
 -rwxr-xr-x  root root  68K  5月   : libform.so.5.9
 -rw-r--r--  root root  51K  5月   : libmenu.a
 -rw-r--r--  root root 321K  5月   : libmenu_g.a
 lrwxrwxrwx  root root     5月   : libmenu.so -> libmenu.so.
 lrwxrwxrwx  root root     5月   : libmenu.so. -> libmenu.so.5.9
 -rwxr-xr-x  root root  36K  5月   : libmenu.so.5.9
 -rw-r--r--  root root 446K  5月   : libncurses.a
 -rw-r--r--  root root 129K  5月   : libncurses++.a
 -rw-r--r--  root root 2.3M  5月   : libncurses_g.a
 lrwxrwxrwx  root root     5月   : libncurses.so -> libncurses.so.
 lrwxrwxrwx  root root     5月   : libncurses.so. -> libncurses.so.5.9
 -rwxr-xr-x  root root 327K  5月   : libncurses.so.5.9
 -rw-r--r--  root root  23K  5月   : libpanel.a
 -rw-r--r--  root root 131K  5月   : libpanel_g.a
 lrwxrwxrwx  root root     5月   : libpanel.so -> libpanel.so.
 lrwxrwxrwx  root root     5月   : libpanel.so. -> libpanel.so.5.9
 -rwxr-xr-x  root root  15K  5月   : libpanel.so.5.9
 lrwxrwxrwx  root root     5月   : terminfo -> ../share/terminfo

Libncurses库用来在显示器上显示文本界面。典型例子:Linux内核的make menuconfig配置界面,busybox的make menuconfig,fdisk磁盘分区工具界面,甚至open suse的yasT2。

Libform库用于 在ncurses中使用表格。

Libmenu库用于在ncurses中使用菜单。

Libpanel库用于在ncurses中使用面板。

将编译好的这些动态库拷贝到htop的源码目录下。

htop的交叉编译流程类似:

1 $ ./configure CC=arm-hisiv200-linux-gnueabi-gcc  --prefix=$PWD/_install

2 $ make && make install 3 $ ls -lh _install

4、 命令的挂载和执行

htop程序的执行需要libcurses和term的支持,执行之前请检查TERM环境变量的值(echo $TERM),以及TERMINFO的值(echo $TERMINFO,为空则必须保证/usr/share/terminfo存在对应的term程序)。

理想的状态是,将libcurses(放在/lib、/usr/lib 或/usr/local/lib)和htop直接拷贝到开发板上直接就能运行,但如果嵌入式Linux裁剪的太厉害,将/usr/share/terminfo目录裁剪了,htop将无法正常启动。此时可从别处拷贝terminfo目录。

最不理想的状态是板子将所有程序编译成了静态程序,同时裁撤了所有lib和/usr/share目录,且此时文件系统为只读,此时可以将机型对应的linux lib目录mount到板子上的/lib目录,同时将设置TERMINFO的环境变量为对应的terminfo目录(比如:export TERMINFO="/var/nfs/terminfo")。

举例:如$TERM=xterm,则/usr/share/terminfo/x/xterm必须存在。

5、htop的应用举例

详细应用请man htop查阅。

选择某一进程,按s:用strace追踪进程的系统调用
P、T、M和top下是一样的,按CPU,Time+、Memory使用排序。
下面有F1~F10的功能和对应的字母快捷键。
Shortcut Key Function Key Description
h F1 Invoke htop Help
S F2 Htop Setup Menu
/ F3 Search for a Process
I F4 Invert Sort Order
t F5 Tree View
> F6 Sort by a column
[ F7 Nice - (change priority)
] F8 Nice + (change priority)
k F9 Kill a Process
q F10 Quit htop

此段落来自:http://www.lylinux.org/linux-top%E5%91%BD%E4%BB%A4%E7%9A%84%E6%9B%BF%E4%BB%A3%E8%80%85htop.html

交叉编译和使用HTOP的更多相关文章

  1. 交叉编译HTOP并移植到ARM嵌入式Linux系统

    原创作品,允许转载,转载时请务必以超链接形式标明文章.作者信息和本声明,否则将追究法律责任. 最近一直在完善基于Busybox做的ARM Linux的根文件系统,由于busybox是一个精简的指令集组 ...

  2. Linux主机上使用交叉编译移植u-boot到树莓派

    0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

  3. Ubuntu 16.04 安装 arm-linux-gcc 嵌入式交叉编译环境 问题汇总

    闲扯: 实习了将近半年一直在做硬件以及底层的驱动,最近要找工作了发现了对linux普遍要求很高,而且工作岗位也非常多,所以最近一些时间在时不时地接触linux. 正文:(我一时兴起开始写博客,准备不充 ...

  4. Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1

    交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...

  5. Linux主机上实现树莓派的交叉编译及文件传输,远程登陆

    0.环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS:官网下的的raspb ...

  6. Linux htop工具使用详解

    一.Htop的使用简介 大家可能对top监控软件比较熟悉,今天我为大家介绍另外一个监控软件Htop,姑且称之为top的增强版,相比top其有着很多自身的优势.如下: 两者相比起来,top比较繁琐 默认 ...

  7. FFmpeg和X264的交叉编译环境

    在下载好了FFmpeg和X264的源码包之后,在Linux下进行安装的基本流程就是切换到其源码的根目录,然后以此执行以下命令.基本上所有的开源源码包的默认编译安装都是这三步. ./configure ...

  8. Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)

    Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...

  9. Ubuntu 树莓派2b交叉编译环境

    在一个平台上生成另一个平台上的可执行代码.为什么要大费周折的进行交叉编译呢?一句话:不得已而为之.有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征:有时是因为目的平台 ...

随机推荐

  1. C#图片压缩处理

    近期在做相冊功能遇到一个问题,就是载入图片的时候然后放大,感觉有点卡.图片可能有点大,所以考虑用缩略图来实现. 也就是在查询出来一个相冊图片  ,一页显示几十张,这几十张用缩略图来显示,看相信情况的时 ...

  2. js之with

    网上找资料的时候看到有js代码里出现了大量的with语句,有点好奇,这里做下总结: 1)简要说明         with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性. ...

  3. HDU 3127 WHUgirls(完全背包)

    HDU 3127 WHUgirls(完全背包) http://acm.hdu.edu.cn/showproblem.php? pid=3127 题意: 如今有一块X*Y的矩形布条, 然后有n种规格的x ...

  4. http协议报头信息和主体鉴别

    http协议报头信息和主体是使用一个空行分开.这是什么空行?简单的说,那是,\r\n\r\n. 所以会server数据的回归\r\n\r\n结果分离,一个是标题信息.它是一个消息的文本. C#例如,下 ...

  5. mysql 千分位 Format

    原文:mysql 千分位 Format select Format(123456789) 结果:123,456,789

  6. lambda 表达式 自定义查询

    遇到 这样的 问题 常用 EF . 实现  like 用 Contains("asd")  搞定 他生成的是 %asd% . 如果 我希望 生成  asd%,怎么搞呢? Start ...

  7. tomcat的webapps文件夹下放更新后的项目就訪问不了

    昨天给同事更新完程序,同事说更新后的程序訪问不了.它曾经的程序叫tj52,更新后的程序叫webapp.也就是tomcat的文件夹有两个文件架,一个叫webapp,一个叫tj52.最后另外一同事给了解决 ...

  8. JSP+Java+properties+FileInputStream文件读写,JSP页面读取properties文件

    String realPath = request.getRealPath("WEB-INF/classes/com/properties/devicetype.properties&quo ...

  9. jQuery数字加减插件

    jQuery数字加减插件 我们在网上购物提交订单时,在网页上一般会有一个选择数量的控件,要求买家选择购买商品的件数,开发者会把该控件做成可以通过点击实现加减等微调操作,当然也可以直接输入数字件数.本文 ...

  10. PCL点云库中怎样读取指定的PCD文件,又一次命名,处理后保存到指定目录

    我一直想把处理后的pcd文件重命名,然后放到指定的目录,尝试了好久最终做到了: 比方我想读取  "table_scene_lms400.pcd" 把它进行滤波处理,重命名为 &qu ...