三、进程管理

本文详细介绍了Linux系统中的进程管理,包括进程的概念、查看与控制、状态分析、优先级调整、进程间通信、负载监控、常用命令以及跳板机的应用等内容,适合系统管理员和技术人员参考。
摘要由CSDN通过智能技术生成

三、进程管理

1 .什么是进程?

进程是已启动的可执行程序的运行实例,是程序运行的过程,动态的,有生命周期及运行状态。

程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/sbin/nginx

扩展

进程	一个正在运行的程序,主进程,子进程		
线程	一个进程由一个或者多个线程组成		
区别:
	一个进程奔溃不会影响其他的进程
	一个线程奔溃会使整个进程奔溃
	进程之间资源独立
	线程之间资源共享	
	进程启动慢,结束慢
	线程启动快,结束快

协程(异步)
	节省资源	

CPU中断

并行

并发	

2.查看进程 process

命令:

ps aux

ps -ef

top、htop

pgrep,pidof

2.1 ps aux静态查看PID

[root@linux-server ~]# ps aux | less
参数解释:
ps :process nsapashot
a 只能查看系统里面运行的所有终端进程
u 显示进程拥有者
x 显示系统内所有进程
f 显示进程之间的父子关系
[root@linux-server ~]# ps aux 
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
============================================================================
USER: 	#运行进程的用户
PID:   #进程ID
%CPU:   #CPU占用率
%MEM:   #内存占用率
VSZ	    进程占用的虚拟内存大小。
RSS     占用的物理内存大小
STAT:  #进程状态  ---了解
?    表示没有占用终端
R 	运行
S 	可中断睡眠 Sleep
D	不可中断睡眠
T 	停止的进程 
Z 	僵尸进程
X    死掉的进程
START:	#进程的启动时间
TIME:	#进程占用CPU的总时间
COMMAND: #进程文件,进程名

进程状态--了解
Sl	以线程的方式运行
Ss  s进程的领导者,父进程
R+	+表示是前台的进程组
S< <优先级较高的进程 	
SN  N优先级较低的进程

2.2 ps -ef静态查看PID

[root@linux-server ~]# ps -ef
参数解释:
-e 显示所有进程
-l 长格式显示
-f 完整格式
UID  PID PPID   C STIME TTY   TIME            CMD
root  1    0    0  09:57 ?   00:00:01 /usr/lib/systemd/systemd

UID       用户ID
PID       进程ID
PPID      父进程ID
C         CPU占用率
STIME     开始时间
TTY       开始此进程的TTY----终端设备
TIME      此进程运行的总时间
CMD       命令名

2.3 查看单个PID

pgrep #纵向

image-20240428204332493

pidof# 横向

image-20240428204418096

[root@linux-server ~]# yum install -y httpd  #安装apache软件
[root@linux-server ~]# systemctl start httpd #启动
[root@linux-server ~]# cat /var/run/httpd/httpd.pid
1043

补充:
pidof  httpd
pgrep  httpd

2.4 查看指定PID

[root@linux-server ~]# ps aux | grep sshd
root       1043  0.0  0.2 105996  4120 ?        Ss   01:32   0:00 /usr/sbin/sshd -D
grep:过滤

2.5 查看端口

三条命令:

	1 ss -nplt |  grep 22
	
	# yum -y install net-tools
	2 netstat	-nplt |  grep 22
	
	# yum -y install lsof
	3 lsof -i:80
	(lsof可以查看某一个文件被什么进程所占用)

[root@linux-server ~]# yum install lsof  #安装软件包
[root@linux-server ~]# lsof -i:80   #端口号,这能查看带端口的进程
COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
httpd   64249   root    4u  IPv6 1373628      0t0  TCP *:http (LISTEN)

#注意:端口号只有整数,范围是从0 到65535
参数解释:
FD:文件描述符,应用程序通过文件描述符识别该文件。
DEVICE:指定磁盘的名称
SIZE:文件的大小
#查网络进程和正在监听的端口
[root@linux-server ~]# netstat -lntp
参数详解:
-a  显示全部的进程
-u  显示udp
-n  以数字的形式显示协议名称
-t   tcp
-p:显示进程的名称和pid
-l :只显示正在被监听的端口

参数解释:
recv-Q:网络接收队列。表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。
send-Q:网路发送队列。对方没有收到的数据或者说没有Ack的,还是本地缓冲区.如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。
Foreign Address:与本机端口通信的外部请求
[root@linux-server ~]# w  #看已经登陆到终端的进程信息,远程登陆会有ip 地址

