初学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 14:22
下一篇 2017-12-16 15:32

相关推荐

  • linux系统上的特殊权限SUID,SGID,STICKY

    特殊权限:SUID SGID STICKY     linux的安全上下文:     1.进程以用户的身份运行,进程是发起此用户的代理,因此以此用户的身份和权限完成所有的操作。     2.权限匹配模型:     1)判断进程的属主,是否以被访问的文件属主。如果是,则应用属主权限…

    Linux干货 2016-08-05
  • FHS文件系统共能介绍

    FHS文件系统共能介绍   FHS,即File Hierarchy Standard,文件层级标准。多数Linux系统下的文件管理采用此种文件组织形式,它定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。   这中组织是一种倒树状结构,所有的文件与目录都是由根目录”/”开始,然后…

    Linux干货 2016-10-18
  • 文件归档,shell循环和函数运用

    文件归档 tar (1)  创建归档 tar -c -f / PATH/TO/SOMEFILE .tar FILE… tar cf / PATH/TO/SOMEFILE .tar FILE… (2)  查看归档文件中的文件列表 tar -t -f  /PATH/TO/SOMEFILE .tar (3) &…

    Linux干货 2016-08-21
  • 马哥教育网络班22期中秋节课程练习1

    #!/bin/sh   set -e CheckRoot() { #check if currect use is root user     CUR_USER=`whoami`     if&nbs…

    Linux干货 2016-10-09
  • 高可用集群部署文档

    同学们都很活跃,自己好久没写了,也动动笔,下面文章写着玩的,如有错误请联系(NET7-粤-义薄云天) 高可用集群部署文档   目录: 目录: 1 项目需求: 2 实现方式: 2 拓扑图: 3 系统及软件版本: 3 安装步骤: 4 IP分配: 4 LVS和keepalived的安装和配置: 4 LVS主配置: 4 LVS2备 配置: 7 w…

    Linux干货 2015-08-11
  • 关于tar命令的一些方法

    tar 解压缩文件时只有当文件格式中有tar才能使用,否则使用其他单独的特定解压缩工具,例如uncompress,gzip ,bzip2.xz等等 tar压缩解压缩命令详解 tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命…

    Linux干货 2016-08-29