Linux中ps及pstree管理进程详解

简介:Linux中ps查看进程及ps参数的作用

进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。有些晦涩难以理解,其实就是某个运行的程序,进程作为操作系统的基本运作单位,每一个进程都有唯一的进程号ID,而我们管理进程就是通过这个ID。

进程分为父进程和子进程,子进程是通过父进程衍生出来的,一些特殊原因导致一些子进程没有父进程,我们把这种子进程称为孤儿进程

在Linux中我们通常会使用ps或者pstree来管理经常,今天我们就来讲讲这两个命令的具体用法。

ps

ps命令主要查看进程的运行状态。具体格式及参数如下所示:

ps [options] [--help]

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

  • -A:列出所有进程(注意是大写的A)
  • -w:显示加宽(可以显示更多的信息)
  • -au:显示详细信息
  • -x:显示所有进程信息
  • -l:查看当前环境下与base有关的进程(会显示父进程,与其他命令组合可以查看父进程ID)
  • -f:显示父进程ID

ps命令参数可以组合使用,最常用的便是【-au】与【-x】组合使用:

# 查看所有进程并显示详细信息
ps -aux

#显示加宽,方便查看所有内容
ps -auxw

返回结果如下所示

下面我们介绍一下返回值中比较重要的参数:

  • USER:进程拥有者
  • PID:当前进程ID
  • %CPU:占用的 CPU 使用率
  • %MEM: 占用内存使用率
  • RSS:占用的内存的大小
  • STAT:进程的状态:
    • D:无法中断的休眠状态 (通常为 IO 的进程)
    • R:正在执行中
    • S:静止状态
    • T:暂停执行
    • Z:不存在但暂时无法消除
    • W:没有足够的内存分页可分配
    • <:高优先序的进程
    • N:低优先序的进程
    • L:有内存分页分配并锁在内存内 (实时系统或捱A I/O)
  • START:行程开始时间
  • TIME:执行的时间
  • COMMAND:启动进程的指令

pstree

虽然ps已经可以查看所有进程信息及父进程ID值,但是非常的不直观,但是pstree却可以做到很直观。

pstree查看所有进程并以树形结构显示:

pstree -up

当然我们还可以指定查询某个进程的树结构信息:

pstree -up -p 进程ID

除了通过指定进程ID的形式查看某个进程的树形结构信息外,我们还可以通过管道形式查看:

# 通过管道查看进程信息
pstree -up |grep '进程名称'

#例如查看php-fpm进程信息
pstree -up |grep 'php-fpm'

显示内容如下:

pidof

如果我们想要通过进程名称直接查看进程ID,可以使用pidof

pidof 进程名

kill 和 killall

上面我们已经介绍查看进程信息的相关命令,那么关闭呢?关闭或者杀死进程可以使用killkillall,其格式如下:

kill [options] 进程ID

options如下所示:

参数 简写 描述
SIGHUP 1 启动被终止的程序,可让该PID 重新读取自己的配置文件,类似重新启动
SIGINT 2 相当于用键盘输入[ctrl] -c 来中断一个程序的进行
SIGKILL 9 代表强制中断一个程序的进行
SIGTERM 15 以正常的结束程序来终止该程序。由于是正常的终止, 所以后续的动作会将他完成。该信号也是默认值,不加任何信号时,即表示使用该值
SIGSTOP 19 相当于用键盘输入[ctrl] -z 来暂停一个程序的进行

kill通过进程ID来管理进程,而killall通过进程名称来管理进程。下面我们演示一下具体操作:

# kill通过进程ID管理进程
kill -15 4260
# 或者如下
kill SIGTERM 4260

# 注意,这样会杀死所有php-fpm进程
killall -9 php-fpm
# 或者如下格式
killall SIGTERM php-fpm

 

有遗漏或者不对的可以在我的公众号留言哦

编程经验共享公众号二维码

编程经验共享公众号二维码
更多内容关注公众号
Copyright © 2021 编程经验共享 赣ICP备2021010401号-1