第十七章:第30节Linux进程管理——查看进程

更新于:2020-10-06 15:00:34

这节学习查看进程的一些命令。一个程序服务的开启必定至少有一个守护进程在运行,我们学习了查看进程,可以看到当前正在运行哪些程序进程,及程序进程的一些状况信息。


比如说,我们在服务器上安装了Apache服务器,Apache服务器开启后,会有一个名字为httpd的守护进程。假如服务器突然不能访问了,我们首先看下httpd进程是否还存在。不存在,肯定就不能提供web请求服务了。


先说下第一个命令:


1)who


该命令用于查看当前所有登录系统的用户信息


who [选项]


1.png


①可以看到当前登录的用户有ubuntu、nanshen。


我分别用ubuntu、nanshen账号登录了服务器。


②-H参数:显示各栏位的标题信息列


显示内容:

login name:登录用户名;

terminal line:使用终端设备;

login time:登录到系统的时间。

login ip:登录ip


pts是所谓的伪终端或虚拟终端,具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1。


③多了两项:IDLE、PID


IDLE:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串。“00:33”33是分钟。


PID(Process ID):是进程ID号。每个用户登录后肯定会在服务器启动一个相应的进程


④-m参数只显示当前用户。


显示用户登录来源:


1.png


附:


w命令也可以查看登录当前系统的用户信息。与who命令相比,w命令的功能更强大,它不但可以显示当前有哪些用户登录到系统,还可以显示这些用户正在进行的操作,并给出更加详细和科学的统计数据。


w [-fhlsuV][用户名称]


w命令我不做介绍了,大家自己去了解下。


2)ps


查看整个系统内部所运行的进程状况。


进程是一个具有一定独立功能的程序,它是操作系统动态执行的基本单元。

该命令可以查看进程的详细状况,使用格式如下:


ps  [选项]


部分参数:


-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
-r 只显示正在运行的进程。
-a:即all,查看当前系统所有用户的所有进程
-u:查看进程所有者及其他一些详细信息
-x:显示没有控制终端的进程


1.png


ps aux
ps -ef


这两种组合是我们常用的查看所有进程的命令。


1.png

1.png


关于这些字段的解释:


USER 用户名
UID 用户ID(User ID)
PID 进程ID(Process ID)
%CPU 进程的cpu占用率
%MEM 进程的内存占用率
VSZ 进程所使用的虚存的大小(Virtual Size)
RSS 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。
TTY 与进程关联的终端(tty)
STAT 进程的状态:进程状态使用字符表示的(STAT的状态码)
    R 运行 Runnable (on run queue) 正在运行或在运行队列中等待。
    S 睡眠 Sleeping 休眠中, 受阻, 在等待某个条件的形成或接受到信号。
    I 空闲 Idle
    Z 僵死 Zombie(a defunct process) 进程已终止, 但进程描述符存在, 直到父进程
    调用wait4()系统调
    用后释放。
    D 不可中断 Uninterruptible sleep (ususally IO) 收到信号不唤醒和不可运行, 进程必须等待直到有中 断发生。
    T 停止 Terminate 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。
    P 等待交换页
    W 无驻留页 has no resident pages 没有足够的记忆体分页可分配。
    X 死掉的进程
    < 高优先级进程 高优先序的进程
    N 低优先 级进程 低优先序的进程
    L 内存锁页 Lock 有记忆体分页分配并缩在记忆体内
    s 进程的领导者(在它之下有子进程);
    l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
    + 位于后台的进程组
START 进程启动时间和日期
TIME 进程使用的总cpu时间
COMMAND 正在执行的命令行命令


大家看下TTY这一栏:


1.png


?意思没有控制终端,是不能与用户进行交互的进程。

去掉x

ps au


1.png


只显示有控制终端的进程。f参数,以tree的形式显示进程与进程之间的父子关系。


1.png

PPID 父进程的进程ID(Parent Process id)

主要用来查看进程的父ID是多少。


其他一些字段解释:

NI 优先级(Nice)
PRI 进程优先级编号(Priority)
WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
FLAGS 与进程相关的数字标识


查看一个进程的线程总量:

ps -o nlwp PID


Linux上如何查看某个进程的线程


拓展:


使用ps aux命令,一次性显示所有的进程,看起来费劲。假如我们只查看特定的某个进程,就可以使用管道|来过滤。


1.png


提示:grep查询是需要占用一个进程的,如果结果有一条,表示没有查询的进程。