初学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

相关推荐

  • Centos6.5利用RubyGems的fpm制作zabbix_agent的rpm包,并使用ansible批量部署

    一、 搭建rpm包制作环境 安装gcc [root@lvs1 ~]# yum install gcc 安装make [root@lvs1 ~]# yum install make 安装ruby源(ruby版本必须要在1.9.3以上,centos自带的是1.8的版本,需要自己编译安…

    Linux干货 2016-08-20
  • MySQL架构

    1.MySQL整体逻辑架构 我们先下图看看MySQL整体逻辑架构(MySQL’s Logical Architecture)                       图1  第一层,即最上一层,所包含的服务并不是MySQL所独有的技术。…

    Linux干货 2015-04-13
  • heartbeat2+crm+hb_gui接口,配置高可用httpd,mysql,lvs-director

    heartbeat2使用crm借助gui界面配置httpd服务     1. 服务大体资源构架:          1) 两台httpd服务,外加一台nfs共享存储服务。     &nbsp…

    Linux干货 2016-01-13
  • Linux中的cut、sort、uniq以及用户(组)管理类指令应用示例

    Linux中的cut、sort、uniq指令 列出当前系统上所有已经登录的用户的用户名,注意:同一用户登录多次,只显示一次。 解决思路: 先使用who指令显示出所有已登录的用户。然后对who指令的输出进行切割得到想要的第一列内容,即只包含用户名。可以使用cut指令。最后对cut的结果进行排序并去重。可以使用sort指令。   借助管道符,可以方便的…

    Linux干货 2016-11-13
  • 深入了解磁盘结构

    一、     linux中常见的磁盘:   无论什么操作系统,归根还是要落实与磁盘上的,对于磁盘的管理也是linux管理必备的一项技能。在linux中“一切皆文件”的思想贯彻整个linux的学习中,包括像是磁盘等的硬件也是在linux的/dev/目录下类似于文件形式的存放,常见的SATA口USB优盘或是SCS…

    Linux干货 2016-08-29
  • Linux程序包管理rpm、yum、源码编译

    概述:     众所周知,Linux操作系统本身,必须要借助额外的一些软件,才能完成某些应用的,操作系统如果没有应用程序的填充,就无法创造出生产力,这样即使再完美的操作系统,也毫无用处。那么本章就简要介绍一下Linux系统上对程序包的管理,分为以下三个部分:     1、程序包的…

    Linux干货 2016-08-24