进程管理-任务管理

进程管理-任务管理

进程、程序、线程的概述

# 程序	
	死的,静态状态的东西,一堆代码的集合,完成某一特定的任务或者实现某一作用。
# 进程
	程序的产物,将程序中的代码运行起来之后,就会形成进程,
	瞬间执行:执行完成后立即结束;
	不间断进行:持续不间断运行;
	进程的运行默认情况是要依赖某一终端的(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)
posted @ 2020-04-13 15:20  候你已久  阅读(239)  评论(0)    收藏  举报