linux查看包含a的就8进程,Linux进程查看与管理

(A)、进程相关的概念

计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等。这些最基础的计算机动作被称为指令(instruction).程序(program)是由这些指令的集合所构成。程序一般是存储在磁盘上某个路径下的一个可执行文件,程序运行起来后,便成了进程(process),因此,进程便是程序的具体实现。因为Linux的哲学思想之一便是组合小程序,完成复杂任务,因此,要完成某功能可能需要启动多个小程序,因此,进程也会产生多个。进程都运行于内存当中。

每个进程在系统中都会有一个唯一的数字标识符,这个数字被称为进程的PID(Process ID).

Linux系统在开机后,会自动运行起第一个程序(/sbin/init),在进程中的名字为init,PID为1,init进程在会一直存在于内存中,直到系统关机才会被销毁。其他程序运行起来,都是通过init进程来调用fork()函数生成的。因此init管理所有进程。进程若需要完成某一任务时,会调用fork()函数生成一个新进程,这个新进程会复制老进程的所有内容,并在内存中获段一段新的地址空间,新进程便是老进程的子进程,继承老进程的所有属性,而老进程便是新进程的父进程(Parent process).相对于子进程来讲,子进程通过PPID(Parent Process ID)来标识符进程。即,除init以外所有进程都会有一个PPID为1.

进程有优先级概念,同一时刻,CPU只有一颗,如果N多进程都要使用CPU来完成工作,那么必须需要排队等待,这样效率极低,为解决这一难题,对cpu进行时间分片,规定每个进程只允许在cpu上运行特定的一小段时间,时间段过去后,不管进程任务是否完成,都会被T出CPU,因此,需要给进程优先级来帮助紧要任务优先使用cpu。进程有0-139个优先级别。0-99这100个级别为动态优先级,标识着进程在cpu上的所剩时间,随时间的变化而变化,也被称为实时优先级。100-139为进程的静态优先级,可通过nice值对其进行修改。静态优先级所对应的nice值为-20~19,即-20对应100,19对应139.

进程分为两类:

a、前台进程(用户进程):由用户通过终端启动的进程

b、守护进程(daemon):由内核在系统引导过程中启动的进程

Attention:前台进程也可以被送往后台,以守护模式运行。(具体操随后演示)

进程的运行状态,及在进程查看器中显示的标记:

a、运行中(Running),通常以”R”标记

b、就绪态(Ready)

c、睡眠态

可中断睡眠: S (Interruptible sleep),不需要额外数据准备的进程不可中断睡眠:D (Uninterruptible sleep),正在IO读写数据的进程

d、停止态:T(Stopped)

e、僵死态:Z(Zombie)

子进程完成任务,释放进程所占用的资源,进入僵死状态,等待父进程收回

f、”+”代表前台进程

g、”

h、“N”低优先级进程

i、“s”表示该进程是某一进程的父进程

(B)、进程查看与管理的命令:

1、ps命令、- report a snapshot of the current processes.

man手册对其的描述为报告当前进程的快照,也就是说在命令行键入ps那一时刻,系统中所运行的进程状态信息。实际上,进程查看工具所对用户的反馈信息都是通过读取/proc下,以数字(PID)开头的目录中的信息作以呈现。0818b9ca8b590ca3270a3433284dd417.png

ps命令格式有两种:1、Unix风格,选项加”-”;2、BSD风格,选项不加”-”

常用选项有:

A、)Unix风格常用选项:常用组合(ps �eFH)

-e显示所有进程

-f将发起进程的命令以完整格式显示

-F显示额外的完整信息

-H以树状格式显示进程

如:在命令行键入:ps-ef

0818b9ca8b590ca3270a3433284dd417.png

图中N多用[]括起来的是内核的某些功能,我们可以忽略;

执行ps �efH以树状格式显示进程,子进程相对于父进程会有缩进,查看后几行的进程,如下图0818b9ca8b590ca3270a3433284dd417.png

