学习进程之前,我们先来了解一下线程
线程:最小的调度单位
ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器
命令:
-a | 显示所有用户的进程 |
-u | 显示用户名和启动时间 |
-x | 显示 没有控制终端的进程 |
-e | 显示所有进程,包括没有控制终端的进程 |
-l | 长格式显示 |
-w | 宽行显示,可以使用多个 w 进行加宽显示 |
-f | 做一个更完整的输出 |
例:
ps -aux //显示所有进程
ps -l //查看当前用户的进程
查看结果如下,我们来分析一下
说明:
F:代表这个程序标志(process flags),说明这个程序的权限。
常见号码有:4 表示此程序的权限为root;
1 表示此子程序仅进行复制(fork)而没有实际执行(exec)
S:代表这个程序的状态(STAT),主要的状态有
- R(Running):该程序正在运作中
- S(Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒
- D:不可被唤醒的睡眠状态,通常可能是在等待I/O的情况
- T:停止状态(stop),可能是在工作控制(后台暂停)或traced状态
- Z(Zombie):僵尸状态,程序已经终止但却无法被移除至记忆体外
- +:位于后台的进程组
UID:代表此程序被该UID所拥有
PID:程序的PID号码
PPID:此程序的父进程PID号码
C:代表CPU使用率,单位为百分比
PRI/NI:Priority/Nice的缩写,代表此程序被CPU所执行的优先顺序,数值越小代表该程序越快被CPU执行
ADDR/SZ/WCHAN:都与内存有关
ADDR是kernel funcition,指出该程序在内存的哪个部分,如果是running的程序,一般会显示
SZ代表此程序用掉多少内存
WCHAN表示目前程序是否运作中,若为-表示正在运行
TTY:登入者的终端机位置,若为远程终端登入则使用动态终端界(pts/n)
TIME:使用掉的CPU时间,即此程序实际花费CPU运作的时间
CMD:触发此进程的指令是什么
ps -u //查看当前用户的进程
说明:
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (/STATE)
- R 运行
- S 可中断睡眠 Sleep
- D 不可中断睡眠
- T 停止的进程
- Z 僵尸进程
- X 死掉的进程
- s 进程的领导者,父进程
- < <优先级较高的进程
- N N优先级的进程
- + +表示是前台的进程组
- l 以线程的方式运行
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名
一些常用命令:
pgrep -l sshd //查看指定进程的pid
kill 5945 // 根据id号结束进程
killall sshd // 结束所有批处理进程(若将sshd的进程结束后,要从虚拟机的终端内重新启动)
重新启动
[root@localhost ~]# systemctl start sshd
top命令查看进程
top 是一个在 Linux 和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时视图,显示系统的整体性能信息以及正在运行的进程的相关信息。
top -d 数字 | -bnp //格式
-d | 后面可以接秒数,就是整个进程界面更新的秒数,默认是5秒 |
-b | 以批次的方式执行top,还有更多的参数可用。通常会搭配数据流重定向来将批处理的结果输出为文件。 |
-n | 与-b搭配,进行几次top的输出结果 |
-i | 不显示闲置或者僵死的进程信息 |
-c | 显示进程的整个命令路径,而不是只显示命令名称 |
-s | 使top命令在安全模式下运行,此时top的交互式指令被取消,避免潜在危险 |
-p | 指定某些个PID来进行查看检测 |
例:
top -d 1 //将更新秒数设置为1秒
top -d 1 -p 10126 //查看指定进程的动态信息
top -d 1 -u apache //查看指定用户的进程
使用top命令查看结果(此处截取了前十行的)
按键 | 作用 | 退出 |
i | 忽略限制进程或僵死进程 | Esc |
m | 切换显示内存信息 | Esc |
t | 进程和CPV变 | Esc |