共计 2662 个字符,预计需要花费 7 分钟才能阅读完成。
ps - report a snapshot of the current processes.
选项:
-A:显示所有进程与 - e 相同的效果
-a:不与终端相关的所有进程
-u:与用户相关的进程
-x:通常和 a,u 结合使用,显示出来比较全面的信息
-f:做一个更为完整的输出
常用的组合:
ps -ef 以完整的信息显示所有进程信息
ps -efH 显示进程层次结构
ps -aux 显示所有不与终端和与终端相关的进程完整信息
ps -axo pid,command,psr,pri,ni 自定义显示其进程号、进程命令、优先级、nice 值
命令演示:
UID/PID/PPID: 表示发起者、进程号、父进程号
C:代表 CPU,单位为百分比
STIME:表示进程启动时间
TTY: 登录者的终端位置
TIME:cpu 的运行时间
CMD: 处罚进程命令
命令演示:
USER: 进程的发起者 PID: 进程号 %CPU:cpu 的占用率
%MEM: 内存的占用率 VSZ: 虚拟内存集 RSS: 物理内存集
TTY: 终端位置 STAT: 进程状态信息 START: 被触发的时间
TIME:cpu 的使用时间 COMMAND: 触发进程命令
………………………………………………………………………………………………………………………
注:STAT 的常见状态:
R:running, 运行状态
S:interruptible sleeping, 可终端休眠
D:uninterruptible sleeping, 不可终端休眠
T:stop, 停止状态
Z:zombie, 僵持状态
top - display Linux tasks:动态显示 linux 进程信息
top - 17:24:30 up 2 days, 9:45, 3 users, load average: 0.00, 0.01, 0.05
top 当前系统时间 系统启动到现在时间总长 用户数 平均负载
Tasks: 364 total, 2 running, 361 sleeping, 1 stopped, 0 zombie
显示进程总量与个别程序处在什么样的状态:运行 可中断 不可中断 僵持状态、僵死状态
%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
………………………………………………………………………………………………………………………
显示 CPU 的整体负载,具体如下:
us:user space 用于使用空间
sy:system space 内核占用 cpu 百分比
ni:nice 用户进程空间所改变过优先级的进程占用 cpu 的百分比
id:idle 空闲 cpu 百分比
wa:wait i/0 等待 i / o 花费时间
hi:hardware interrupt
si:software interrupt
st:stolen, 被虚拟内存偷走的百分比
KiB Mem : 1001332 total, 139212 free, 207732 used, 654388 buff/cache
物理内存占用使用情况
KiB Swap: 2098172 total, 2097620 free, 552 used. 531424 avail Mem
交换分区的使用情况
上面一行通常为空,只要在输入命令时才显示,在这可输入的命令有如下:
P: 以占据的 cpu 的百分比大小进程排序
M: 以占据的 memory 大小进行排序
T: 以 cpu 的运行时长进行排序
l: 显示系统负载行
t: 是否显示系统进程摘要信息及其 cpu 的负载状态
1: 平均或单独显示 cpu 的负载状态
m: 是否显示内存相关的状态信息
q: 退出命令
s: 修改延长刷新时间
k: 终止指定进程
………………………………………………………………………………………………………………………
top 字段详解:
PID: 进程号
USER: 进程发起者
PR: 进程的优先级,越小越优先
NI:nice 值,与 priortity 有关,越小越早被运行
VIRT: 虚拟内存集 进程占虚拟内存空间
RES: 物理内存集 进程占实际内存空间
SHR: 进程与其他进程共享的内存大小
S: 进程的状态信息
%CPU:cpu 的使用百分比
%MEM: 内存的使用百分比
TIME+:cpu 的使用时间的总时长
COMMAND: 进程相关命令
htop - interactive process viewer
u: 显示指定用户的进程
l: 显示光标所在进程所打开的文件列表
s: 显示光标所在进程执行的系统调用
a: 绑定进程到指定的 cpu
#: 快速定位光标之 pid 为 #号的进程上
htop 支持的选项:
-d: 延长时长
-u USERNAME: 仅显示指定用户的进程
-s COLUMN: 根据指定的字段进行排序
所谓的进程管理就是向进程发送一些控制信号,来完成对进程的管理控制,可通过 kill 命令来显示当前系统可用的信号,以及向进程发送信号指定。
kill -l:显示当前系统可用的信号
用于向进程发送信号,以实现对进程的管理
kill - terminate a process
每个信号的标识方式有三种:
1) 信号的数字标识
2) 信号的完整名称
3) 信号的简写名称
向进程发信号:
kill [-s signal|-p] [–] pid…
kill -l [signal]
常见的信号有:
1)SIGHUB #无需关闭进程让其重读配置文件 kill -1 pid
2)SIGINT #终止正在运行的指令 相当于 ctrl+c kill -2 pid
9)SIGKILL #强暴的杀死正在运行的进程 kill -9 pid
15)SIGNTERM# 安全终止运行中的进程 kill -15 pid
19)SIGSTOP #停止进程
killall 命令:killall 命令后面接进程名
killall - kill processes by name
在每个用户登录系统之后每个工作进程都是当前 bash 的子进程,此时我们需要对那些进行管理,即将一部分作业放入后台运行,,同时在前台编辑一个配置文件,在编辑完配置文件后再将后台的作业任务调回前台运行。
如何将作业运行在后台:
1)ctrl+z
2)command &
作业控制命令:fg bg kill
作业控制命令:
# fg [[%]JOBNUM]: 将指定的作业调回前台
# bg [[%]JOBNUM]: 让送往后台的作业在后台继续运行
# kill[%JOBNUM]: 终止指定的作