进程管理

2021/11/21 7:10:04

本文主要是介绍进程管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

进程管理

程序在运行后,我们需要了解进程的运行状态。查看进程的状态分为: 静态和动态两种方式。

1 使用ps命令查看进程状态

ps -aux
# -a:显示当前终端的所有进程信息
# -u:以用户的形式显示进程信息
# -x:显示后台进程运行的参数

image

状态 描述
USER 启动进程的用户
PID 进程运行的ID号
%CPU 进程占用CPU百分比
%MEM 进程占用内存百分比
VSZ 进程占用虚拟内存大小 (单位KB)
RSS 进程占用物理内存实际大小 (单位KB)
TTY 进程是由哪个终端运行启动的tty1、pts/0等。?表示内核程序与终端无关(远程连接会通过tty打开一个bash:tty)
STAT 进程运行过程中的状态 man ps (/STATE)
START 进程的启动时间
TIME 进程占用 CPU 的总时间(为0表示还没超过秒)
COMMAND 程序的运行指令,[ 中括号 ] 属于内核态的进程。 没有 [ ] 的是用户态进程。

选项-aux看不到父进程,我们使用-ef选项查看

ps -ef
# -e 显示所有进程
# -f 全格式。

image

状态 描述
UID 用户ID
PID 进程ID
PPID 父进程ID
C CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算, 执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME 进程启动的时间
TTY 完整的终端名称
TIME 进程占用 CPU 的总时间(为0表示还没超过秒)
CMD 程序的运行指令,[ 中括号 ] 属于内核态的进程。 没有 [ ] 的是用户态进程。

过滤某些进程

ps aux | grep bash # 过滤bash

2 使用top命令查看进程状态

top命令提供系统进程的动态的实时情况

top

image

状态 描述
Tasks: 103 total 当前进程的总数
1 running 正在运行的进程数
102 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
%Cpu(s) 平均cpu使用率,按1查看每个cpu具体状态
0.0 us 用户进程占用cpu百分比
0.2 sy 内核进程占用百分比
0.0 ni 优先级进程占用cpu的百分比
99.8 id 空闲cpu
0.0 wa CPU等待IO完成的时间,大量的io等待,会变高
0.0 hi 硬中断,占的CPU百分比
0.0 si 软中断,占的CPU百分比
0.0 st 虚拟机占用物理CPU的时间

top是一个强大的工具,在top界面,你可以使用这些常用按键

字母 含义
h 查看帮助
1 数字1,显示所有CPU核心的负载
z 以高亮显示数据
b 高亮显示处于R(进行中)状态的进程
M 按内存使用百分比排序输出
P 按CPU使用百分比排序输出
q 退出top

3 关闭进程

使用kill关闭某些进程

kill -l # 列出当前系统所支持的信号

image

一共有64种信号,分为两类,不可靠信号(1-31)和可靠信号(32-64)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会(发送几次信号就收到几次)。

 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 一般守护进程都会在收到这个信号时重新加载配置。 (类似 reload)
9 SIGKILL 强制杀死进程(有状态的服务(存磁盘的,如mysql)强制停止可能会导致下次起不来)
15 SIGTERM 终止进程,默认kill不加参数就是这个信号

大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后再停止。然而kill -9命令,系统给对应程序发送的信号是SIGKILL,不会被阻塞直接递达,所以能顺利杀掉进程。

Linux系统中的killallpkill命令用于杀死指定名字的进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killallpkill把这两个过程合二为一,是一个很好用的命令。

# 通过服务名称杀掉进程
vim nginx.conf   # 修改为worker_processes  10;
kill -1 26093    # 平滑reload nginx,可以看到很多ngixn进程
kill 26121      # 杀掉一个子进程,会迅速的被master启动起来,只是id号不一致了

kill  26093    # 主进程,子进程都会被杀掉 

# 通过服务名称杀掉进程
pkill nginx
killall nginx

# 使用pkill踢出从远程登录到本机的用户,终止pts/0上所有进程, 并且bash也结束(用户被强制退出)
pkill -9 bash


这篇关于进程管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程