图中可见,init进程PID为1,为所有进程的父进程

执行ps �eFH,科显示更为详细的属性信息,如下图0818b9ca8b590ca3270a3433284dd417.png

上图中的各标题的意义:

UID        表示此进程是由哪个用户执行命令创建的

PID        进程的ID号

PPID  父进程ID号

C          占用cpu的百分比

SZ         进程所占的物理页大小

RSS        常驻内存集大小(不能放入交换分区的数据和指定)

PSR        运行在的CPU编号

STIME 进程的启动时间

TTY        启动进程的终端,?表示与终端无关

TIME  在CPU上运行的总时长

CMD        运行此进程的命令

B、)BSD风格常用选项; 常用组合(ps aux)

a     显示与终端相关的进程

u     以用户为中心,组织进程状态信息显示

x     显示与终端无关的集成

0818b9ca8b590ca3270a3433284dd417.png

上图中,各标题的意义:

与Unix风格的显示标题近乎接近:

USER  进程的属主

PID        进程的PID

%CPU  同Unix风格的标题C,占用CPU的百分比

%MEM  占用内存的百分比

VSZ        虚拟内存集大小(可交换至交换分区的数据或指令)

RSZ        物理内存集大小(不可交换至交换分区的数据和指令)

TTY        启动该进程的终端

STAT  该进程的状态

TIME  该进程在cpu上的运行时长

COMMAND 该进程是由哪个命令所执行

若想查看某一进程的相关信息,可使用管道进行命令组合来执行:

例如:查看bash进程的相关信息:

[root@www ~]# psaux | grep bash

root       1960 0.0  0.1 108472  1856 pts/0   Ss+  06:51   0:00 -bash

root       2463 0.0  0.1 108472  1848 pts/1   Ss   07:55   0:00 -bash

root       2646 0.0  0.0 103252   836 pts/1   S+   08:28   0:00 grep bash

或者

[root@www ~]# ps-ef | grep bash

root       1960  1957  0 06:51 pts/0    00:00:00 -bash

root       2463  1957  0 07:55 pts/1    00:00:00 -bash

root       2651  2463  0 08:29 pts/1    00:00:00 grep bash

2、pgrep、pidof命令

该命令跟上一个进程或命令,可查看搜索与进程相关的PID,例如:

[root@www ~]# pidof /bin/bash

2463 1960

[root@www ~]# pgrep bash

1960

2463

3、pkill命令

pkillUSERNAME   杀死与USERNAEM相关的所有进程

pkill PROCESS       杀死进程名相关的所有进程

例如:

[root@www ~]#service httpd start

Starting httpd: httpd:apr_sockaddr_info_get() failed for www.welcome.com

httpd: Could notreliably determine the server's fully qualified domain name, using 127.0.0.1for ServerName

[  OK  ]

[root@www ~]# psaux | grep htt

root       2045 0.0  0.3 186396  3892 ?       Ss   09:05   0:00 /usr/sbin/httpd

apache     2048 0.0  0.2 186528  2496 ?       S    09:05   0:00 /usr/sbin/httpd

apache     2049 0.0  0.2 186528  2496 ?       S    09:05   0:00 /usr/sbin/httpd

apache     2050 0.0  0.2 186528  2496 ?       S    09:05   0:00 /usr/sbin/httpd

apache     2051 0.0  0.2 186528  2496 ?       S    09:05   0:00 /usr/sbin/httpd

apache     2052 0.0  0.2 186528  2496 ?       S    09:05   0:00 /usr/sbin/httpd

apache     2053 0.0  0.2 186528  2496 ?       S    09:05   0:00 /usr/sbin/httpd

apache     2054 0.0  0.2 186528  2496 ?       S    09:05   0:00 /usr/sbin/httpd

apache     2055 0.0  0.2 186528  2496 ?       S    09:05   0:00 /usr/sbin/httpd

