进程管理

进程的生命周期

进程管理_第1张图片

监控进程状态命令-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 信号管理

进程管理_第2张图片

[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 &

你可能感兴趣的:(进程管理)