一、查看进程工具:
1、命令:ps
- a 显示跟当前终端关联的所有进程
- u 基于用户的格式显示
- x 显示所有进程,不以终端机来区分
[root@liang test]# ps aux|head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 126268 6820 ? Ss 18:42 0:02 /usr/lib/systemd/systemd --system --deserialize 15
root 2 0.0 0.0 0 0 ? S 18:42 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 18:42 0:00 [ksoftirqd/0]
root 6 0.0 0.0 0 0 ? S 18:42 0:02 [kworker/u256:0]
root 7 0.0 0.0 0 0 ? S 18:42 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 18:42 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 18:42 0:00 [rcuob/0]
root 10 0.0 0.0 0 0 ? S 18:42 0:00 [rcuob/1]
root 11 0.0 0.0 0 0 ? S 18:42 0:00 [rcuob/2]
###最后一列[xxx]使用方括号括起来的进程是内核态的进程,没有括起来的是用户态进程。
USER 启动这些进程的用户
PID 进程的PID
%CPU 进程占用CPU的百分比
%MEM 进程占用内存的百分比
VSZ 进程占用的虚拟内存大小(KB)
RSS 进程占用的物理内存的大小(KB)
START 该进程被触发的时间
TIME 该进程实际使用CPU运作的时间
COMMAND 该程序使用的指令
STAT 该程序目前的状态,linux进程有五种基本状态:
R 该程序目前正在工作,或者是可被运作
S 该进程目前正在睡眠中,可被某些讯号唤醒
T 该程序目前正在侦测或者是停止了
Z 该进程应该已经被终止,但是其父程序却无法正常终止他,造成僵尸进程
D 不可中断状态
五个基本状态后的小状态:
< 表示进程运行在高优先级上
N 表示进程运行在低优先级上
L 表示进程有页面锁定在内存中
s 表示进程是控制进程
l 表示进程是多线程
+ 表示当前进程运行在前台
2、uptime查看系统负载
[root@liang ~]# uptime
07:57:48 up 74 days, 11:32, 1 user, load average: 0.00, 0.00, 0.00
07:57:48 系统当前时间
up 74 days 11:32 系统运行时间,说明此服务器连续运行74天11个小时32分
1 user 当前登录用户
load average: 0.00, 0.00, 0.00 系统负载,即任务队列的平均长度。三个数值
分别为 1分钟、五分钟、十五分钟前到现在的平均值。
如果服务器的CPU为1核心,则load average中的数字>=3负载过高。
3、top动态管理进程
top - 08:13:21 up 74 days, 11:48, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 110 total, 1 running, 109 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 520132k total, 231980k used, 288152k free, 74504k buffers
Swap: 135164k total, 0k used, 135164k free, 100248k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26253 root 20 0 2752 1908 1672 R 0.3 0.4 0:00.08 top
1 root 20 0 2964 2248 2060 S 0.0 0.4 0:01.05 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:28.64 ksoftirqd/0
7 root 20 0 0 0 0 S 0.0 0.0 0:25.59 rcu_sched
第二行:
Tasks: 110 total 总进程数为110
1 running 正在运行的进程数
109 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
第三行:
0.0%us 系统用户进程使用CPU百分比
0.0%sy 内核中的进程占用CPU百分比
0.0%ni 用户进程空间内改变过优先级的进程占用CPU百分比
100.0%id 空闲的CPU百分比
0.0%wa CPU等待I/O完成的时间总量
0.0%hi 硬中断占比
0.0%si 软中断占比
0.0%st 虚拟机占用物理的时间,例如物理机运行了KVM,则表示KVM占用物理机的CPU时间
第四、五行:
Mem:520132k total 物理内存总量
231980k used 使用的物理内存总量
288152k free 空闲内存总量
74504k buffers 内核缓存内存量
Swap:135164k total 交换分区总量
0k used 使用的交换分区总量
135164k free 空闲交换分区总量
100248k cached 可利用内存总量
top快捷键:
默认三秒刷新一次,按s修改刷新时间
空格:立即刷新
q:退出
P;按CPU排序按CPU排序
M:按内存排序
T:按时间排序
数字1:显示每个内核的CPU使用率
u/U:指定显示的用户
h:帮助
参数:
-p top -p 进程号,查看某个进程状态
二、前后台进程切换
- & 用在一个命令的最后,可以吧这个命令放到后台执行;
- crtl+z 将一个正在前台执行的命令放到后台,并且暂停 ;
- jobs 查看当前有多少在后台运行的进程,它是一个作业控制命令 ;
- fg 将后台中的命令调至前台继续运行 ;
- bg 将一个在后台暂停的命令,变成继续执行;
三、关闭进程
1、kill 进程号: 关闭单个进程;
2、killall与pkill :用于杀死指定名字的进程;
3、kill -l:通过信号的方式来控制进程,kill -l可以查看所有支持的信号;
[root@liang ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
常用的信号:
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断
3) SIGQUIT 退出
9) SIGKILL 强制终止
15) SIGTERM 终止(正常结束)
18) SIGCONT 继续
19) SIGSTOP 停止
20) SIGTSTP 暂停
例:
指定pid
[root@liang ~]# kill -9 1343
指定服务名
[root@liang ~]# pkiil sshd
[root@liang ~]# killall sshd
7.进程优先级管理
优先级范围(-20至19),越小优先级越高,默认优先级是0
命令:
nice 指定程序运行的优先级
格式:nice -n command
renice 改变程序运行的优先级
格式:renice -n pid
例:修改vi的优先级为5
[root@liang ~]# nice -n 5 vi aa
修改为10
[root@liang ~]# renice -10 17757
17757 (process ID) old priority 5, new priority -10