day19 进程管理

什么是进程,什么是线程

1、什么是程序
一般情况下,代码,安装包等全部都是应用程序 2、什么是进程
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
应用程序运行起来的能够提供某种服务的实例 3、什么是线程
进程中处理具体事务的东西
进程是资源分配的最小单位,线程是CPU调度的最小单位。每一个进程中至少有一个线程。

进程的三种状态

进程的三种状态:
进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态。
1、就绪态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。 2、运行态:当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。 3、阻塞态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。 进程三种状态间的转换:
1)就绪→运行
2)运行→阻塞
3)阻塞→运行
4)运行→就绪

ps命令:查看进程

ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
格式:ps [选项] 选项:
-a :显示一个终端的所有进程
-u :选择有效的用户号id或者用户名
-x :显示没有控制终端的进程,同时显示各个命令的具体路径
-e :显示所有的程序
-f :显示UID,PPIP,C与STIME栏位。
-aux :一般是一起使用的,相同的还有一个-ef选项
-aux和-ef之间的区别
-ef :会打印出父级PID
-aux:都会打印出CPU、内存相关的使用情况 # ps详解:
[root@localhost ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER :指的是当前进程的用户
PID :进程的编号
%CPU : CPU的占有率(指在单位时间之内占用CPU的时间比)
%MEM :内存的占用率
VSZ : 应用程序向系统申请的内存(虚拟内存)
RSS :应用程序实际上使用的内存大小
TTY :应用程序正在使用的终端(?代表后台运行,也就是说不占用任何终端)
tty :操作系统的终端
pts :虚拟终端 # /dev/pts 终端存放位置
STAT :进程的状态
START :进程开始的时间
TIME :进程占用CPU的总时间
COMMAND :进程运行的命令 # STAT详解:
R :正在运行状态(正在使用CPU)
S :睡眠状态
D :不可中断睡眠,即在睡眠的过程中不可以接收信号唤醒=》执行的IO操作得不到硬件设备的响应
T :停止的进程
Z :僵尸进程
X :死掉的进程(几乎看不见,因为死了就立即回收了)
< :标注了<小于号代表优先级较高的进程
N :N代表优先级较低的进程
s :包含子进程
+ :+表示在前台运行的进程(前台运行就是指在命令行中运行)
l :小写字母l,代表以线程的方式运行,即多线程
| :管道符号代表多进程 知识储备:
nice设置进程的优先级
-n:设置具体的优先级
-20~20:数字越大优先级越高
[root@localhost ~]# nice -n 19 sleep 100 SN+:优先级较低
[root@localhost ~]# nice -n -19 sleep 100 S<+:优先级较高 案例:查找nginx文件的PID
[root@localhost ~]# ps -aux | grep nginx

top命令:实时查看进程的命令

top命令:实时查看进程的命令
格式:top [选项] 选项:
-b:以批处理模式操作;
-c:显示完整的命令;
-d:屏幕刷新间隔时间;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。 例如:
[root@localhost ~]# top -d 1 -u root # 查看root用户下的所有进程
[root@localhost ~]# top -d 1 -p 1485 # 查看PID号为1485的进程
[root@localhost ~]# top -d 1 # 刷新评率改为1秒一次,默认是3秒一次 案例1:显示进程信息
[root@localhost ~]# top 案例2:显示完整命令
[root@localhost ~]# top -c 案例3:以批处理模式显示程序信息
[root@localhost ~]# top -b 案例4:设置信息更新次数
[root@localhost ~]# top -n 2 # 表示更新两次后终止更新显示 案例5:显示更新十次后退出
[root@localhost ~]# top -n 10 案例6:查看一个进程的PID号
[root@localhost ~]# top -p 2567 # 指定进程

top交互命令

top交互命令:
q :退出
h :显示帮助画面,给出一些简短的命令总结说明
k :终止一个进程
r :重新安排一个进程的优先级别
M :按内存的使用排序
P :按CPU使用排序
N :以PID的大小排序
R :对排序进行反转
f :自定义显示字段
l :显示所有CPU的负载
s :改变画面更新频率
1 :展开CPU详情
m :改变内存的显示样式
z :改变颜色
< :向前
> :向后

top命令信息详解

top命令信息详解:
[root@localhost ~]# top
top - 09:44:56 up 16 days, 16:23, 1 user, load average: 0.00, 0.01, 0.01
Tasks: 145 total, 2 running, 143 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
KiB Mem : 995676 total, 821188 free, 100636 used, 73852 buff/cache
KiB Swap: 1572860 total, 1572860 free, 0 used. 782936 avail Mem 解释:
第一行:系统
top - 09:44:56 :当前系统时间
16 days :系统已经运行了16天
1 user :1个普通用户当前登录
load average : 系统负载,即任务队列的平均长度 第二行:进程
Tasks: 145 total :总进程数
2 running :正在运行的进程数
143 sleeping :睡眠的进程数
0 stopped :停止的进程数
0 zombie :冻结的进程数 第三行:CPU
Cpu(s): 0.0 us :用户空间占用CPU百分比
0.0 sy :系统态空间占用CPU百分比
0.0 ni :代表优先被调度的进程占cpu时间的百分比
100.0 id :cpu空闲的百分比
0.0 wa :cpu等待io的百分比
0.0 hi :硬件中断,处理硬件中断所占用CPU的时间
0.0 si :软件中断,处理软件中断所占用CPU的时间
0.0 st :被偷走的cpu 第四行:KiB Mem(内存)
KiB Mem : 995676 total :物理内存总量
821188 free :空闲内存总量
100636 used :使用的内存总量
73852 buff/cache :系统缓存的内存总量 第五行:Swap(硬盘)
KiB Swap: 1572860 total :内存总量
1572860 free :空闲内存总量
0 used :使用内存总量
782936 avail Mem :系统缓存的内存总量

top栏目详解

top栏目详解:
[root@localhost ~]# top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND PID :进程的编号
USER :运行进程的用户
VIRT :虚拟内存
RES :常驻内存
SHR :共享内存
S :进程的状态
%CPU :CPU的占有率
%MEM :内存的占有率
TIME+ :进程占用CPU总时间
COMMAND :进程运行的内存

进程信号

什么是信号

简而言之,操作系统告诉进程怎么做,做什么的一种沟通方式。

kill 命令

kill命令:用来删除执行中的程序或工作。kill就是发送信号的命令
语法:
kill [选项非必选] [信号id] [进程PID号] # kill -9 123456 选项:
-a :当处理当前进程时,不限制命令名和进程号的对应关系;
-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
-p :指定kill 命令只打印相关进程的进程号,而不发送任何信号;
-s <信息名称或编号>:指定要送出的信息;
-u :指定用户。 # 查看所有信号
[root@localhost ~]# kill -l # 只有第9中信号(SIGKILL)才能无条件终止进程
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:彻底杀死进程
[root@localhost ~]# kill -9 123456 案例2:杀死指定用户所有进程
[root@localhost ~]# kill -9 $(ps -ef | grep hnlinux) # 方法一
[root@localhost ~]# kill -u hnlinux # 方法二

HUP信号

HUP信号
id ;1
完成的名字:SIGHUP
作用:更新进程的配置

INT、QUIT和TSTP:终止信号

INT    信号就是 ctrl + c    停止进程   id号:2
QUIT 信号就是 ctrl + \ 终止进程 id号:3
TSTP 信号就是 ctrl + z 终断信号 id号:20

KILL和TERM:杀死信号

KILL    :  杀死信号(直接回收内存,强制剥离CPU)   id号:9
TERM : 终止信号(优雅的死) id号:15

CONT和STOP:暂停和恢复

CONT  恢复   id号:18
STOP 暂停 id号:19 知识储备:
$$ : 打印当前进程的PID
[root@localhost ~]# kill -19 2361 暂停进程
[root@localhost ~]# kill -18 2361 恢复进程

netstat命令:查看网络状态

netstat命令:用于显示网络状态。
利用 netstat 指令可让你得知整个 Linux 系统的网络情况。
语法:
netstat [选项] 选项:
-t :显示TCP传输协议的连线状况
-u :显示UDP传输协议的连线状况
-l :显示监控中的服务器的Socket
-p :显示正在使用Socket的程序PID和程序名称
-n :不反解,不将IP地址解析为主机名,不将端口号解析成协议名(80 ---> http)
-h :帮助
-i :显示网卡列表 案例:查看正在监听的,且使用tcp协议的进程
[root@localhost ~]# yum install net-tools -y # 先安装网络调试工具
[root@localhost ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1961/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1346/sshd
tcp6 0 0 :::80 :::* LISTEN 1961/nginx: master
tcp6 0 0 :::22 :::* LISTEN 1346/sshd Local Address :本地地址
Foreign Address :外部地址
State :状态
PID/Program name :程序的PID和名字

僵尸进程和孤儿进程

僵尸进程:
符合一下3个条件就是僵尸进程:
1、本身是一个进程
2、进程的生命周期已经结束
3、进程依然站着PID不释放
僵尸进程的危害:
系统一共有0-65535个PID,一旦PID被使用完毕,则无法在启动其他进程 孤儿进程:是没有危害的
1、孤儿进程的父进程声明周期已经结束,而子进程还在运行。
2、在父进程的情况下被操作系统进程(pid=1)进程接收

最新文章

  1. require.js 入门笔记
  2. 今天心情好,给各位免费呈上200兆SVN代码服务器一枚,不谢!
  3. poj 2945 trie树统计字符串出现次数
  4. 使用RESTClient插件进行数据模拟(GET,POST)提交
  5. JuQueen(线段树 lazy)
  6. git版本控制工具(二)----本地版本库的常用操作
  7. Delphi格式化输出函数(1): Format
  8. POJ 1740 A New Stone Game(普通博弈)
  9. Hibernate逍遥游记-第13章 映射实体关联关系-005双向多对多(使用组件类集合\&lt;composite-element&gt;\)
  10. Spring AOP 实现原理与 CGLIB 应用--转
  11. sqlite3经常使用命令&amp;amp;语法
  12. DBProxy 入门到精通系列(二):DBProxy快速入门教程
  13. android.app.Activity 的介绍
  14. 【原创】Struts2.5.12版本中使用通配符*
  15. keil的自动补全功能
  16. DOM jquery
  17. 《从零開始学Swift》学习笔记(Day 65)——Cocoa Touch设计模式及应用之选择器
  18. Sqli-LABS通关笔录-5[SQL布尔型盲注]
  19. LightOJ 1027 A Dangerous Maze(期望)
  20. 【POJ2516】Minimum Cost

热门文章

  1. gawk使用方法简介
  2. CF398A Cards | 贪心
  3. Oracle 相关命令
  4. 五分钟,让你明白MySQL是怎么选择索引《死磕MySQL系列 六》
  5. SpringCloud微服务实战——搭建企业级开发框架(十五):集成Sentinel高可用流量管理框架【熔断降级】
  6. PTA7-1 迷宫寻路 (20分)
  7. (十)JDBC(重点)
  8. 这一次,Google 终于对 Web 自动化下手了!
  9. thinkphp5 目录结构
  10. Windows11下的快捷键(win10通用,部分win11独有的不通用)