root       2057 0.0  0.0 103256   844 pts/0   S+   09:05   0:00 grep htt

[root@www ~]#pkill httpd

[root@www ~]# psaux | grep htt

root       2060 0.0  0.0 103252   836 pts/0   S+   09:05   0:00 grep htt

4、top命令―以特定间隔时间刷新显示内存中的任务信息

命令的使用很简单,在命令行模式下键入top,便可启动,

0818b9ca8b590ca3270a3433284dd417.png

top命令的顶部被分成三个区域,红色区域为系统的时间相关,黄颜色区域为cpu相关;橙色区域内存相关,这三个区域分别对应”l”、”t”、”m”三个字母来打开或关闭显示。

上述三个区域的每个参数简介:

红色区域:

Up之前的时间为当前系统时间

Up 10 min  为系统的开机以来所运行的时长

1 user     表明当前系统共有1个用户登录

Load average:后面的三个数字分别表示1分钟内的负载情况;5分钟内的负载;15分钟内的负载

可由[root@www ~]# uptime  命令获取;

黄颜色区域:

Tasks: 145total,   1 running, 144 sleeping,   0 stopped,  0 zombie

共有145个进程,1个正在运行,144个处于运行状态,0个停止状态,0个僵死状态

Cpu(s):  0.2%us, 0.2%sy,  0.0%ni, 99.8%id,  0.0%wa, 0.0%hi,  0.0%si,  0.0%st

us: 用户进程,未经过调整nice值的所占cpu的百分比

sy:系统指令所占cpu的百分比

ni:调整过nice值的进程所占cpu的百分比

id:cpu的空闲百分比

wa:等待IO的时间百分比

hi:处理硬中断的时间百分比

si:处理软中断的时间百分比

st:被虚拟化所偷走的时间百分比

橙色区域

Mem/swap:总空间,已用空间,空闲空间,用于缓冲的空间

在top的运行窗口中,键入”h”来获取帮助信息。常用选项如下:

“Z”调整显示颜色 ;”B”关键字加粗显示

k    输入k键跟上PID杀死进程;

'r' 重新设置进程的nice值

输入1键,如果主机有多颗cpu,会展开显示,如下:0818b9ca8b590ca3270a3433284dd417.png

“M”  以内存占用百分比进行排序

“P”  以cpu占用百分比进行排序

“T”  以累积占据cpu时长进行排序

直接键入”s”,可调整top的刷新频率,如下:

0818b9ca8b590ca3270a3433284dd417.png

“2”为设定的刷新时间,以秒为单位;

关于top命令的显示标题说明:

PID   进程的PID

USER  进程的属主,即发起该进程的用户

PR    进程的优先级

NI    进程的nice值

VIRT  进程所占的虚拟内存大小

RES   进程的常驻内存大小

SHR   进程的共享内存大小

S     进程的运行状态

%CPU  进程所占cpu的百分比

%MEM  进程所占内存的百分比

TIME+ 进程在CPU上运行的总时长

COMMAND    发起进程的命令或程序

Top命令还有几个常用选项:

top �b  批次分页方式显示

-n #   可指明批次分页显示的次数

-d # 指明刷新时间

如:[root@www~]# top -d 3  ;进入top界面后,就会以3秒的间隔进行刷新

5、htop命令:由Fedra研发,因此,要想获取该命令可在Fedra EPEL源中进行下载安装;

该命令的运行机制和top命令一样,也是以固定的时间间隔进行刷新显示进程的相关信息。相比top而言,htop的显示比较漂亮,功能也比top强大一些,并且操作更加直观一些;启用方法也是直接在命令行中键入htop命令即可启动该程序;如下

0818b9ca8b590ca3270a3433284dd417.png

按F2键进入设置模式,可调整顶部的显示格式以及其他功能;

如下:

0818b9ca8b590ca3270a3433284dd417.png

