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. linux切换shell

    1. $SHELL这一环境变量用于保存当前用户使用的shell,所以我们可以输出$SHELL来查看当前使用的shell是什么: 2. 查看/etc/shells文件,可以看到当前系统中安装的有效的sh ...

  2. 记一次排查CPU高的问题

    背景 将log4j.xml的日志级别从error调整为info后,进行压测发现CPU占用很高达到了90%多(之前也就是50%,60%的样子). 问题排查 排查思路:  看进程中的线程到底执行的是什么, ...

  3. php linux yaml 的安装和使用

    安装: 1 下载yaml包 wget http://pyyaml.org/download/libyaml/yaml-0.2.2.tar.gz tar -zxvf yaml-0.2.2.tar.gz ...

  4. 字符编码之间的转换 utf-8 , gbk等,(解决中文字符串乱码)

    目录 1.背景. 2.编码的理解 3.编码之间的相互转化 4. str类型说明 5. 可以使用的编码类型 6.参考文章 1.背景 Python中与其他程序进行交互时,如果存在字符串交互,特别是字符串中 ...

  5. ELK集群之kibana(4)

    kibane安装及基础使用 Kibana的安装 Kibana包含前端展示.es操作简化 yum localinstall kibana-7.6.2-x86_64.rpm -y Kibana配置修改ki ...

  6. [源码解析] PyTorch 分布式(2) ----- DataParallel(上)

    [源码解析] PyTorch 分布式(2) ----- DataParallel(上) 目录 [源码解析] PyTorch 分布式(2) ----- DataParallel(上) 0x00 摘要 0 ...

  7. c++学习笔记(五)

    数组作为函数参数 定义 数组可以作为函数的参数使用,进行数据传送. 数组用作函数参数有两种形式,一种是把数组元素(下标变量)作为实参使用:另一种是把数组名作为函数的形参和实参使用. 1.数组元素作为函 ...

  8. python实现图像梯度

    一,定义与作用 图像梯度作用:获取图像边缘信息 二,Sobel 算子与函数的使用 (1)Sobel 算子------来计算变化率 (2)Sobel函数的使用 (3-1)代码实现(分别): (3-2)代 ...

  9. jdbc pool java连接池技术

    1 ConnectPool .java: 2 3 package pool; 4 5 /** 6 * Title: ConnectPool.Java 7 * Description: 连接池治理器 8 ...

  10. [atAGC027D]Modulo Matrix

    对网格图黑白染色,在黑色格中填不同的质数,白色格中填相邻黑色格的lcm+1,但这样会超过1e15的上限将网格图划分为两类对角线,每一条对角线选一个质数,然后每一个点就是两条对角线的质数相乘,而白格的值 ...