初学Linux之程序进程管理工具汇总

pstree, ps, pidof, pgrep, top, htop, glances, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup 

初学Linux之程序进程管理工具汇总

生活中,我们在使用智能手机的过程中,比如 Android 平台手机,多多少少会碰到程序运行无响应的情况,这个时候,我们就会点击任务按键,进入后台任务中,将程序的后台窗口直接清除,然后重新打开应用程序,之后即可恢复正常使用了。这种情况在 Windows 平台的计算机上也是偶尔会出现的。我们同样会使用 CTRL+Alt+Delete 组合键,开启任务管理器,在进程界面,右键没有响应的程序,结束任务,之后将程序重新启动。

我们也会发现,手机的硬件性能经常会影响到程序的运行,比如,早期型号的手机在开启几个应用,最先开启的应用程序,后台切换到前台时,就要重新加载,和重新打开一样,同时开启很多的程序的情况下,各个程序运行都有一定的卡顿了,而使用较新硬件的型号,则能个流畅的切换后台程序以及运行。其实这些主要是设备的内存大小和cpu计算性能提升带来的改变。这也从反映出,应用程序运行了就成为了进程,进程就是运行中的程序。内存大了我们就能开启更多的进程,那么说明进程是需要占用内存的空间的,cpu计算能力强了,就能稳定的运行程序,说明进程需要cpu的计算。有些应用能够在一个设备上开启多个,且相互之间都不干扰,说明进程可以是相对独立的。

以上都是我们在使用计算机和智能移动设备的直观的感受,由于设备之间的原理是相似的,回到我们要学习的Linux系统中,它的进程和硬件的关系也是如此。只是不同系统之间,对进程查看以及管理的方式是不同的。我们下面要了解的就是Linux系统的进程管理方法,它主要是通过一些工具实现的,这些工具有些比较复杂强大 ,有些则比较简单直观,我们可以根据个人的习惯和工作要求进行掌握和使用。

这里不介绍进程相关的原理,后续我们独立开设篇幅讨论进程和内存以及cpu的工作原理。但是有很多和进程相关的概念,我们需要先进行了解,这些概念都是很好理解的。

1、pstree

首先要介绍的是 pstree 这个工具,是可以如树状图一样显示进程上下结构的命令。(参数支持uid 、pid、username)

具体的用法是  pstree    [选项]    [PID或者用户名] 。常用的选项有 -p 显示 PID 、-a 显示程序进程的参数  、-s(7版本支持)显示父进程的信息 。

2、ps

ps  是一个使用比较广泛的进程管理工具,由于这个工具在不同的系统中发展应用,催生了不同选项使用风格,正常的是在选项前带一个  “ – ” 的,这中是UNIX版本的风格,不带 “ – ”符号的是  BSD 版本的风格,带有 “ — ”的,是GNU版本的风格。(参数支持uid 、gid、username、pid、cmd、terminal)

ps 在不跟选项的情况下,默认是显示当前终端设备中的进程。显示的信息包括(PID 、TTY终端 、TIME运行时长、 CMD命令)

捕获

使用watch实用程序执行重复的输出以实现对就程进行实时的监视,如下面的命令显示每秒钟的监视: watch -n 1 ‘ps -eo pid,ppid,cmd,%mem,%cpu –sort=%mem | head’

3、pidof

这个工具可通过程序的名称输出进程的 PID ,比如需要查询程序名称为  pidof 的PID :pidof  pidof 。(参数支持 cmd)

若是命令成功运行,说明进程是成功运行的,运行返回值为真,否则说明程序对应的进程已经关闭,需要重新开启,这个可以用以监控系统中的服务是否保持正常运行。

4、pgrep

这个工具相当于 ps 和 grep 命令的结合体,之前介绍了 grep 命令是支持正则表达的,pgrep 命令也是支持正则表达,而且是扩展正则表达(ERE)。(参数支持uid 、gid、username、pid、cmd、terminal)

捕获

5、top

top  是一个动态交互的进程管理工具,是一个集合进程监控、进程优先级调整、终止指定进程为一体的工具。top不光显示单个进程的信息,它的操作界面的上端是对主机CPU、内存等整个运行状态动态显示。非常好用的一个进程管理工具。

直接在命令行输入 top 并回车,就会进入进程管理界面。捕获

top工具管理界面主要分为两大部分,以白色背景的行为分割,上部分为系统硬件总体信息,下部分是各个单独进程的信息。