部分参数解释:
USER –登录用户名.
TTY –登录用户使用的终端名.
FROM –登录用户来源的主机名或IP地址.
LOGIN@ –用户登录时间.
WHAT –用户当前的进程及选项/参数。
端口:
	http			80
	https			443
	mysql			3306
	redis			6379
	tomcat			8080
	nginx|httpd		80|443
	sshd			22
	mongo			27017
	php-fpm			9000
	mail			25|465

2.6 top,htop动态查看PID

[root@linux-server ~]# top  #动态显示信息,三秒刷新一次。

image-20240428202843637

在工作中必须监控的东西 load average(平均负载)等待cpu处理的队列长度 也是个数。
1分钟   第一个数字
5分钟   第二个数字
15分钟  第三个数字
======================
计算cpu负载:load average的三个值: 0.10, 0.16, 0.12,分别除cpu的个数,得出的值,如果值大于1那么那时候的负载高。

us: 用户态进程占用cpu
ni: nice值
id: cpu空闲率
wa: cpu等待,等待输入/输出的进程占用的 CPU 百分比。如果使用率过高,表示硬盘该换了
hi:硬中断,请求插队
si:软中断
st:停止
2.3.1 top操作
[root@linux-server ~]# top
h|? 帮助
> 往下翻页
< 往上翻页
M 按内存排序
P 按cpu排序
q 退出   
z 彩色显示
W 保存
=====================================
PR   优先级
VIRT 进程使用的虚拟内存总量,单位kb。
RES  进程使用的、未被换出的物理内存大小,单位kb。
SHR  共享内存大小,单位kb
2.3.1 htop操作
htop是Linux系统中的一个互动的进程查看器,与Linux传统的top比较的话,htop更人性化并且还支持鼠标操作!

htop的优势
(1) 在htop中,可以垂直和水平滚动列表,查看所有进程和完整的命令行。
(2) 在top中,您按下的每个未分配的键都有延迟(尤其是当多键转义序列意外触发时)。
(3) htop启动得更快(top似乎在显示任何东西之前会收集一段时间的数据)。
(4) 在htop中,您不需要输入进程号来终止进程,而在top中,您需要这样做。
(5) 在htop中,您不需要输入进程编号或优先级值来重新分配进程,而在top中,您需要这样做。
(6) 在htop中,您可以同时杀死多个进程。
(7) top更老,因此更容易测试。

这里使用CentOS7.X系统版本为例,使用yum下载安装:

#安装epel源
yum install epel-release
#安装htop
yum install -y htop
#安装完毕后命令行输入
htop

image-20240428205645039

从上面的截图中可以看到,htop命令输出总共分成了五个展示区:
(1)CPU状态区域
(2)整体状态区域
(3)内存状态区域
(4)进程状态区域
(5)管理控制区域

2.7 进程优先级 nice

nice 值越高:表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。

修改进程优先级
renice -n -10  pid

3.进程控制

3.1 按pid杀死进程

kill,pkill
语法: kill 信号 PID   #信号也是进程间通信的一种方式

[root@linux-server ~]# kill -l   #查看所有信号
-1   HUP  重新加载进程或者重新加载配置文件,PID不变   
-9   KILL 强制杀死
-15  TERM 正常杀死(这个信号可以默认不写)
-18  CONT 激活进程
-19  STOP 挂起进程

3.2 案例

案例一

给vsftpd进程发送信号1,15 vsftpd信号测试

[root@linux-server ~]# yum install -y vsftpd  #安装vsftpd
[root@linux-server ~]# systemctl start vsftpd  #启动
[root@linux-server ~]# ps aux | grep vsftpd
root      59363  0.0  0.0  53212   576 ?        Ss   16:47   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

[root@linux-server ~]# kill -1 59363  #发送重启信号,例如vsftpd的配置文件发生改变,希望重新加载
[root@linux-server ~]# ps aux | grep vsftpd
root      59363  0.0  0.0  53212   748 ?        Ss   16:47   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
[root@linux-server ~]# kill 59363 #正常杀死进程,信号为-15可以默认不写。我们可以使用systemctl stop vsftpd 停止服务。
[root@linux-server ~]# ps aux | grep vsftpd
root      62493  0.0  0.0 112660   968 pts/0    S+   16:51   0:00 grep --color=auto vsftpd

进程状态解释--了解:
+:表示运行在前台的进程
S+:休眠状态
T+:暂停,挂起状态
s:父进程

案例二

给vsftpd进程发送信号-9, vsftpd信号测试

