易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4098|回复: 1
收起左侧

Linux如何查看和控制进程pid

[复制链接]
发表于 2019-6-11 09:51:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x

一、查看进程

使用不同的命令工具可以从不同的角度查看进程状态。

常用的进程查看命令

1.ps命令——查看静态的进程统计信息(Processes Statistic)

常见的选项:

a:显示当前终端下的所有进程信息,包括其他用户的进程。

u:使用以用户为主的格式输出进程信息。

x:显示当前用户在所有终端下的进程。

-e:显示系统内的所有进程信息。

-l:使用长(long)格式显示进程信息。

-f:使用完整的(full)格式显示进程信息。

需要注意的是,有一部分选项是不带“-”前缀的(添加“-”前缀后含义可能会有出入)。习惯上将上述选项组合在一起使用,如,“ps aux”或“ps -elf”

示例1:ps aux 将以简单列表的形式显示出进程信息。如下图

8 T$ Y  F6 W' N$ @+ P# v  B
                               
登录/注册后可看大图

( z$ a: w& f, `

上图中的输出信息中,第1行为列表标题,其中各字段的含义描述如下:

USER:启动该进程的用户账号名称

PID:该进程的ID号,在当前系统中是唯一的

TTY:该进程在哪个终端上运行。“?”表未知或不需要终端

STAT:显示了进程当前的状态,如S(休眠)、R(运行)、Z(僵死)、<(高优先级)、N(低优先级)、s(父进程)、+(前台进程)。对处于僵死状态的进程应予以手动终止。

START:启动该进程的时间

TIME:该进程占用CPU时间

COMMAND:启动该进程的命令的名称

%CPU:CPU占用的百分比

%MEM:内存占用的百分比

VSZ:占用虚拟内存(swap空间)的大小

RSS:占用常驻内存(物理内存)的大小

示例2:ps -elf 以长格式显示系统中的进程信息,包含更丰富的内容。大概意思都一样,PPID为父进程的PID。

/ F3 p7 i$ {) U" L3 O' r4 o
                               
登录/注册后可看大图
9 Z) b/ v; R5 f: @- v

示例3:ps 直接执行不带任何选项,只显示当前用户会话中打开的进程。


0 Q5 ]+ |1 {. H9 l- H                               
登录/注册后可看大图
) @0 L& i6 Z$ ~

示例4:结合管道操作和grep命令进行过滤,用于查询某一个进程的信息。

( p* V0 h& A2 N
                               
登录/注册后可看大图
6 F( }) B8 x2 L2 U" B

2.top命令——查看进程动态信息

以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次,其作用基本类似于Windows系统中的任务管理器。

示例:

+ ^. J' e6 \% \( D- k  A
                               
登录/注册后可看大图
' v  ^4 S4 y6 C8 s( p, A

上图中输出信息开头部分相关信息的含义如下:

Tasks(系统任务)信息:total,总进程数;running,正在运行的进程数;sleeping,休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数。CPU信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id,空闲CPU;wa,I/O等待占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。了解空闲的CPU百分比,主要看%id部分。Mem(内存)信息:total,总内存空间;used,已用内存;free,空闲内存;buffers,缓存区域。Swap(交换空间)信息:total,总交换空间;used,已用交换空间;free,空闲交换空间;cached,缓存空间。在top命令的全屏操作界面中,按P键根据CPU占用情况对进程列表进行排序,或按M键根据内存占用情况排序,按N键根据启动时间进行排序,按h键可以获得top程序的在线帮助信息,按q键可以正常地退出top程序。

若通过top排名工具发现某个进程CPU占用率非常高,需要终止该进程的运行时,可以在top操作界面按k键,然后在列表上方将会出现“PID to kill”的提示信息,根据提示输入指定进程的PID号并按enter键确认即可终止对应的进程。

(个人感觉没必要都记得清清楚楚,了解一下吧,知道大概意思就行,用的时候拉出来看看)

3.pgrep命令——根据特定条件查询进程PID信息

示例:

+ X) c8 h& m# f  ^5 e' L% I4 P
                               
登录/注册后可看大图
4 a/ @; T. l9 H: Z4 s4 a% c3 m! o1 n$ P

4.pstree命令——查看进程树,以树形结构列出进程信息

示例:

1 \, Q4 H) u3 [" h( V
                               
登录/注册后可看大图

0 x. O- a7 t& B$ l; F- e: q

二、控制进程

1.启动进程

进程的启动方式:

手工启动:由用户手工输入命令或执行程序的路径,可以至少启动一个进程。手工启动包括:前台启动和后台启动。前台启动:用户输入命令,直接执行程序

后台启动:在命令行尾加入“&”符号

示例:

' w% }* C1 W$ A
                               
登录/注册后可看大图

" U, J! ]/ `( V4 }4 ~1 e' @6 \

后台启动后直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。

调度启动:用于服务器维护工作中,例如当需要执行一些比较费时而且占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)执行。这时就需要用户事先进行调度安排,指定任务运行的时间,当系统到达指定设定时间时会自动启动并完成指定的任务。调度启动的计划任务进程均在后台运行,不会占用用户的命令终端。调度启动可以通过at、crontab命令进行设置。使用 at 命令,设置一次性计划任务

使用 crontab 命令,设置周期性计划任务

(关于at和crontab的配置,准备下个文章再讲解)

2.改变进程的运行方式

1) 挂起当前的进程