上部分按照行分为:1、uptime 信息;2-3、task和cpu占用情况信息;4-5、内存相关信息;6:空白行,内置命令输入区。若是需要了解内置命令的使用方法,可以输入“?”查看各个命令对应的字符输入。常用的有:P :以CPU占比对下方所有的进程进行排序(大到小);M :以内存占比对进程排序(大到小);k :发送型号控制进程的运行,是通过PID的,默认是终止进程(15信号),也可以通其他信号控制,支持数字和字母 。两种方法取消k操作:1、提示PID时,直接回车;2、提示信号时,输入0即可。

CPU一行具体的显示内容是:us:用户空间 ,sy:内核空间 ,ni:调整nice时间, id:空闲 ,wa:等待IO时间, hi:硬中断, si:软中断(模式切换), st:虚拟机偷走的时间(主机上由虚拟机运行时可以显示) 。

top管理界面对各个进程是默认优先以CPU占比排序(高到低),之后是按照PID的顺序排列。top作为一个命令是支持选项的。 如:-d # 表示进入管理界面,指定管理界面的动态刷新时间为 # 秒。-b 选项要求显示所有的进程。 -n # 指定进入top后达到刷新次数后自动退出top。

6、htop

官方网站:http://htop.sourceforge.net/  。是 top 工具的升级版本 , 界面和top类似,但是操作和提示更加的人性化,若是终端支持鼠标(xshell或者secureCRT)也是可以使用鼠标点击操作的。

选项: -d #: 指定延迟时间; -u UserName: 仅显示指定用户的进程 ;-s COLUME: 以指定字段进行排序 。

子命令: s: 跟踪选定进程的系统调用, l: 显示选定进程打开的文件列表, a:将选定的进程绑定至某指定CPU核心, t: 显示进程树 。

7、glances

glances 是一个非常全面的系统监控工具,包括用户登陆、CPU占用、内存和swap占用、网卡速度、磁盘读写、磁盘挂载、进程管理等信息。

捕获

服务器模式: glances -s -B IPADDR IPADDR: 指明监听的本机哪个地址

客户端模式: glances -c IPADDR IPADDR:要连入的服务器端地址

8、pmap

这个命令显示的是进程对应的内存映射,使用方法:pmap [options] pid […] ,是通过PID 查询进程对应内存的位置和对应文件。 例如 :对PID为1 的进程显示内存映射,pmap -x  1  就可以了,  -x选项是指定显示详细格式的信息。这个命令是和一个对应文件相关的,比如 PID为 1 的进程对应的文件是  /proc/1/maps  ,用cat  命令打开即可查询到 pmap 命令相同的信息 。

9、vmstat

vmstat 是对虚拟内存(swap)数据进行实时显示的工具,可以跟踪显示虚拟内存的信息。具体的用法如:vmstat [options] [delay [count]] ,选项的使用,我们可以通过 vmstat –help 命令显示,delay是指定每次显示间隔的秒数,count则指定跟踪显示的次数。例如:

捕获

procs:       r:可运行(正运行或等待运行)进程的个数,和核心数有关    ;  b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)  。

memory:    swpd: 交换内存的使用总量    ;    free:空闲物理内存总量 ;      buffer:用于buffer的内存总量   ;   cache:用于cache的内存总量 。

swap:       si:从磁盘交换进内存的数据速率(kb/s);        so:从内存交换至磁盘的数据速率(kb/s) 。

io:    bi:从块设备读入数据到系统的速率(kb/s)   ;   bo: 保存数据至块设备的速率        。

system: in: interrupts 中断速率,包括时钟    ; cs: context switch 进程切换速率 。

cpu:  us:Time spent running non-kernel code  运行非内核代码所用的时间;                                                                   sy: Time spent running kernel code 运行内核代码所用的时间  ;                                                                             id: Time spent idle    空闲时间. Linux 2.5.41前,包括IO-wait time.                                                                             wa: Time spent waiting for IO  等待 IO 所用的时间. 2.5.41前,包括in idle.                                                             st: Time stolen from a virtual machine   从虚拟机中窃取的时间. 2.6.11前, unknown.

10、dstat

捕获

11、kill

kill命令: 向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写 。

显示当前系统可用信号: kill –l  ,    trap -l   ;

常用信号:man 7 signal

1) SIGHUP: 无须关闭进程而让其重读配置文件                                                                                                             2) SIGINT: 中止正在运行的进程;相当于Ctrl+c                                                                                                           3) SIGQUIT:相当于ctrl+\                                                                                                                                                   9) SIGKILL: 强制杀死正在运行的进程                                                                                                                            15) SIGTERM:终止正在运行的进程                                                                                                                                18) SIGCONT:继续运行                                                                                                                                                    19) SIGSTOP:后台休眠

