进程的生命周期
监控进程状态命令-ps
ps aux
a:查看所有的终端进程
x:查看所有的非终端进程
u:显示进程的用户
f:查看子进程
[root@qls ~]# ps auxf|grep nginx
o:自定义查看想要看的字段
[root@qls ~]# ps axo user,pid,%cpu,%mem,command
--sort:排序,可以根据ps的所有字段
[root@zls ~]# ps aux --sort %cpu
## 查看pid的额外命令
[root@qls ~]# pgrep nginx
[root@qls ~]# pidof nginx
USER:启动该进程的用户
PID:进程的ID号
%CPU:占用cpu的百分比
%MEM:占用内存的百分比
VSZ:虚拟内存集(进程占用虚拟内存的空间)
RSS:真实物理内存(进程占用物理内存的空间)
TTY:运行的终端
?:内核运行的终端
tty:机器运行的终端
pts/0:远程连接的终端
STAT:进程的状:
D: #无法中断的休眠状态(通IO的进程)
R: #正在运行的状态
S: #处于休眠的状态
T: #暂停或被追踪的状态
W: #进入内存交换(从内核2.6开始无效)
X: #死掉的进程(少见)
Z: #僵尸进程
<: #优先级高的进程
N: #优先级较低的进程
L: #有些页被锁进内存
s: #父进程(在它之下有子进程开启着)
l: #以线程的方式运行
|: #多进程的
+: #该进程运行在前台
START:进程被触发启动的时间
TIME:进程实际使用cpu的时间
COMMAND:进程启动的命令
进程管理命令-top
top
top - 09:10:31 up 1 day, 28 min, 1 user, load average: 0.00, 0.01, 0.05
# 09:10:31 :当前系统时间
# up 1 day, 28 min :运行时间
# 1 user :同时在线用户数量
# load average: 0.00, 0.01, 0.05
0.00 : 1分钟的负载
0.01 : 5分钟的负载
0.05 : 15分钟的负载
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
# 105 total : 总共有多少个工作任务
# 1 running : 1个在运行
# 104 sleeping : 104个在等待
# 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
# 0.0 us : 用户态
# 0.0 sy : 内核态
# 0.0 ni : 优先级
# 100.0 id : 空闲
# 0.0 wa :等待
# 0.0 hi : 硬中断
# 0.0 si : 软中断
# 0.0 st : 虚拟机(虚拟产品)
-d:指定变化时间
-p:只查看指定PID的进程
-u:只查看指定用户的进程
-b:保存到文件
-n:指定次数
# top 常见指令
h 查看帮出
z 高亮显示
1 显示所有CPU的负载
s 设置刷新时间
b 高亮现实处于R状态的进程
M 按内存使用百分比排序输出
P 按CPU使用百分比排序输出
R 对排序进行反转
f 自定义显示字段
k kill掉指定PID进程
W 保存top环境设置 ~/.toprc
q 退出
# PID:进程id号
# USER:用户
# PR:优先级
# NI:nice值
# VIRT:虚拟内存
# RES:真实内存
# SHR:共享内存
# S:进程状态
# %CPU:占用cpu的百分比
# %MEM:占用内存的百分比
# TIME+:进程运行时间
# COMMAND:进程运行的命令
什么是中断
中断是系统用来影响硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来影响设备的请求。
kill 信号管理
[root@qls ~]# 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 HUP 挂起信号,往往可以让进程重新配置
kill -s HUP
kill -1
2 INT 中断信号,起到结束进程的作用,和ctrl + c 的作用一样
kill -s INT
kill -2
3 QUIT 让进程退出,结果是进程退出
kill -s QUIT
kill -3
9 KILL 直接结束进程,不能被进程捕获
kill -9
kill -s KILL
15 TERM 进程终止,这是默认信号
kill -15
kill -s TERM
kill
18 CONT 被暂停的进程将继续恢复运行
19 STOP 暂停进程
20 TSTP 用户停止请求,作用类似于ctrl + z 把进程放到后台并暂停
优先级
# nice
-n:指定优先级
[root@qls ~]# nice -n -20 tail -f /var/log/messages
# renice
[root@qls ~]# ps axo nice,command|grep sshd
[root@qls ~]# renice 19 9962
后台进程管理
&:将进程放在后台执行
Ctrl + z:暂停
bg:(background)后台
fg:调出
# screen
[root@qls ~]# yum install -y screen
# 查看有几个screen起的后台进程
[root@qls ~]# screen -ls
# 调出后台进程
[root@qls ~]# screen -r 10694
# 创建后台进程
[root@qls ~]# screen
# 创建后台进程并命名
[root@qls ~]# screen -S 又瞎玩
# nohup
[root@qls ~]# nohup sh a.sh &