按Ctrl+Z组合键将当前进程挂起(调入后台并停止运行),这种操作在需要暂停当前进程并进行其他操作时特别有用。例如,我们使用windows系统是有时候在本地计算机搜索东西时,发现他搜索的老慢了甚至电脑都有点卡,我们突然不想让它搜了,就想马上让它停止搜索,就是这种感觉。

2) 查看后台的进程

使用jobs命令,可以查看当前终端在后台的进程任务,结合“-l”选项可以同时显示出该进程对应的PID号

示例:


0 K( c. G' I. v; l) }                               
登录/注册后可看大图

! b( ?) L+ U9 {

3) 将后台的进程恢复运行

bg(BackGround)命令,可以将后台中暂停执行(如,按Ctrl+Z组合键挂起)的任务恢复运行,继续在后台执行

fg(ForeGround)命令,可以将后台任务重新恢复到前台运行

示例:

6 r) Q) R5 j3 t0 _) w5 g2 n
                               
登录/注册后可看大图

" X* ^" U+ H% O6 E# I

3.终止进程执行

1) Ctrl+C组合键

强制中断正在执行的命令,如,命令长时间没有响应的情况下。

2) kill命令

用于终止指定PID号的进程,需要使用进程的PID号作为参数。无特定选项时,kill命令将给该进程发送终止信号并正常退出运行,有时可能该进程已经无法响应终止信号,这时可以结合“-9”(这是数字9不是字母g,有时候容易看走眼)选项强制终止进程。强制终止进程可能会导致程序运行的部分数据丢失,因此不到不得已时慎用。

示例


9 s- a% F3 W6 E/ F% b  q                               
登录/注册后可看大图
- g4 F6 [" K2 D3 j8 p

3) killall命令

用于终止指定名称的所有进程,当需要结束系统中多个相同名称的进程时,使用killall命令将更加方便,效率更高。Killall命令同样也有“-9”选项。

示例:

4 f9 p6 H/ t% z- h( q
                               
登录/注册后可看大图

& ~7 `* {, j4 v) W5 g# ]. d$ G

4) pkill命令

根据特定条件终止相应的进程

常用选项:(大部分选项与pgrep命令基本类似)

-U:根据进程所属的用户名终止相应进程

-t:根据进程所在的终端终止相应进程

示例:


$ c1 K, p: m; t/ g* x- i                               
登录/注册后可看大图
2 r% ^2 n' E2 d2 D" p
 楼主| 发表于 2019-6-11 09:52:05 | 显示全部楼层

pgrep -l name

[root@master ~]# pgrep -l python45086 python3
  • 1
  • 2
    & w5 \6 p: D/ `$ j+ D; X* V

pgrep的参数:

  • -l 同时显示进程名和PID

  • -o 当匹配多个进程时,显示进程号最小的那个

  • -n 当匹配多个进程时,显示进程号最大的那个

  • 注:进程号越大,并不一定意味着进程的启动时间越晚

    1 x& p  }3 s3 M% X% h

查看指定名称的进程信息
2 G! C  [; |  E& c, q) T% X默认只显示PID

   1: [root@master ~]# pgrep ssh   2: 3686   3: 7907   4: 8815   5: 12874
  • 1
  • 2
  • 3
  • 4
  • 5
    ( t! K8 I9 T( F9 ?8 U) T

同时显示PID和ProcessName : –l

   1: [root@master ~]# pgrep -l sshd   2: 3686 sshd   3: 7907 sshd   4: 8815 sshd   5: 12874 sshd
  • 1
  • 2
  • 3
  • 4
  • 55 M* m6 c# C2 ?) H1 P

-o 当匹配多个进程时,显示进程号最小的那个

   1: [root@master ~]# pgrep -l sshd   2: 3686 sshd   3: 7907 sshd   4: 8815 sshd   5: 12874 sshd   6: [root@master ~]# pgrep -l -o  sshd   7: 3686 sshd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
    ' J. n% f$ B' @" t; }0 P

-n 当匹配多个进程时,显示进程号最大的那个

   1: [root@master ~]# pgrep -l -n sshd   2: 12874 sshd
  • 1
  • 2
    ) L5 ~& o4 k7 r2 d8 ~2 w

特别说明! O$ g  I" ?8 {1 e# u
1)pgrep相当于 ps –eo pid,cmd | awk ‘{print $1,$2}’ | grep KeyWord

- 1: [root@master ~]# ps -eo pid,cmd | awk ‘{print $1,$2}‘  | grep init
  • 1
    0 \4 Z* e6 j1 d& e' P0 Q% A
  • 2: 1 init
  • 3: [root@master ~]# pgrep init
  • 4: 1
    " @( X$ y" y; g9 m+ ~6 w2)如1),pgrep查找的是程序名,不包括其参数
    5 g- g6 u" p7 s0 D

如下,参数里包括要查找的参数,而程序名中不包括,所有没查找到。

   1: [root@master ~]# ps axu | grep name   2: root     13298  0.0  0.3   5436  1000 pts/4    S    05:52   0:00 sh name.sh   3: root     13313  0.0  0.2   4876   672 pts/4    R+   05:53   0:00 grep name   4: [root@master ~]# pgrep name   5: [root@master ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
    9 S6 Q" L2 s) |" w5 d9 Z' d, q

总结
5 X/ I2 |: o. O" ~: n- @/ S0 b1 kpgrep命令用来查找进程的信息,通常会和kill命令来连用,在指定条件下kill问题进程。

您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:35 , Processed in 0.051766 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表