2018-5-28进程工具命令管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-5-28进程工具命令管理相关的知识,希望对你有一定的参考价值。
我们回顾一下所讲述的内容,在Linux的内核的功能中,进程管理是一个在内核中基本的功能,而在进程管理中,最重要的功能就是进程调度,之所以有进程调度是因为在多任务的操作系统上,进程数是要多于CPU的核心数的,所以只能将进程轮流运行在CPU上,将CPU的运行划分成多个时间片,以时间片为单位去轮流运行进程,不过这样一来导致运行没有运行完就会被其它进程替换,为了保证被替换时能够保留当前一刻状态,所以被替换时要进行保护现场,目的为了是当又轮到该进程时,可以进行恢复现场,将该进程的状态信息能够进行还原,那么保存现场的进程的状态信息被放置在CPU的寄存器上,等待再次进行调度,将寄存器所保存的进程状态信息进行还原。而每一个进程都保留在task struct
任务结构列表当中所描述的数据结构。内核为了能够追踪每个任务,它靠诸多的task struct
,因此诸多的task struct
形成了任务列表task list
。
回顾:Linux OS的基础概念、进程查看等工具; 内核的功能:进程管理(进程调度) 进程调度:保存现场,恢复现场; task struct:任务结构; task list:任务列表;
一、Linux进程及作业管理(2)
1.1 htop命令
htop
是一个top
的升级版,拥有更多的功能以及更加友好的方式对用户进行显示,使用起来也非常的方便,但是这需要额外安装,该软件在epel
源中。如果没有epel
源的话,则需要添加。
# yum info htop Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Available Packages Name : htop Arch : x86_64 Version : 2.1.0 Release : 1.el7 Size : 102 k Repo : aliyun-epel Summary : Interactive process viewer URL : http://hisham.hm/htop/ License : GPLv2+ Description : htop is an interactive text-mode process viewer for Linux, similar to : top(1).
看的出来属于epel
源,我们进行安装。
# yum -y install htop
安装完成之后,我们直接输入htop
命令。
# htop
作为程序包来讲,CentOS系统不允许由两个远程终端使用同一个yum
命令,因为在安装时,必须保证程序包的一致性和完整性。
对于htop而言,是可以支持鼠标操作的,如果点击HELP的话,就会出现以下帮助界面。
那么该命令的选项为:
选项: -d #:指定延迟时间间隔; -u UserName:仅显示指定用户的进程; -s COLUME:以指定字段进行排序; 子命令: l:显示选定的进程打开的文件列表; s:跟踪选定的进程的系统调用; t:以层级关系显示各进程状态; a:将选定的进程绑定至某指定的CPU核心;
1.2 vmstat命令
vmstat命令是统计并报告虚拟的内存数据的,默认显示一行数据,delay和count就是指定每隔多长时间显示多少次,而后自动退出,那么对于该命令的格式为:
vmstat [options] [delay [count]]
例如:delay每隔3秒钟count显示3次。
# vmstat 3 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 434820 2084 375648 0 0 46 10 89 263 1 1 98 0 0 0 0 0 434820 2084 375680 0 0 0 1 83 85 0 0 100 0 0 0 0 0 434572 2084 375680 0 0 0 0 100 94 0 1 98 0 0
对于以上的字段来说,我们来一一进行解释并且理解与读懂,第一个就是procs,该字段为processes的简写。
procs: r:等待运行的进程的个数;CPU上等待运行的任务队列长度; b:处于不可中断睡眠态的进程个数;被阻塞的任务队列的长度;
那么第二列为显示memory信息,在内存段中的一下的解释信息为:
memory: swpd:交换内存使用总量; free:空闲的物理内存总量; buffer:用于buffer的内存总量; cache:用于cache的内存总量;
第三列为swap列信息,为交换分区的速率信息,表示每秒钟多少个,在这里取出的为平均值,在这一段中的解释信息具体如下:
swap: si:数据进入swap中的数据速率(kb/s); so:数据离开swap的速率(kb/s);
第四列为io信息,在这个字段下有bi和bo,解释信息如下:
io: bi:从块设备读入数据到系统的速度(kb/s); bo:保存到数据至块设备的速率(kb/s);
第五列为system,为系统的某些处理操作,当用户模式转换为内核模式时,也是会发生中断的,只不过系统调用是通过软中断的方式来决定的,包含的信息分别为:
system: in:interrupts,中断速率; cs:context switch,上下文切换的速率;
最后一列为CPU的信息,在这个信息中字段很多,那么这些字段分别解释为:
cpu: us:user space sy:system id:idle wa:wait st:stolen
该命令的选项为:
选项: -s:显示内存统计数据;
1.3 pmap命令
pmap命令用起来并不复杂,用来显示及报告内存的进程映射表,进程映射表就是任何一个进程所使用的内存空间看上去是连续的,但这些内存页会被放置在不连续的物理内存空间中,那么该命令就是显示内存信息。
那么该命令的使用格式为:
pmap [options] PID [PID ...] -x:显示详细格式的信息; 另一种查看方式:cat /proc/PID/maps
1.4 glances命令
glannes命令也是最近出现的一款管理进程的工具,由Python
语言发言其功能非常强大的命令,而且支持C/S架构模式,远程查看。
对于该命令来讲,有许多的内建子命令,但可以省略,而使用选项也很多,我们简单的介绍一些常用选项来举例说明。
内建命令: 使用h键来进行获取; 常用选项: -b:以bytes为单位显示网上速率; -d:关闭磁盘I/O模块; -m:关闭mount模块; -n:关闭network模块; -t#:刷新时间间隔; -l:每个CPU的相关数据单独显示; --export-csv FILENAME.csv:输出格式; -f /PATH/TO/SOMEDIR:设定输出文件的位置;
接下来我们使用C/S
模式下运行glances
。那么说明由客户端远程连接服务端,在服务模式中指明选项为-s
和-B
,后面跟上其IP地址,而IP地址的指向就是本机的某地址,其作用用于监听。
C/S模式下运行glances命令: 服务模式: glances -s -B IPADDR IPADDR:本机的某地址,用于监听;
而客户端模式我们使用-c
选项,后面跟上服务端的IP地址。
客户端模式: glances -c IPADDR IPADDR:远程服务器地址;
1.5 dstat命令
dstat
命令也是新晋出现的一款工具,而且已经收入到base源中,该命令的功能非常强大,它是一种非常精巧的查看系统使用率的一款命令工具,这款工具几乎柔和了我们之前所学到那几款命令工具的功能,那么该命令的使用格式为:
dstat [-afv] [options...] [delay [count]]
默认输入dstat
命令的界面为:
当我们不给任何选项时,默认的选项为-cdngy
,那么我们总结一下其常用选项:
常用选项: -c, --cpu:显示CPU相关的信息; -c #,#,...,total -d, --disk:显示磁盘相关的信息; -D sda,sdb,...total -g:显示page相关的信息; -m:Memory的相关统计数据; -n:Interface的相关统计数据; -p:显示process的相关统计数据; -r:显示io 请求的相关统计数据; -s:显示swapped的相关统计数据; --tcp: --udp: --raw: --socket: --ipc: --top-cpu:显示最占用CPU的进程; --top-io:最占用io的进程; --top-men:最占用内存的进程; --top-lantency:延迟最大的进程;
1.6 kill命令
kill命令顾名思义,就是杀死,其实真正的意义为向进程发送信号的,也可终止某一个进程。
kill命令: kill - terminate a process 用于向进程发送信号,以实现对进程的管理;
我们可以使用-l
选项来显示当前系统上可用的信号类型,需要注意的是,只有管理员才有权限能够kill
掉进程。
显示当前系统可用信号: kill -l [signal] 每个信号的标识方法有三种: (1) 信号的数字标识; (2) 信号的完整名称; (3) 信号的简要名称;
那么我们向进程发送信号,可以使用-s
选项,也可以不使用就可以直接跟上其可用数字信号就可以。
向进程发送信号: kill [-s signal|-SIGNAL] pid...
在平时的操作中,我们常用的信号有:
常用信号: 1) SIGHUP:无须关闭进程而让其重读配置文件; 2) SIGINT:终止正在运行的进程,相当于Ctrl+c; 9) SIGKILL:杀死运行中的进程; 15) SIGTERM:终止运行中的进程; 18) SIGOUT: 19) SIGSTOP:
1.7 killall命令
当有许多进程一一处理很麻烦时,需要斩草除根时,必要时杀人灭口是非常关键的一个手段,正所谓好人做到低,使用killall
命令可以做到这一点,该命令的用法也很容易理解。与kill
命令不同是,killall
命令是根据进程名直接杀死进程,而不用指定PID
。
killall命令: killall [-SINGAL] program
以上是关于2018-5-28进程工具命令管理的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段