{data-type=drawio data-xml=%3CmxGraphModel%20dx=%221094%22%20dy=%22516%22%20grid=%221%22%20gridSize=%2210%22%20guides=%221%22%20tooltips=%221%22%20connect=%221%22%20arrows=%221%22%20fold=%221%22%20page=%221%22%20pageScale=%221%22%20pageWidth=%22827%22%20pageHeight=%221169%22%3E%3Croot%3E%3CmxCell%20id=%220%22/%3E%3CmxCell%20id=%221%22%20parent=%220%22/%3E%3CmxCell%20id=%222%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.25;exitY=1;entryX=0.328;entryY=0.024;entryPerimeter=0;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%227%22%20target=%2222%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%223%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0;exitY=0.25;entryX=1.034;entryY=0.973;entryPerimeter=0;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%227%22%20target=%2210%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%224%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0;exitY=0.25;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%227%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22%3E%3CmxPoint%20x=%22330%22%20y=%22233%22%20as=%22targetPoint%22/%3E%3C/mxGeometry%3E%3C/mxCell%3E%3CmxCell%20id=%225%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.75;exitY=0;entryX=0.174;entryY=1.086;entryPerimeter=0;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%227%22%20target=%2220%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%226%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.75;exitY=1;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%227%22%20target=%2221%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%227%22%20value=%22<h1>%E8%BF%9B%E7%A8%8B</h1>%22%20style=%22rounded=1;whiteSpace=wrap;html=1;shadow=1;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22330%22%20y=%22220%22%20width=%2290%22%20height=%2250%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%228%22%20value=%22%E5%B0%B1%E7%BB%AA%E7%8A%B6%E6%80%81%22%20style=%22rounded=1;whiteSpace=wrap;html=1;shadow=1;fontStyle=1;fontSize=21;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22255%22%20y=%2260%22%20width=%22120%22%20height=%2260%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%229%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.75;entryX=0.105;entryY=-0.077;entryPerimeter=0;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%2210%22%20target=%227%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2210%22%20value=%22%E5%8F%AF%E5%94%A4%E9%86%92%E7%9D%A1%E7%9C%A0%E6%80%81%22%20style=%22rounded=1;whiteSpace=wrap;html=1;shadow=1;fontSize=21;fontStyle=1;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%2270%22%20y=%22110%22%20width=%22120%22%20height=%2250%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2211%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.75;exitY=1;entryX=0;entryY=0.75;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%2212%22%20target=%227%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2212%22%20value=%22%E4%B8%8D%E5%8F%AF%E5%94%A4%E9%86%92%E7%9D%A1%E7%9C%A0%E6%80%81%22%20style=%22rounded=1;whiteSpace=wrap;html=1;shadow=1;fontSize=21;fontStyle=1;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%2260%22%20y=%22210%22%20width=%22120%22%20height=%2250%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2213%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=1;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%2210%22%20target=%2210%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2214%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.75;exitY=1;entryX=0.412;entryY=-0.031;entryPerimeter=0;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%2215%22%20target=%227%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2215%22%20value=%22%E5%B0%B1%E7%BB%AA%E7%8A%B6%E6%80%81%22%20style=%22rounded=1;whiteSpace=wrap;html=1;shadow=1;fontStyle=1;fontSize=21;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22255%22%20y=%2260%22%20width=%22120%22%20height=%2260%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2216%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0;exitY=0.5;entryX=1;entryY=0.5;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%2217%22%20target=%227%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2217%22%20value=%22%E5%83%B5%E5%B0%B8%E6%80%81%22%20style=%22rounded=1;whiteSpace=wrap;html=1;shadow=1;fontSize=21;fontStyle=1;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22590%22%20y=%22195%22%20width=%22120%22%20height=%2250%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2218%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=0.5;exitY=0;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%2220%22%20target=%2225%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2219%22%20style=%22edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;exitX=1;exitY=0.5;entryX=0;entryY=0.5;jettySize=auto;orthogonalLoop=1;fontSize=21;fillColor=#66FFFF;%22%20edge=%221%22%20parent=%221%22%20source=%2220%22%20target=%2226%22%3E%3CmxGeometry%20relative=%221%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2220%22%20value=%22%E5%B0%B1%E7%BB%AA%E8%BF%90%E8%A1%8C%E6%80%81%22%20style=%22rounded=1;whiteSpace=wrap;html=1;shadow=1;fontSize=21;fontStyle=1;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22460%22%20y=%2290%22%20width=%22120%22%20height=%2250%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2221%22%20value=%22%E8%BF%90%E8%A1%8C%E6%80%81%22%20style=%22rounded=1;whiteSpace=wrap;html=1;shadow=1;fontSize=21;fontStyle=1;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22490%22%20y=%22330%22%20width=%22120%22%20height=%2250%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2222%22%20value=%22%E5%81%9C%E6%AD%A2%E6%80%81%22%20style=%22rounded=1;whiteSpace=wrap;html=1;shadow=1;fontSize=21;fontStyle=1;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22230%22%20y=%22340%22%20width=%22120%22%20height=%2250%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2223%22%20value=%22%E4%BF%A1%E5%8F%B7%22%20style=%22text;html=1;resizable=0;points=%5B%5D;autosize=1;align=left;verticalAlign=top;spacingTop=-4;fontSize=21;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22220%22%20y=%22169%22%20width=%2260%22%20height=%2230%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2224%22%20value=%22<font%20size="1">%E6%97%A0cpu%E8%BF%90%E8%A1%8C</font>%22%20style=%22text;html=1;resizable=0;points=%5B%5D;autosize=1;align=left;verticalAlign=top;spacingTop=-4;fontSize=21;fontStyle=1;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22404%22%20y=%22154%22%20width=%2270%22%20height=%2230%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2225%22%20value=%22%E5%86%85%E6%A0%B8%E6%80%81%22%20style=%22ellipse;whiteSpace=wrap;html=1;shadow=1;fontSize=21;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22630%22%20y=%2220%22%20width=%22120%22%20height=%2240%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2226%22%20value=%22%E7%94%A8%E6%88%B7%E6%80%81%22%20style=%22ellipse;whiteSpace=wrap;html=1;shadow=1;fontSize=21;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22650%22%20y=%2295%22%20width=%22120%22%20height=%2240%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3CmxCell%20id=%2227%22%20value=%22cpu%E6%89%A7%E8%A1%8C%22%20style=%22text;html=1;resizable=0;points=%5B%5D;autosize=1;align=left;verticalAlign=top;spacingTop=-4;fontSize=21;fillColor=#66FFFF;%22%20vertex=%221%22%20parent=%221%22%3E%3CmxGeometry%20x=%22400%22%20y=%22321%22%20width=%2290%22%20height=%2230%22%20as=%22geometry%22/%3E%3C/mxCell%3E%3C/root%3E%3C/mxGraphModel%3E}
目标:了解什么是进程,进程的状态,会管理进程 。
前言 什么是程序? 什么是进程? 怎么管理进程?
一.概念
程序:用于描述进程要完成的功能,是控制进程执行的指令集
进程:进程就是一段程序的执行过程 ,展开描述进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
可以理解为程序是指令的集合 是静态概念 进程强调的是执行过程 是动态概念。
进程的特征:
- 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的
- 并发性:任何进程都可以同其他进程一起并发执行
- 独立性:进程是系统进行资源分配和调度的一个独立单位 也是一个独立运行的基本单位。
- 结构性:进程由程序、数据和进程控制块三部分组成。
- 多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果; 但是执行过程中,程序不能发生改变
linux中进程的结构 进程一般由程序、数据集合和进程控制块(PCB)三部分组成 (PCB)进程控制块是进程存在的惟一标识,系统通过PCB的存在而感知进程的存在。
二.进程的基本状态
- 创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
- 就绪状态:进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。
- 执行状态:进程处于就绪状态被调度后,进程进入执行状态 !!#00ff00 处于此状态的进程的数目小于等于处理器的数目!!
- 阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
- 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
》》》》更多状态:
- 运行态:running
- 就绪态:ready
- 睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable
- 停止态:stopped,暂停于内存,但不会被调度,除非手动启动
- 僵尸态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵尸态 的子进程 !!#00ff00 僵尸态详解!! centos7为例,正常情况下,父进程先结束,子进程也会结束 会回收子进程的硬件资源。但是如果子进程出现意外 提前关闭,父进程感知不到,会默认此子进程是正常运行, 此时即便父进程关闭 系统进行扫描所有进程 (系统扫描后会发现此子进程已经关闭) 所以不会回收硬件资源,此时的“子进程“ 也被成为僵尸进程。 可以简单理解为:父进程感知不到异常 系统扫描感知已经关闭 所以此子进程的硬件资源得不到释放 导致僵尸进程。
!!#00ff00 模拟僵尸态:!!
[root@localhost ~]# echo $BASHPID #脚本shell的进程id
9078
[root@localhost ~]# echo $PPID #shell的父进程id
5841
[root@localhost ~]# kill -19 5841 #父进程设置为停止状态。
[root@localhost ~]# ps aux |grep 5841 #使用ps aux 查看pid5841的状态。Ts 代表已经停止 此进程。
root 5841 0.0 0.1 116576 3444 pts/1 Ts 09:48 0:00 -bash
[root@localhost ~]# kill -9 9078 #通知9078子进程结束。
[root@localhost ~]# ps aux |grep 9078 #这个是前台进程 被僵尸了 可以通过其他机器连接查看ssh z+ 僵尸状态前台
root 9078 0.0 0.0 0 0 pts/1 Z+ 15:21 0:00 [bash] <defunct>
[root@localhost ~]# kill -18 5841 #恢复,结束掉主进程
[root@localhost ~]# kill -9 9078 #再次观察 是没有僵尸进程的。
-bash: kill: (9078) - 没有那个进程
并且另一个界面会提示 “已杀死”
已杀死
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
!!#00ff00 注释:ps aux !!
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 5841 0.0 0.1 116656 3508 pts/1 Ss 09:48 0:00 -bash
| 字符 | | 含义 | | ------ | ------ | ------ | | USER| root | 该进程是哪个用户产生的 | | PID | 5841 | 进程ID | | %CPU | 0.0 |进程占用 CPU 资源的百分比 | | %MEM | 0.1 | 进程占用物理内存的百分比 | | VSZ | 116666 | 占用虚拟内存的大小 KB| | RSS | 3508| 进程占用实际物理内存的大小 KB | | TTY | pts/1 | 哪个终端运行 tty1 ~ tty7 代表本地控制台终端 | | STAT |Ss | 进程状态,睡眠状态,可被唤醒 有子进程 | | START | 09:48 | 该进程的启动时间 | |TIME|0:00|进程占用 CPU 的运算时间 不是系统时间 |COMMAND|-bash| 产生此进程的命令名
!!#ffff00 注!!: TTY 其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?代表和终端无关,系统进程
STAT:-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
-R:该进程正在运行。
-S:该进程处于睡眠状态,可被唤醒。
-T:停止状态,可能是在后台暂停或进程处于除错状态。
-W:内存交互状态(从 2.6 内核开始无效)。
-X:死掉的进程(应该不会出现)。
-Z:僵尸进程。进程已经中止,但是还是占用硬件资源。
-<:高优先级(以下状态在 BSD 格式中出现)。
-N:低优先级。
-L:被锁入内存。
-s:包含子进程。
-l:多线程(小写 L)。
-+:位于后台。
三.进程的优先级
优先级:资源分配的优先级
- 静态优先级:100-139
- 进程默认启动时的nice值为0,优先级为120
- 只有根用户才能降低nice值(提高优先性)
关于优先级可以通过ps -l top 两个指令进行查看
四.进程管理命令
1.查看进程
ps
即 process state,可以查看进程当前状态的快照,静态查看,默认显示当前终端中的进程,Linux系统各进程的相关信息均保存在/proc/数字 目录/status 下的文件中
| 选项 | 效果 | | ------ | ------ | | ps a | 显示当前终端下的所有进程信息 | | ps u |用户为主的格式 输出进程信息 | |ps x | 显示当前用户在所有终端下的进程信息 | | ps -e | 显示系统内的所有进程 | | ps -l | 使用长格式显示进程信息 | | ps k--sort 属性 | 对属性进行排序 - 表示倒序 ps aux k -%cpu | | ps o 属性| 显示定制信息 pid cmd %cpu %mem等 | |ps axo psr| 可以查看cpu的编号。 !!#00ff00 详解: !!
[root@localhost ~]# tty #当前终端
/dev/pts/1
[root@localhost ~]#ps a #查看当前终端下的进程信息
PID TTY STAT TIME COMMAND
1601 tty1 Ssl+ 0:09 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/
5841 pts/1 Ss 0:00 -bash
11213 pts/1 R+ 0:00 ps a
[root@localhost ~]# ps aux #基本常用 ps aux 详细表格中已经注释。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 193700 6908 ? Ss 07:40 0:18 /usr/lib/systemd/systemd --swit
root 2 0.0 0.0 0 0 ? S 07:40 0:00 [kthreadd]
[root@localhost ~]# ps -l #长格式显示进程信息
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 5841 5837 0 80 0 - 29164 do_wai pts/1 00:00:00 bash
0 R 0 11243 5841 0 80 0 - 37235 - pts/1 00:00:00 ps
) ps -l 各字符含义 表格-other 实际优先级=PR+NI 数值越小 优先级越高 正常情况下不会修改优先级。
pstree
以树形结构列出进程信息 常用的是pstree -p 可以看到进程对应的pid号
top
动态查看进程,可以动态地持续监听进程地运行状态 并且增加了动态交互
-d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
n 次数:指定 top 命令执行的次数。一般和"-"选项合用;
p 进程PID:仅查看指定 ID 的进程;
s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;
u 用户名:只监听某个用户的进程
在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作
? 或 h:显示交互模式的帮助;
c:按照 CPU 的使用率排序,默认就是此选项;
M:按照内存的使用率排序;
N:按照 PID 排序;
T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
r:按照 PID 给某个进程重设优先级(Nice)值;
q:退出 top 命令; htop 增强版的top 这个需要下载。
pgrep
查看指定的进程
- -u 指定用户
- -l: 显示进程名
- -a: 显示完整格式的进程名
- -P pid: 显示指定进程的子进程 !!#ffff00 详解:!!
[root@localhost mnt]# pgrep -u xy #查看xy这个用户操作产生的进程
14872 #pid是14872
[root@localhost mnt]# ps aux |grep xy #通过ps 然后筛选出xy用户的操作产生的进程 查看是对应上的pid号。
root 794 0.0 0.0 201256 1264 ? Ssl 4月16 0:00 /usr/sbin/gssproxy -D
root 14871 0.0 0.1 220584 3424 pts/0 S 13:22 0:00 su xy
xy 14872 0.0 0.1 116684 3296 pts/0 S 13:22 0:00 bash
root 15018 0.0 0.0 112680 984 pts/0 S+ 13:27 0:00 grep --color=auto xy
[root@localhost mnt]# pgrep -l bash #显示进程的名字 -a就是完整的显示
11979 bash
14872 bash
14941 bash
[root@localhost mnt]# pgrep -P 1187 #显示pid是1187这个进程的子进程
11975
[root@localhost mnt]# prtstat 11975 #查看pid是11975这个进程的完整信息 Parent ID 是父级进程的PID1187。
Process: sshd State: S (sleeping)
CPU#: 0 TTY: 0:0 Threads: 1
Process, Group and Session IDs
Process ID: 11975 Parent ID: 1187
Group ID: 11975 Session ID: 11975
lsof
list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件。 lsof -p pid 列出对应pid进程 打开的所有的文件。 !!#ffff00 详解:!!
[root@localhost 33]# lsof -c bash #列出以bash这个进程打开的文件
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 11979 root cwd DIR 253,0 257 64 /
bash 11979 root rtd DIR 253,0 257 64 /
bash 11979 root txt REG 253,0 960472 6866 /usr/bin/bash
bash 11979 root mem REG 253,0 106070960 67206234 /usr/lib/locale/locale-archive
bash 11979 root mem REG 253,0 62184 33604105 /usr/lib64/libnss_files-2.17.so
bash 11979 root mem REG 253,0 2127336 33586743 /usr/lib64/libc-2.17.so
bash 11979 root mem REG 253,0 19776 33586749 /usr/lib64/libdl-2.17.so
bash 11979 root mem REG 253,0 174520 33625613 /usr/lib64/libtinfo.so.5.9
bash 11979 root mem REG 253,0 164264 33586736 /usr/lib64/ld-2.17.so
.
.
.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
COMMAND :进程名称 PID:进程标识符 USER:进程所有者 FD:文件描述符,应用程序通过文件描述符识别到该文件。如cwd、txt等 TYPE:文件类型,如DIR,REG DEVICE:指定磁盘名称 SIZE:文件大小 NODE:索引节点(文件在磁盘上的标识) NAME:打开文件的确切名称
!!#ffff00 注!!:FD列中的文件描述!!#ff0000 cwd!!值表示应用程序的当前工作目录,这是该程序启动的目录,除非它本身对这个目录进行更改。!!#ff0000 txt!!类型的是程序代码,如应用程序二进制文件本身或者共享库。其次数值表示应用程序的文件描述符,这是打开文件时一个返回的一个整数。
vmstat
查看当前系统中到底是哪个环节最占用系统资源 ,用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。
!!#ffff00 详解:!!
[root@localhost 33]# vmstat 2 6 #使用vmstat检测,每2秒刷新一次 刷新6
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 108124 212 921880 0 0 1 1 13 11 0 0 100 0 0
0 0 0 107984 212 921880 0 0 0 0 85 73 0 0 100 0 0
0 0 0 107984 212 921880 0 0 0 0 82 70 0 0 100 0 0
0 0 0 107984 212 921880 0 0 0 0 81 77 0 0 100 0 0
0 0 0 107984 212 921880 0 0 0 0 63 55 0 0 100 0 0
1 0 0 107984 212 921880 0 0 0 0 90 78 0 0 100 0 0
|字段 |含义 | |:--| |procs |进程信息字段: -r:等待运行的进程数,数量越大,系统越繁忙。 -b:不可被唤醒的进程数量,数量越大,系统越繁忙。 | |memory |内存信息字段: -swpd:虚拟内存的使用情况,单位为 KB。 -free:空闲的内存容量,单位为 KB。-buff:缓冲的内存容量,单位为 KB。-cache:缓存的内存容量,单位为 KB。 | |swap |交换分区信息字段: -si:从磁盘中交换到内存中数据的数量,单位为 KB。 -so:从内存中交换到磁盘中数据的数量,单位为 KB。这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。 | |io |磁盘读/写信息字段: -bi:从块设备中读入的数据的总量,单位是块。 -bo:写到块设备的数据的总量,单位是块。这两个数越大,代表系统的 I/O 越繁忙。 | |system |系统信息字段: -in:每秒被中断的进程次数。 -cs:每秒进行的事件切换次数。这两个数越大,代表系统与接口设备的通信越繁忙。 | |cpu |CPU信息字段: -us:非内核进程消耗 CPU 运算时间的百分比。 -sy:内核进程消耗 CPU 运算时间的百分比。 -id:空闲 CPU 的百分比。 -wa:等待 I/O 所消耗的 CPU 百分比。 -st:被虚拟机所盗用的 CPU 百分比 |
mpstat
显示CPU相关统计
[root@xyy ~]# mpstat 1 3 #1秒一次 三次 默认时间是s
free
显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存,共享内存将被忽略。
[root@localhost 33]# free -h #人性化显示系统使用内存情况
total used free shared buff/cache available
Mem: 1.8G 816M 106M 9.4M 900M 757M
Swap: 2.0G 0B 2.0G
dstat
系统资源统计 yum install dstat -y 需要安装 安装后可以显示 直接执行dstat 就可以显示 各字符的详细信息
[root@localhost /]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 100 0 0 0|9684B 5276B| 0 0 | 0 0 | 104 91
0 0 100 0 0 0| 0 0 | 120B 818B| 0 0 | 123 111
0 0 100 0 0 0| 0 0 | 120B 338B| 0 0 | 118 113
0 0 100 0 0 0| 0 0 | 60B 338B| 0 0 | 108 103
0 0 100 0 0 0| 0 0 | 60B 338B| 0 0 | 120 108
0 0 100 0 0 0| 0 0 | 60B 338B| 0 0 | 110 103
0 0 100 0 0 0| 0 0 | 60B 338B| 0 0 | 122 114
0 0 100 0 0 0| 0 0 | 60B 338B| 0 0 | 109 102
cpu使用率
usr:用户空间的程序所占百分比;
sys:系统空间程序所占百分比;
idel:空闲百分比;
wai:等待磁盘I/O所消耗的百分比;
hiq:硬中断次数
siq:软中断次数
磁盘
read:读总数
writ:写总数
网络统计
recv:网络收包总数
send:网络发包总数
内存分页统计
in: pagein(换入)
out:page out(换出)
系统信息
int:中断次数
csw:上下文切换
更多详细信息可以使用!!#ffff00 man dstat!!查看
进程之间的通讯
1.同一主机: pipe 管道,单向传输 cmd1 | cmd 2 如果想相互通信,需要建立两个管道 socket 套接字文件,双工通信 Memory-maped file 文件映射,将文件中的一段数据映射到物理内存,多个进程共享这片内存 shm shared memory 共享内存 signal 信号 Lock 对资源上锁,如果资源已被某进程锁住,则其它进程想修改甚至读取这些资源,都将被阻塞,直到锁被打开 semaphore 信号量,一种计数器 2.不同主机: socket=IP和端口号
2.进程管理
- 前台启动:通过终端启动,且启动后一直占据终端
- 后台启动:可通过终端启动,但启动后即转入后台运行(释放终端)
运行中的作业: Ctrl+z 放到后台 但是会停止作业
尚未启动的作业: COMMAND & & 将前台命令放入后台
注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的
!!#ffff00 详解:!!
调出后台任务 fg
继续任务bg
并行执行任务 &
ctrl+z 将前台运行中的进程放入后台进行挂起
[root@localhost /]# dd if=/dev/zero of=/dev/null & #将空白文件输入到黑洞文件 作为测试使用 & 将前台命令放入后台不会停止运行。
[1] 16285 # [1] 是序号
[root@localhost dev]# dd if=/dev/zero of=/dev/null # ctrl+z 将前台运行中的进程放入后台进行挂起 会进入停止状态
^Z
[2]+ 已停止 dd if=/dev/zero of=/dev/null
[root@localhost /]# bg 1 #继续运行
[1]+ dd if=/dev/zero of=/dev/null &
[root@localhost /]# jobs #查看后台任务列表
[1]+ 运行中 dd if=/dev/zero of=/dev/null &
[root@localhost dev]# fg 3 #把后台运行的进程 调回前台 并且会结束停止状态。 fg 序号。
dd if=/dev/zero of=/dev/null
记录了65272582+0 的读入
记录了65272582+0 的写出
33419561984字节(33 GB)已复制,51.2418 秒,652 MB/秒
查看后台任务列表 jobs
[root@localhost /]# jobs
[1]+ 运行中 dd if=/dev/zero of=/dev/null & # 序号 显示正在运行的进程
结束进程kill
kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
选项比较多 信号 可以使用kill -l 查看
常用:kill 3 kill 9
结束掉dd if=/dev/zero of=/dev/null 这个后台运行的进程 需要pid号 可以使用ps aux pstree -p 都可以。
[root@localhost /]# kill 9 16669 #强制结束进程
[1]+ 已终止 dd if=/dev/zero of=/dev/null
3.计划任务
1.一次性计划任务 命令at 基本不用 (可以百度了解) 2.crontab 周期性计划任务 crontab -e 进入 crontab 编辑界面 写配置文件(计划任务)
* * * * *
~
~
~
~
|项目 |含义 |范围 | |:--| |第一个"" | 分钟(minute) |0~59 | |第二个"" | 小时(hour)24小时制 |0~23 | |第三个"" | 日期(day) |1~31 | |第四个"" | 月份(month) |1~12 | |第五个"*" |周几(week) |0~7(0和7都代表星期日) | | 特殊符号 | 含义 | | *(星号) | 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。 | | ,(逗号) | 代表不连续的时间。比如"0 8,12,16命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。 | | -(中杠) | 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。 | | /(正斜线) | 代表每隔多久执行一次。比如"/10命令",代表每隔 10 分钟就执行一次命令。 |
每个月的15号执行
0 23 15 * *
查看 /etc/crontab 这个文件
[root@localhost /]# cat /etc/crontab
SHELL=/bin/bash #运行的程序
PATH=/sbin:/bin:/usr/sbin:/usr/bin #指令的绝对路径
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
周一到周五每天17点执行
0 17 ** 1-5
每周一 三 五 的八点三十
30 8 **1,3,5
!!#ffff00 注:!!周日期和月份不建议一起设置 。