6.进程管理

进程管理

成功的路上并不拥挤,因为坚持的人不多

1.1. 什么是进程?

进程是已启动的可执行程序的运行实例,是程序运行的过程, 动态的,有生命周期及运行状态。
程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/local/nginx/sbin/nginx

1.2 .查看进程 process

静态查看进程

[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优先级较低的进程


#   僵尸进程表示进程已经退出,但它的父进程还没有回收子进程占用的资源。短暂的僵尸状态通常不必理会,但进程长时间处于僵尸状态,就应该注意了,可能有应用程序没有正常处理子进程的退出。


#   S 	可中断睡眠 Sleep----类似于挂起,等待接收socket链接或者是一些信号从而重新被唤起
#   D	不可中断睡眠 --不可中断状态,表示进程正在跟硬件交互,为了保护进程数据和硬件的一致性,系统不允许其他进程或中断打断这个进程。 进程长时间处于不可中断状态,通常表示系统有 I/O 性能问题。


查看进程(二)

[root@linux-server ~]# ps -ef
参数解释:
-e 显示所有进程
-l 长格式显示
-f 完整格式

image-20230522161348326

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

查看单个PID

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

查看指定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:过滤

查看端口

[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)
#查网络进程和正在监听的端口
[root@linux-server ~]# netstat -lntp    (该命令对应的包名:net-tools)
参数详解:
-a  显示全部的进程
-u  显示udp
-n  以数字的新式显示协议名称
-t   tcp
-p:显示进程的名称和pid
-l :只显示正在被监听的端口

动态查看进程

top、htop

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

image-20230522161400186

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

top操作

[root@linux-server ~]# top
h|? 帮助
> 往下翻页,.<>
< 往上翻页
M 按内存排序
P 按cpu排序
q 退出
z 彩色显示
W 保存
=============================
PR   优先级
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES  进程使用的、未被换出的物理内存大小,单位kb。
SHR  共享内存大小,单位kb

image-20230522161412153

ni :nice值
id: cpu空闲率
wa:cpu等待,等待输入/输出的进程占用的 CPU 百分比。如果使用率过高,表示硬盘该换了
进程优先级 nice
nice 值越高:更不容易分配到cpu。。。表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低:更容易分配到cpu。。表示优先级越高,例如-20,该进程更不倾向于让出CPU。

进程控制

按pid杀死进程

kill,pkill
用法:
kill  信号参数  PID   #kill -9 12345
pkill  信号参数  进程名称  #pkill -9  nginx

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

案例一

给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

 

案例二

给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

作业控制

作业控制之jobs:

作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程或者放到后台去运行,等一会儿再继续执行该进程。

实战案例

[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 #在次查看没有了


nohup  命令   &
把命令输出结果放入当前目录下nohup文件内,并把命令放入后台运行

常用命令

1.查看当前CPU负载-------uptime

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

2.查看内存使用

[root@yangge ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        340M        1.4G        9.4M         75M        1.3G
Swap:          2.0G        1.0M        2.0G

-h:单位G

# echo 3 > /proc/sys/vm/drop_caches           //临时清理内存

2.查看磁盘使用

[root@yangge ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.7M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  2.1G   15G   13% /
/dev/sda1               xfs      1014M  138M  877M   14% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0

3.查看系统的版本和内核

[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

4.修改主机名

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

5、上传下载

# yum install -y lrzsz
上传
# rz
下载
# sz 文件



查看进程
静态查看
ps -ef
ps aux
ps -ef |grep 进程名(进程ID)
`cat /var/run/nginx.pid`    #优先执行`xxx`里面的内容
#查看系统运行时间和平均负载:uptime

动态查看
top
htop----epel-release


管理进程
kill -9 进程PID
pkill -9  进程名称\----ps -ef | grep 进程名

yum -y install epel-release    #拓展源
yum -y install htop    #htop

作业

1.需要修改/etc/passwd文件属性。要求只可以追加,不允许修改。
chattr +a /etc/passwd
2./tmp/im 为新员工手册,要求修改文件属性,不可以修改文件内容,只可以查看文件内容
chattr +i /tmp/im
3.chattr命令中a和i属性的区别
a:只允许对文件内容进行追加,不能删除或覆盖文件
i:只允许查看,不能对文件有任何修改
4.静态查看进程有用什么命令?你知道的有几种?
ps aux
pa -ef
5.修改主机名为testpm-server
hostnamectl set-hostname testpm-sertver
6.如何查看服务的端口?
lsof -i:`cat /var/run/某服务`
netstat -lntp |grep 某服务
7.如何查看nginx的进程是否运行?
ps -ef | grep nginx
8.如何查看你的操作系统的版本以及内核?

9.什么是进程?
进程就是正在运行中的程序,一个程序运作时便是进程。
10.使用那个命令可以查看正在运行的httpd服务的PID号?
cat /var/run/httpd/httpd.pid
11.放在后台运行的程序通过什么命令可以查看到?
ps aux
12.将nginx进程PID号为1142强制杀掉用什么命令?
kill -9 1142
13.请列出查看cpu负载的命令你知道的?
top     htop
14.load average: 0.40,0.21,0.12 分别代表什么意思?
平均负载,一分钟内平均负载,5分钟内平均负载,15分钟内平均负载
15.了解cpu使用率和平均负载

作业:
1.静态查看进程命令有哪些

作业:
1.静态查看进程命令有哪些

ps aux或者ps -ef

2.解释如下内容:并尝试实现如下内容。

image-20230607193125625

3.load average: 0.40,0.21,0.12 分别代表什么意思?

4.查看redis服务是否运行

5.查看是否有服务占用80端口

6.进程是什么

7.查看跟/var/log/nginx/error.log相关的进程

lsof /var/log/nginx/error.log

8.解释平均负载和cpu使用率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值