F3键可键入想要搜索的进程关键字,若想删除键入的关键字,需要按住Ctrl键+退格键才可以删除

0818b9ca8b590ca3270a3433284dd417.png

F4键键入关键字,便会只显示与关键字相关的进程信息,若想删除键入的关键字,需要按住Ctrl键+退格键才可以删除;如下:

0818b9ca8b590ca3270a3433284dd417.png

htop界面所显示的内容标题和top中的标题含义一样,可参考top命令的标题;在此界面中有三个常用的选项参数:

s     可追踪进程的系统条用

l     可列出进程所打开的文件

a     可将进程绑定至指定cpu上运行

6、vmstat  -- 查看虚拟内存的使用情况,通过读取/proc/stat和/proc/*/stat中的数据回馈给用户。

常用选项:

-s    显示内存统计信息,读取/proc/meminfo

-n    指定刷新延迟时间,默认vmstat只显示一次信息,但指定延迟后,会根据延迟时长循环输出信息至屏幕

-t    指定刷新间隔后,限定刷新显示的次数

例如:

[root@www ~]# vmstat

procs -----------memory---------- ---swap-- -----io------system-- -----cpu-----

r  b  swpd   free   buff cache   si   so   bi    bo   in  cs us sy id wa st

1 0      0 833156  16440 62808    0    0    8     1   15  13  0  0 100 0  0

[root@www ~]# vmstat -n 2 -t 3

procs -----------memory---------- ---swap-- -----io------system-- -----cpu------ ---timestamp---

r  b  swpd   free   buff cache   si   so   bi    bo   in  cs us sy id wa st

1  0     0 832064  16448  62808   0    0     8    1   15   13 0  0 100  0 0       2015-09-03 10:42:31 CST

0  0     0 832024  16448  62808   0    0     0    0   30   20 0  0 100  0 0       2015-09-03 10:42:33 CST

0 0      0 831992  16448 62808    0    0    0     0   20  15  0  0 100 0  0       2015-09-03 10:42:35 CST

相关显示标题介绍:

procs -----------memory---------- ---swap-- -----io---- --system-------cpu-----

r  b   swpd   free   buff  cache  si   so    bi    bo   in   cs us syid wa st

r        等待运行的进程的长度(个数)    单颗cpu出现3个以上,则说明性能略差

b       等待io完成的不可中断睡眠态的进程个数(被阻塞的队列的长度)

memory

swapd        交换内存的使用总量

free   物理内存的空闲总量

buffer         用于buffer的内存总量

cache         用于cache的内存总量

swap

si                数据进入到swap的速率,单位是kb/s

so               数据离开swap的速率,单位kb/s

io

bi      从块设备读入数据到内存中的速率      kb/s

bo     保存数据至块设备的速率kb/s

system

in      中断速率,每秒发生的速率个数

cs      上下文(进程切换)的速率

cpu

us      用户空间

st      被虚拟化偷走的时间比例

7、pmap报告进程的内存映射关系         读取/proc/PID/maps文件

pmap- report memory map of a process

大多数情况下,直接使用pmap PID  查看进程所打开的文件在内存的地址空间

8、glances命令:和htop类似,从Fedra EPEL源中获取,查看系统的各项指标信息;

0818b9ca8b590ca3270a3433284dd417.png

可敲“h”键获取帮助,可根据自定义进行各参数的排序,定义是否显示某个模块;详情参照h帮助界面;

也可在进入界面前使用命令选项进行定义显示格式:

glances

-b      以Byte为单位,显示网卡数据速率

-d      关闭磁盘io模块

-f       /PATH/TO/somewhere 设置输入文件的位置及格式

-o      {HTML|CSV}

-m     关闭mount 魔铠

-n      禁用网络模块

-1      单独显示cpu的信息

C/S    模式运行glances远程连接

Server模式:

glances-s -B IPADDR 本地地址

Client模式:

glances-c IPADDR

9、dstat---以特定的刷新时间,逐次将内核各项指标显示至标准输出;

0818b9ca8b590ca3270a3433284dd417.png

常用选项:

-c      显示cpu统计信息

-C      显示指定cpu的属性

-d      显示硬盘读写速率

-D     指定字段,例如 dstat -D total,sda

-p      显示进程统计数据

-r       显示io请求相关的数据

-s      显示交换内存的统计数据

--top-cpu    最占用cpu

--top-mem最占用内存

--top-latency       显示延迟最大的进程

--top-io      最占据io

10、kill及killall命令----同过向进程发送控制信号,来控制进程

kill �l可列出kill命令所支持的所有信号;常用的信号有如下几个:

1-----SIGHUP       通知进程重读配置文件而不重启

2-----SIGINT        终止正在运行的进程,相当于Ctrl+c

9-----SIGKILL        杀死正在运行的进程

15----SIGTERM    终止正在运行的进程,允许保存正在读写的文件

18----SIGCONT    让停止的进程继续

19----SIGSTOP     让进程停止

Kill 命令格式:

kill [-s signal|-p] [--]pid...

例如,在当前系统启动apache进程;在kill命令杀死指定进程,操作如下:

[root@www~]# service httpd start   ##启动httpd程序

Startinghttpd: httpd: apr_sockaddr_info_get() failed for www.welcome.com

httpd:Could not reliably determine the server's fully qualified domain name, using127.0.0.1 for ServerName

[  OK  ]

[root@www~]# ps aux | grep httpd   ##搜索与httpd相关的进程

root       2574 0.0  0.3 186396  3896 ?       Ss   11:03   0:00 /usr/sbin/httpd

apache     2577 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2578 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2579 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2580 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2581 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2582 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2583 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2584 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

root       2595 0.0  0.0 103256   844 pts/1   S+   11:04   0:00 grep httpd

[root@www~]# kill 2577                ##信号若不给定,kill命令默认传递第15信号;

[root@www~]# ps aux | grep httpd ## PID为2577的进程已不在内存中;

root       2574 0.0  0.3 186396  3896 ?       Ss   11:03   0:00 /usr/sbin/httpd

apache     2578 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2579 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2580 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2581 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2582 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2583 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

apache     2584 0.0  0.2 186528  2500 ?       S    11:03   0:00 /usr/sbin/httpd

root       2599 0.0  0.0 103256   844 pts/1   S+   11:05   0:00 grep httpd

killall命令,命令格式与kill一样,但是killall会杀死给定进程名相关的所有进程

[root@www~]# killall -15 httpd

[root@www~]# ps aux | grep httpd   ##httpd的进程已全被清清除

root       2606 0.0  0.0 103252   836 pts/1   S+   11:07   0:00 grep httpd

如何让作业运行于后台

1、对于运行中的作业:ctrl+z

0818b9ca8b590ca3270a3433284dd417.png

2、尚未启动的作业: #  COMMAND &

****此类作业虽然被送往后台,但仍然与终端相关;

如果希望与终端剥离,需使用nohup COMMAND

查看所有作业:

Jobs查看后台作业;

[root@www ~]# jobs   ##查看当前后台所有作业

[1]+  Stopped                 dstat

作业控制:

fg [%]JOB_NUM   把作业调回前台

[root@www ~]# fg   ## 若存在多个后台程序,则需要使用fg %作业id,如fg %1

dstat

0   0 100  0   0   0|  0    16k|4747B  876B|  0     0 |1055   981 missed 79 ticks

0   0 100  0   0   0|  0     0 |  60B 394B|   0     0 |  7     6

0   0 100  0   0   0|  0     0 |  60B 346B|   0     0 | 14    13

0   0 100  0   0   0|  0     0 |  60B 346B|   0     0 | 22    17 ^C

[root@www ~]#

bg[%]JOB_NUM  让作业在后台继续运行

kill%JOB_NUM   杀死后台作业

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值