进程管理
进程概念:进程是操作系统中非常重要的一个概念,进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程。
子进程与父进程:一个进程产生另外一个进程,产生的进程称为子进程,生成另外一个进程的进程称为父进程。
上图描述:父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性之需。PID
和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代。
进程状态:进程状态总体来看主要包括三种,分别是就绪状态、运行状态、等待状态,就绪状态指的是进程除了CPU资源,其他运行资源都已获得,当就就绪状态的进程得到CPU资源时,则进入进程进入运行状态,运行状态的进程在时间片用完后会重新转换成就绪状态,如果在运行时进程遇到IO等阻塞操作,则进程会进入等待状态,等待状态的进程当阻塞操作完成后,进程将进入就绪状态。
进程管理常用操作:
PS命令:
ps 命令常用选项包括:
a显示所有用户的进程
u显示用户名和启动时间
x显示所有进程,包括没有控制终端的进程
e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略
显示进程详细信息,按长格式显示
. 常用组合:
ps -au 显示所有用户进程,并给出用户名和启动时间等详细信息
ps -aux 显示所有用户进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息。
ps -el 按长格式显示进程详细信息。
ps aux --sort %cpu |head -5 从大到小
ps aux --sort -%cpu |head -5 从小到大
ps aux --sort %cpu| head -5|awk '{printf "%-30s %-10s\n", $11,$1,$3}'
根据需要自定义显示字段
ps axo user,pid,ppid,%mem,command
ps axo user,pid,ppid,%mem,command |grep httpd
以上命令执行结果中可能出现的一个字段含义:
USER: 进程所有者
PID: 进程号
PPID: 进程的父进程ID
%CPU: CPU占用率
C: 进程的CPU占用率
%MEM: 内存占用率
VSZ: 表示如果一个程序完全驻留在内存的话需要占用多少内存空间;
RSS: 指明了当前实际占用了多少内存;
TTY: 终端的次要装置号码 (minor device number of tty)
F:进程的标志
S:进程的状态
STAT: 该进程程的状态,有以下值
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的进程
N: 低优先序的进程
L: 有记忆体分页分配并锁在记忆体内
PRI:进程的优先权
NI:进程的Nice值
ADDR:进程的地址空间
SZ:进程占用内存的大小
WCHAN:进程当前是否在运行
TTY:进程所属终端
START: 进程开始时间
TIME: 执行的运行时间
COMMAND:所执行的指令
CMD:进程的命令
进程切换
前台进程指的是进程在执行时会将命令行阻塞,直到进程执行完毕;后台进程指的是进程在执行时不会阻塞当前命令行,而是在系统后台执行
ctrl + c 终止进程
ctrl + z 挂起进程
fg命令将进程转换到前台执行
bg命令将进程转换到后台执行
jobs命令查看任务
top
Top 命令可以定期显示所有正在运行和实际运行并且更新到列表中,它显示出 CPU
的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令。它也会显示内存和 CPU 使用率过高的正在运行的进程。
默认3s刷新一次,按d / s修改刷新时间
w:保存配置
空格 :立即刷新。
q退出
M:按内存排序
u/U:指定显示的用户
P:按CPU排序
h:帮助
top -d 1 -u miao —> 查看指定用户的进程
top -d 1 -p 2267 —> 查看指定的进程
pgrep管理工具
作用:查找服务进程号
pgrep sshd
语法格式 pgrep 【 -l 】 [服务名称]
pgrep -l sshd --->加l(字母)会显示服务名称
pstree
将进程间的关系以树结构的形式展示,能清楚看各进程之间的父子关系
pstree :以树状形式显示进程。
pstree -p
jps
jps命令是JDK提供的一个检查系统是否启动了JVM进程的一个进程。不是linux系统自带的。主要任务就是用来检查java进程的。
/proc是内存中有关系统进程的信息
/sys是有关系统内核以及驱动的信息
查看当前CPU信息:cat /proc/cpuinfo|more
查看当前内存的信息:cat /proc/meminfo|more
查看是否支持虚拟化:grep ‘ls|vmx|svm’ /proc/cpuinfo
VMX 支持虚拟化 INTEL
SVM ----------------- AMD
LM (64位)
后台进程与前台进程
Linux后台进程: 也叫守护进程(Daemon),是运行在后台的一种特殊进程。
守护的意思就是不受终端控制;Linux的大多数服务器就是用守护进程实现的。 比如,Web服务器httpd等。
后台进程没有控制终端,它不需要终端的交互
Linux前台进程: 是在终端中运行的命令,那么该终端就为进程的控制终端,一旦这个终端关闭,这这个进程也随着消失。
进程的前台与后台运行
系统任务相关的几个命令:fg、bg、jobs、(nohup)&、ctrl+z & 用在一个命令的最后,可以把这个命令放到后台执行. ctrl。
** & 用在一个命令的最后,可以把这个命令放到后台执行.
ctrl + z 将一个正在前台执行的命令放到后台,并且暂停.
jobs 查看当前有多少在后台运行的进程.它是一个作业控制命令
fg(foreground process) 将后台中的命令调至前台继续运行, 如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid) 。
bg (background process) 将一个在后台暂停的命令,变成继续执行; 如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)**。
kill进程
kill 控制(关闭)进程
kill用法
关闭进程:kill [进程号]
通过信号的方式来控制进程
kill –l --->列出所有支持的信号
kill -9 服务进程号
kill和killall终止进程
查看进程的pid
使用killall命令
pkill -t pts/1 给终端/pts/1上所有进程发送信号
pkill -9 -t pts/1
pkill -u miao
killall httpd
进程的优先级管理
进程的优先级的定义 1000 1500 一个进程正好有40种不同级别的NICE值,值越高,优先级越低。
优先级取值范围为(-20,19),越小优先级越高, 默认优先级是0。
系统允许ROOT用户设置负nice级别以及降低现有进程的nice级别;对普通非特权用户仅允许设置正的nice级别,此外,他们只能对现有进程提升nice级别。而不能降低nice级别。
注意:在linux中除了nice级别以外,有很多方法可以影响到进程优先级和资源使用情况,比如备用的调度程序策略和设置、控制组等,但是nice级别是里面最易于使用的一种方法,而且它不仅系统管理员可以使用,普通用户也可以使用。
命令1:nice
作用:指定程序的运行优先级
格式:nice -n command
命令2:renice
作用:改变程序的运行优先级
格式:renice -n pid
指定一个文件的优先级
nice -n 5 vi a.txt
通过ps查看这个文件的PID号
ps -aux | grep vi
通过top命令查看优先级
top -p 3780
改变正在运行的进程的优先级
renice -10 3780