Linux 进程管理命令:
ps
process status 查看进行相关信息:
system 风格:sysv 有-线引导
BSD风格:BSD
ps
a:显示所有跟终端有关的进程
u:显示更详细的字段
x:显示所有跟终端无关的进程
常用 ps ax
进程分类:
终端启动(相关)的进程:用户通过命令行启动的进程
跟终端无关的进程:系统启动就自己启动
进程状态:
D: 表示不可中断的睡眠
R:表示就绪态
S:表示可中断的睡眠
T:停止
Z:僵死态
<:高优先级进程
N:低优先级进程
+:前台进程
l:多线程进程
s:这是一个会话进程的首进程
ps aux----------------BSD风格
[root@john ~]# ps aux | head USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 2900 1432 ? Ss Jan18 0:03 /sbin/init root 2 0.0 0.0 0 0 ? S Jan18 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S Jan18 0:00 [migration/0] root 4 0.0 0.0 0 0 ? S Jan18 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S Jan18 0:00 [migration/0] root 6 0.0 0.0 0 0 ? S Jan18 0:03 [watchdog/0] root 7 0.0 0.0 0 0 ? S Jan18 0:04 [events/0] root 8 0.0 0.0 0 0 ? S Jan18 0:00 [cgroup] root 9 0.0 0.0 0 0 ? S Jan18 0:00 [khelper]
%cpu----CPU使用率
%MEM----内存使用率
VSZ-------虚拟内存
RSS----常驻内存
TTY-----终端类型
STAT-----进程转态
注意:COMMADN---下加了中括号的进程表示内核的进程
sys v 风格:
ps:
-e 显示所有进程
-F | f 显示全面的信息
-l 显示长格式
[root@john ~]# ps -e | head PID TTY TIME CMD 1 ? 00:00:03 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 migration/0 6 ? 00:00:03 watchdog/0 7 ? 00:00:04 events/0 8 ? 00:00:00 cgroup 9 ? 00:00:00 khelper
[root@john ~]# ps -el | head F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 - 725 - ? 00:00:03 init 1 S 0 2 0 0 80 0 - 0 - ? 00:00:00 kthreadd 1 S 0 3 2 0 -40 - - 0 - ? 00:00:00 migration/0 1 S 0 4 2 0 80 0 - 0 - ? 00:00:00 ksoftirqd/0 1 S 0 5 2 0 -40 - - 0 - ? 00:00:00 migration/0 5 S 0 6 2 0 -40 - - 0 - ? 00:00:03 watchdog/0 1 S 0 7 2 0 80 0 - 0 - ? 00:00:04 events/0 1 S 0 8 2 0 80 0 - 0 - ? 00:00:00 cgroup 1 S 0 9 2 0 80 0 - 0 - ? 00:00:00 khelper [root@john ~]#
常用:
PRI----优先级 (0-139,其中0-100为内核进程优先级,101-139为用户进程优先级)
NI----nice值
ps -ef
-eF
F S UID PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY TIME CMD 4 S root 1 0 0 80 0 - 725 - 1432 0 Jan18 ? 00:00:03 /sbin/init 1 S root 2 0 0 80 0 - 0 - 0 0 Jan18 ? 00:00:00 [kthreadd] 1 S root 3 2 0 -40 - - 0 - 0 0 Jan18 ? 00:00:00 [migration/0] 1 S root 4 2 0 80 0 - 0 - 0 0 Jan18 ? 00:00:00 [ksoftirqd/0] 1 S root 5 2 0 -40 - - 0 - 0 0 Jan18 ? 00:00:00 [migration/0] 5 S root 6 2 0 -40 - - 0 - 0 0 Jan18 ? 00:00:03 [watchdog/0] 1 S root 7 2 0 80 0 - 0 - 0 0 Jan18 ? 00:00:05 [events/0] 1 S root 8 2 0 80 0 - 0 - 0 0 Jan18 ? 00:00:00 [cgroup] 1 S root 9 2 0 80 0 - 0 - 0 0 Jan18 ? 00:00:00 [khelper]
PSR---正在运行在哪个CPU上
手动指定显示那些字段:
-o
eg:ps -o pid,
ps -axo pid,comm 显示所有进程的pid和comm
eg:查找grep命令:查找某个命令可以用grep命令
ps aux | grep "grep"
其他命令:
pstree -----显示进程树
pgrep------以grep风格显示要找的进程,只显示进程号
-u 以某个用户运行的进程
pidof------指定进程的名字,来找PID号
eg: pidof mysql
top:每隔5秒刷新一次:
M:根据驻留内存大小进行排序
P:根据CPU使用百分比进行排序
T:根据累计时间进行排序
l:是否显示平均负载和启动时间
t:是否显示进程和CPU状态相关信息
m:是否显示内存相关信息
c:是否显示完整命令行的
q:表示退出
k:表示杀掉某个进程
-d:修改刷新时长,单位是秒
-b:批模式显示
-n #:表示批处理模式只显示#屏
[root@john ~]# top top - 13:30:08 up 18:09, 4 users, load average: 0.00, 0.00, 0.00 Tasks: 91 total, 1 running, 90 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1030532k total, 267380k used, 763152k free, 53828k buffers Swap: 2064376k total, 0k used, 2064376k free, 126108k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 329 root 20 0 0 0 0 S 0.7 0.0 0:12.41 jbd2/dm-0-8 5510 root 20 0 12780 3392 2620 S 0.3 0.3 0:01.31 sshd 5649 root 20 0 2676 1088 880 R 0.3 0.1 0:00.10 top 1 root 20 0 2900 1432 1212 S 0.0 0.1 0:03.75 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd
up:后的时间表示运行时长
4 users 登录的用户
load average:平均负载 load average: 0.00(过去的1分钟之内的队列长度), 0.00(过去的5分钟之内队列长度),, 0.00(过去的15分钟之内队列长度)
Tasks: 91 total,------进程数
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
CPU(s)----表示所有CPU的平均值,按1键可以显示每个CPU的情况
0.0%us, 用户空间占据的百分比
0.3%sy 系统空间占用的百分比(内核)
0.0%ni, nice值调整的比例
99.7%id, 空闲率
0.0%wa 等待I/O完成的等待时间
VIRT :虚拟内存集
RES :常驻内存集
SHR:共享内存
S:状态
进程间通信
IPC (共享内存、信号、semaphore)
kill 终止一个进程的命令
kill -l 显示所有通信信号:
1 :SIGHUP--- 让一个进程不用重启动就可以重读其配置文件,并让配置信息生效
2 :SIGINT--- 类似crtl+c,终止一个前台进程
9 : SIGKILL---杀死一个进程,直接强制杀死进程
15:SIGTERM------终止一个进程,可以先结束其他进程后在终止本进程。kill 默认就是15号信号
kill -1 = kill -SIGHUP
也可以简写,也就是去掉SIG,编程kill -HUP
killall 后面加进程名,杀死进程名的所有进程,killall 也可以指定信号
eg:killall httpd
调整进程的nice值:(也就是调整进程的优先级)
renice +nice值 +PID---已经启动的进程
eg:renice -3 31709
在启动时修改nice值
nice -n nice值 COMM
前台:占据了命令提示符的
后台:启动之后就释放命令提示符,后续的操作在后台完成
在命令后面加上&符号,执行命令后就释放前台,转到后台操作
前台---》后台 ctrl+z 将执行的命令送到后台,但是进程停止
命令后加&,让命令在后台执行
bg:让后台的停止作业继续运行
bg 跟上作业号,作业号可以省略
jobs,查看后台的所有作业,每个作业都有一个作业号,+表示命令将默认操作的作业,-表示默认第二个操作的作业
fg:将后台的作业调回前台
kill %jobid ---杀死某个作业
vmstat
r:队列长度
b阻塞队列长度
si:有多少swap内存信息被调入
so:有多少swap内存信息被调出
vmstat 1 每隔1秒钟更新一次
vmstat 1 5 每隔1秒钟更新一次,只显示5次
uptime : 登录时间、负载、运行时长
cat /proc/meminfo----查看内存信息
cat /proc/cpuinfo---查看 CPU 信息