进程管理-任务管理
进程管理-任务管理
进程、程序、线程的概述
# 程序
死的,静态状态的东西,一堆代码的集合,完成某一特定的任务或者实现某一作用。
# 进程
程序的产物,将程序中的代码运行起来之后,就会形成进程,
瞬间执行:执行完成后立即结束;
不间断进行:持续不间断运行;
进程的运行默认情况是要依赖某一终端的(bash),关闭终端时,一部分本终端的进程会受到影响
还有一部分进程可以脱离终端运行,代表该类进程在后台运行{命令 &;交互式命令无法用}
# 线程
线程可以理解为是次一级进程,进程的最小单位,进程当中某一个具体的运行实体
用户通过浏览器访问httpd服务器时:
浏览器 --> 服务器httpd(工作进程) --> 产生一个具体的接待的线程来处理请求
进程的优先级:
# 启动优先级(系统预设了安装程序的启动顺序)
# 资源调配优先级
进程管理的目的:
判断服务器的运行的状态,是否健康;资源的利用率是否符合对应的范围{系统资源的使用}
判断进程的状态,判断进程是否正在运行(是否运行)
判断进程是否合法,不该运行的进程需要及时关闭,并找到进程启动源头
常用命令
nohup 命令 &
将命令放入后台运行,并将命令的执行过程和结果保存在当前目录下的nohup.out文件
登录窗口:w
本地登录:ttyN
tty1-tty6:字符界面 tty7:桌面版
远程登录:pts/N
命令:pstree
# 显示Linux中的进程树状结构图
$ pstree
$ yum -y install psmisc
$ pstree -c #取消进程树的折叠
$ pstree -p #显示所有进程的进程号(取消了折叠)
$ pstree | grep httpd
$ pstree -u #列出当前进程的运行用户(运行者)
命令:ps
# 查看Linux中所有进程的详细信息的
选项组合一:aux(-aux)
a:列出所有终端{tty、pts/N、?}都被列出
u:面向用户输出,打印到命令终端上
x:列出进程运行时正在使用的用户信息(以谁的身份在运行)EUID
ps aux 命令的结果分析:
USER:该进程对应的用户
PID:该进程的PID号
%CPU:该进程占用CPU的百分比(资源)
进程的CPU占用时间除以进程的运行总时间
%MEM:该进程占用内存的百分比(资源)
VSZ:虚拟内存大小,单位kb
RSS:物理内存,常驻内存,kb
TTY:当前进程所在的终端{tty、pts/N}
STAT:进程状态
R:运行时
S:睡眠状态(可以被中断)
D:不可中断睡眠(等待状态的进程);一般针对网络或磁盘等传输类型的进程
T:停止状态的(结束掉的);一般见不到,因为结束后立马消失
Z:僵尸进程(僵死状态),父进程被意外结束,仅留下子进程{被系统回收}
+:指的是在前台运行的进程
l:多线程进程
N:优先级较低的进程
<:优先级较高的进程
s:该进程下有子进程(该进程为父进程)
START:进程的开始运行时间
TIME:该进程占用的CPU时长(运行时长)
格式:分钟数:秒数 分钟数不按照0-59计算进位,而是一直累加
COMMAND:当前进程所执行的命令
问题:过滤出ps aux命令中,每一种状态的进程数量
选项组合二:-ef
-e:列出所有进程;等同于-a
-f:显示进程的长格式信息(详细信息)
PID:该进程的PID号(你叫啥)
PPID:该进程父进程的进程号(你爹叫啥)
C:等同于%CPU,cpu的使用时间
STIME:等同于START,进程的启动时间
TIME:运行时长
CMD:进程的命令
选项组合三:-eFH
可以显示进程的关系树状结构
命令:top 动态方式查看进程信息
通过周期性刷新的方式,显示Linux资源利用情况和进程的运行情况
默认刷新周期:3s
第一行:当前时间;系统持续运行时间(up);登录用户数量;系统平均负载{1,5,15}
当前负载的负载情况,一般参照CPU的核心数来判断
一般数值不超过核心数即为正常负载,超过则为高负载
第二行:进程数量的统计{总数、正在运行、正在睡眠、停止状态、僵死状态}
第三行:CPU的使用情况:
us:用户执行的进程所占用的CPU资源的百分比(用户占用)
sy: 内核本身运行时所占用的CPU的资源百分比(系统占用)
ni:修改过进程优先级的进程,所占用的cpu资源百分比{us的占比包含ni占比}
id:cpu处于空闲状态的百分比
第四行:物理内存使用情况
total:总内存量
free:完全空闲的内存(所有空闲的内存)
used:真正被利用和使用了的内存
空闲的 和 真正空闲的空间大小不一致正常的
空闲:公共空间的空限量
真正空闲:公共空间的空限量+私有空间的空限量
buff/cache
被使用的内存当中(不是used)
有一部分内存作为了缓存(缓冲区),我们将这一部分理解可回收利用的内存空间
total=free+used+buff/cache
第五行:虚拟内存使用情况
total:总内存量
free:完全空闲的内存(所有空闲的内存)
used:真正被利用和使用了的内存
avail MEM :当启动进程时,若不适用swap空间,真实物理内存的可用空间
PR:进程的优先级,显示的为进程优先级的最终值
PRI(最终值)=PRI(初始值)+NI
PRI(初始值) 20 {初始值大小是不能被更改}
NI:通过NI值来影响PRI值
范围:-20 --- 19
命令:nice
超级管理员:可以调整为-20 -- 19 之间的任意大小
普通管理员:只能使用0 - 19大小,普通用户只能在进程优先级的基础上,降低进程优先级
nice
renice -n -5 进程号
PR的值越小,进程的优先级越高,表示该进程运行时,所占用CPU运行资源时,越优先。
htop命令
网络yum源搭建:
基础源base+扩展源epel
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum clean all #清楚所有yum缓存
yum makecache #重新建立新的yum缓存
注意:有些命令会由于窗口太小而报错不显示~
pgrep
pgrep 进程名 #列出该进程名对应的进程号(可能不止一个)
pgrep -a 进程名 #在基础上,显示进程正在执行的命令
ps $(pgrep httpd) # 查询某进程的信息
PID TTY STAT TIME COMMAND
18947 ? Ss 0:00 /usr/sbin/httpd -DFOREGROUND
18948 ? S 0:00 /usr/sbin/httpd -DFOREGROUND
18949 ? S 0:00 /usr/sbin/httpd -DFOREGROUND
18950 ? S 0:00 /usr/sbin/httpd -DFOREGROUND
18951 ? S 0:00 /usr/sbin/httpd -DFOREGROUND
18952 ? S 0:00 /usr/sbin/httpd -DFOREGROUND
进程结束的命令
kill
通过向指定进程发送某一信号的方式,决定进程号要怎么处理;不是进程名
信号:
SIGHUP(1):在该进程不停止的情况下,重新加载该进程所使用的配置文件(同reload)
SIGINT(2):强制终止当前进程,等同于ctrl + c
SIGKILL(9):强制杀死指定进程(强制终止)
SIGTERM(15):终止进程的运行,正常终止(同stop),也是kill命令的默认信号
SIGCONT(18):让停止的进程继续运行
SIGSTOP(19):将指定进程停止,类似于使用ctrl + z 将某命令放入后台
kill -s 信号 进程号
kill -s 9 19024
killall
同样能使用kill的信号
killall -s 信号 进程名 #非进程号
yum -y install psmisc #安装killall
区别对待于
killall5
pkill
使用同款信号
操作对象是连接Linux的终端进程
格式:pkill -t 终端号{tty、pts/N}
强制杀死某登陆终端:
pkill -9 -t tty/pts
注意:pkill中-s选项有其他功能,不用于kill 的 -s 选项;所以只能使用 -9 格式表示信号
uptime
当前时间;系统持续运行时间(up);登录用户数量;系统平均负载{1,5,15}
当前负载的负载情况,一般参照CPU的核心数来判断
一般数值不超过核心数即为正常负载,超过则为高负载
vmstat
进程:
r:可运行的进程数,等待运行的进程数
b:处于不可中断状态的进程数
内存:
swap:虚拟内存使用量
free:处于空闲状态的内存(物理内存)
buff:作为缓冲区的内存空间
cache:作为缓存的内存空间
swap:
si:从磁盘写入交换内存的效率
so:从交换内存写入硬盘的效率
IO:INPUT&OUTPU
参照对象是操作系统
bi:从块设备写入系统
bo:从系统写入block块
system:
in:每秒中断次数(处理程序时间隔频率)
cs:每秒发生的上下文切换次数(每秒钟同时打开的文件最大数)
cpu:
us:用户执行的进程所占用的CPU资源的百分比(用户占用)
sy: 内核本身运行时所占用的CPU的资源百分比(系统占用)
id:cpu处于空闲状态的百分比
wa:cpu处于IO等待状态时间
st:stolen被偷走的时间(虚拟机)资源自动调配
iostat :
传输相关进程的信息
块设备和字符设备传输效率的查看命令
glances
实时统计观察Linux各项资源的使用情况
方法一:
配置好基础&扩展源
yum -y install glances
方法二:
配置好基础&扩展源
yum -y install python python-pip python-devel gcc
pip install glances
Linux:
红帽系列:rpm yum
ubuntu:apt
python系列:pip
pip安装软件的过程是安装的源码包版本,所以需要gcc进行编译
若再次报错,可能需要更新软件版本:
pip install --upgrade python-pip
free
功能等同于 top中的第四第五行~
-h 用合适的单位显示空间大小
进程管理命令
Linux的工作号:
放在后台运行的的进程才有工作号
在后台运行的进程还必须依托于某一终端才行
在本终端放入后台的进程,只有本终端才能看到工作号,其他终端看不到
区别:
进程号可以跨终端管理:ps kill
工作号不可以跨终端,只能本终端管理:jobs
查看工作号:jobs
# 列出当前终端的所有工作号等详细信息
如何将进程放入后台:
1. 命令 & #将进程放入后台持续运行(放入后台的不能是交互命令)
2. ctrl + z #将正在运行的进程放入后台,会暂停进程的运行
kill -18 PID #恢复某进程的运行状态
使用工作号管理命令恢复工作号的状态:
fg: 将后台暂停了的进程恢复到前台继续运行
bg: 将后台暂停了的进程恢复到后台运行
格式:bg %工作号
+-:代表最近两次修了状态的工作号
uname -a
列出当前系统的内核类型和内核版本
记录当前操作系统发行版本
/etc/redhat-release
/etc/centos-release
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
at 命令 #单次计划任务、crontab循环计划任务
服务名称atd
systemctl status atd
systemctl enable atd
格式:
at [时间] #创建单次计划任务,ctrl+d保存
[HH:MM] [yyyy-mm-dd] #去掉中括号
now+2m #从现在计时,倒计时2分钟后开始执行
now+2h #2小时之后执行
atq #查看所有的单次计划任务(并显示每一个的任务号)
at -c 任务号 #查看具体某一任务号中的计划
atrm 任务号 #删除掉指定任务号的计划任务
进程号(PID)、工作号(jobs)、任务号(atq)
注:本文为博主查阅多方资料整理而成,如有侵权请留言联系博主删除。
学习新东西,不要忘记复习旧知识,这样你才能更好!