指定信号的方法: (1) 信号的数字标识:1, 2, 9                                                                                                                                                (2) 信号完整名称:SIGHUP                                                                                                                                              (3) 信号的简写名称:HUP

按PID: kill [-SIGNAL] pid … kill –n SIGNAL pid;                                                                                                                       kill –s SIGNAL pid 

按名称:killall [-SIGNAL] comm… 

注意:kill 和 killall 都可用 -0 信号,用于检测进程是否正常运行。

12、pkill

按模式:pkill [options] pattern   (用户名,进程编号,终端号)

-SIGNAL                                                                                                                                                                                 -u uid: effective user,生效者                                                                                                                                             -U uid: real user,真正发起运行命令者                                                                                                                           -t terminal: 与指定终端相关的进程                                                                                                                                   -l: 显示进程名(pgrep可用)                                                                                                                                             -a: 显示完整格式的进程名(pgrep可用)                                                                                                                       -P pid: 显示指定进程的子进程

13、jobs

当我们在开启一个进程时,有时会按 ctrl+z  键,将运行的任务进程放入后台,但是这个时候,进程状态的变更为 stop,我们也可用使用 “command &”这个语法,让任务进程进入后台并保持运行。有些命令在后台运行,我们的字符界面是无法看到运行状态的,这个情况下,我们可以使用 jobs 这个命令,获取到当前后台进程的相关信息。

jobs 命令显示的信息中,每个进程的开头都添加了编号,这就方便我们管理和查询后台进程了。有了jobs 进程编号,我们可以使用 kill  [jobs编号],将对应的后台进程终止。

bg  命令功能是让送往后台的进程任务在后台继续运行。可以添加后台进程jobs编号进行控制

fg   命令功能是将后台的进程任务调回前台保持运行,后台停止的进程会重新在前台运行。

 

14、nohup、

后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭 后台作业。如果希望送往后台后,剥离与终端的关系就需要用到 nohup 这个命令,具体的用法是: nohup COMMAND &>/dev/null & 。

和 nohup 命令功能类似的还有 screen 命令,这个是先开启一个独立的运行环境窗口,之后再这个窗口中运行相应的命令和进程,用法是:   screen;COMMAND  。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90151

(0)
hack王和juhack王和ju
上一篇 2017-12-16
下一篇 2017-12-16

相关推荐

  • 22期+第一周课堂练习

    一.计算机的组成及其功能 计算机的组成及其功能结构图      各部件的关系图          二.按系列罗列Linux的发行版,并描述不同版本之间的联系与区别 1.各版本逻辑结构图 2.各版本的介绍   Redhat,应该称为Redhat系列,包括RHEL(Redh…

    Linux干货 2016-08-15
  • Linux中的文件管理命令及shell特性

    Linux中的文件管理命令 一、linux中的目录管理命令:mkdir和rmdir mkdir命令:创建目录 – SYNOPSIS         mkdir [OPTION]… DIRECTORY…     -…

    Linux干货 2016-09-27
  • sed 高级编辑命令、模式空间、保持空间、vi 可视化模式、vimrc、地址定界

    sed 高级编辑命令、模式空间、保持空间、vi 可视化模式、vimrc、地址定界 sed(stream deitor):行编辑器 【概述】sed是一种流式编辑器,它一次处理一行内容。处理时,把当前处理的行的所有内容存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,逐行处理,不修改文件。sed主要…

    Linux干货 2016-08-11
  • 马哥教育网络班20期第2周课程练习

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关  示例演示。 linux上文件管理命令包括: ls,cat,pwd,cp,rm,cd,head,tail,more,less,cut,which,whereis,find,mkdir,mv; 1、ls 命令;显示文件/文件夹清单   例如:如下显示列出根目录下的文件及目录…

    Linux干货 2016-06-23
  • Linux进程篇16.4top命令:进程管理工具

    top命令:进程管理工具

    2017-12-18
  • Linux 登录趣事

    初入Linux运维,在虚拟机VMware12中装载CentOS6和CentOS7,均带有图形化界面。简单熟悉Linux,发现了一些关于登录的趣事,在此与大家分享。 运行环境:CentOS6和CentOS7 工具:系统里的terminal 登录趣事(以CentOS6为例): (1)自动登录图形化界面 每次启动CentOS6,短暂等待之后便会进入登录界面,然后选…

    2017-07-15