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)进程接收

day19 进程管理的更多相关文章

  1. 《Linux内核设计与实现》读书笔记 第三章 进程管理

    第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...

  2. 进程管理三大扩展工具htop

    三大进程管理监控工具 HTOP 介绍: Htop是一款运行于Linux系统监控与进程管理软件,htop提供所有进程的列表,并且使用彩色标识出处理器.swap和内存状态.用户一般可以在top无法提供详尽 ...

  3. Linux进程管理子系统分析【转】

    本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...

  4. Linux下取代top的进程管理工具 htop

    一.htop 简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (for ...

  5. Linux进程管理

    一.进程管理简介 进程是正在执行的程序或命令,每一个进程都是一个运行实体,都有自己的地址空间,并占用一定的系统资源. 进程管理的作用: 1.判断服务器的健康状态 2.查看系统中的所有进程 3.杀死进程 ...

  6. C++ Windows进程管理

    功能: 1.各个进程启动.挂起.恢复.停止等 2.监听进程的运行状态,进程退出(正常.非正常)时,通知用户 3.异步队列 4.线程安全 进程管理器类: #ifndef __ProcessManager ...

  7. 12个Linux进程管理命令介绍(转)

    12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国  作者:Linux [字体:大 中 小]   执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...

  8. 理解Docker容器的进程管理

    摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)&qu ...

  9. Android内存进程管理机制

    参考文章: http://www.apkbus.com/android-104940-1-1.htmlhttp://blog.sina.com.cn/s/blog_3e3fcadd0100yjo2.h ...

随机推荐

  1. 第K个数 牛客网 程序员面试金典 C++ Python

    第K个数 牛客网 程序员面试金典 C++ Python 题目描述 有一些数的素因子只有3.5.7,请设计一个算法,找出其中的第k个数. 给定一个数int k,请返回第k个数.保证k小于等于100. 测 ...

  2. hdu 2159 FATE(DP)

    题意: 小余玩游戏,离最后一级还需n的经验值,但是他已经很厌烦了,还剩下m的忍耐度.每杀一只怪小余会得到相应的经验,同时减掉相应的忍耐度. 当忍耐度降到0或者0以下时,小余就不会再玩这个游戏.小余还说 ...

  3. Oracle 19c 没有匹配的协议

    Oracle12c连接问题ORA-28040:没有匹配的验证协议 造成改问题的原因是客户端版本太低.修改sqlnet.ora文件可以让服务器适配低版本的客户端 sqlnet.ora文件中加入 SQLN ...

  4. 释放 cached 内存

    巡检服务器发现内存可用很少了 top 命令查看是没有占用大内存的进程,cached特别大,释放cached就可以了 可用内存= free + buffers + cached 以下方法可以释放cach ...

  5. VSCode 微信小程序 开发环境配置 详细教程

    本博客已暂停更新,需要请转新博客http://www.whbwiki.com/231.html 配置 VsCode 微信小程序开发环境并非不用官方的 微信小程序开发者工具 ,而是两者配合适用,可以极大 ...

  6. LoadRunner12回放与录制

    系统版本 本人的操作系统是win10 版本是loadrunner12. 开启loadrunner自带的机票预订服务器 找到loadrunner自带的机票预订测试服务器下图中点击启动 如下图所示代表启动 ...

  7. Docker进阶一:网络篇

    理解Docker0 查看本地ip ip addr [root@VM-0-6-centos ~]# ip addr #本机回环地址 1: lo: <LOOPBACK,UP,LOWER_UP> ...

  8. JavaScript数组方法大集合

    JavaScript数组方法集合 本文总结一下js数组处理用到的所有的方法.自己做个笔记. 数组方法 concat() 合并两个或多个数组 concat()能合并两个或者多个数组,不会更改当前数组,而 ...

  9. OOP 4.21晚 指针知识点

    1.读法:int* ptr ptr是一个指针指向整型变量 2.指针类型:指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型; 3.指针所指向的类型:只须把指针声明语句中的指针名字和名字左边的指 ...

  10. Python 全局变量和局部变量,global 和 nonlocal关键字

    全局变量和局部变量    全局变量:定义在函数外的变量    局部变量:定义在函数内部变量    获取变量值时候先获取当前作用域变量名称和变量值,如果没找到到上一层作用域招变量的值,在没有就报错,先获 ...