初学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运维部落立场,如若转载,请注明出处:/90151

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达娱乐注册  万达娱乐平台  测试  万达娱乐注册  万达娱乐开户  万达招商QQ  guoqibee.com  万达直属QQ  万达主管QQ  万达招商QQ