[root@linux-server ~]# systemctl start vsftpd
[root@linux-server ~]# ps aux | grep vsftpd
root      67003  0.0  0.0  53212   572 ?        Ss   16:57   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      67089  0.0  0.0 112660   972 pts/0    S+   16:57   0:00 grep --color=auto vsftpd
[root@linux-server ~]# kill -9 67003  #强制杀死,一般用于不能正常停止的情况下
[root@linux-server ~]# ps aux | grep vsftpd
root      67190  0.0  0.0 112660   972 pts/0    S+   16:57   0:00 grep --color=auto vsftpd

案例三

使用pkill 杀死vsftpd进程

[root@linux-server ~]# systemctl start vsftpd
[root@linux-server ~]# ps -aux | grep vsftpd
root      73399  0.0  0.0  53212   572 ?        Ss   17:05   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      73499  0.0  0.0 112660   968 pts/0    S+   17:05   0:00 grep --color=auto vsftpd
[root@linux-server ~]# pkill -9 vsftpd  #使用pkill可以指定进程名字
[root@linux-server ~]# ps -aux | grep vsftpd
root      73643  0.0  0.0 112660   968 pts/0    S+   17:05   0:00 grep --color=auto vsftpd

4.作业控制

作业控制之jobs:

作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程或者放到后台去运行,等一会儿再继续执行该进程。
sleep 7000 &   #&:让命令或者程序后台运行
jobs  			#查看后台的工作号
bg %2  			#让暂停的程序在后台运行,%是用来修饰job number,2就是job
fg %1  			#将后台的程序调到前台
kill -9 %2  	#通过kill杀死进程

实战案例

[root@linux-server~]# sleep 7000 &   #&:让命令或者程序后台运行
[1] 5441
[root@linux-server ~]# sleep 8000    #ctrl+z 把程序放到后台(这方法会让程序在后台暂停)
^Z
[2]+  Stopped                 sleep 8000

[root@linux-server ~]# jobs  #查看后台的工作号
[1]-  Running                 sleep 7000 &
[2]+  Stopped                 sleep 8000
[root@linux-server ~]# bg %2  #让暂停的程序在后台运行,%是用来修饰job number,2就是job number。(程序的工作号)
[2]+ sleep 8000 &
[root@linux-server ~]# jobs 
[1]-  Running                 sleep 7000 &
[2]+  Running                 sleep 8000 &

[root@linux-server ~]# fg %1  #将后台的程序调到前台
sleep 7000

[root@linux-server ~]# jobs 
[2]+  Running                 sleep 8000 &
[root@linux-server ~]# kill -9 %2  #通过kill杀死进程
[root@linux-server ~]# jobs 
[2]+  Killed                  sleep 8000
[root@linux-server ~]# jobs #在次查看没有了

5.常用命令

5.1 查看当前CPU负载uptime

[root@linux-server ~]# uptime 
 17:35:01 up 16:02,  3 users,  load average: 0.00, 0.02, 0.05

5.2 查看内存使用free -m

[root@linux-server ~]# free -m 
              total        used        free      shared  buff/cache   available
Mem:           1984         154        1508           8         321        1632
Swap:          2047           0        2047

-m:单位M

5.3 linux启动过程***

1加电,2加载bios设置,3加载grub,4加载内核系统到内存当中,
5加载配置文件,6加载内核模块,7完成相应的初始化工作和启动相应的服务,
8启动系统进程,9出现登录界面,10开机启动完成

5.4 查看系统的版本和内核uname

[root@linux-server ~]# cat /etc/redhat-release  #查看版本
CentOS Linux release 7.4.1708 (Core)
[root@linux-server ~]# uname -a #看查正在运行的内核版本
Linux linux-server 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@linux-server ~]# uname -r  #查看内核版本
3.10.0-693.el7.x86_64

5.5 修改主机名

[root@linux-server ~]# hostnamectl set-hostname  xxxx   #主机名,修改完之后断开与终端连接,然后在重新连接即可。
查看主机名
[root@linux-server ~]# hostname

5.6 跳板机(堡垒机)的作用

1 身份验证
2 屏幕录制,防止员工对服务器做有害的操作
3 批量操作 一次性操作2-200台机器

5.7 安装过操作系统吗?怎么安装?***

1.小批量设备,使用U盘安装
(调整bios参数从U盘启动)
2.大批量设备搭建PXE装机系统,从网络批量安装
(调整网络启动项,从网络启动)

上传下载

# yum install -y lrzsz
上传
# rz
下载
# sz 文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值