Day 06 Linux的进程管理

相关定义

程序
二进制文件,静态 /usr/sbin/httpd,/usr/sbin/sshd,程序占用磁盘空间
程序的两种状态:running和dead

进程
是程序运行的过程, 动态,有生命周期的,可以产生和消亡的(进程是已启动的可执行程序的运行实例,实例即运行可执行程序),进程占用CPU和内存mem。

父进程
程序运行时产生的第一个进程,任何进程都可以作为父进程创建子进程。

子进程
由父进程使用fork()函数完全复制自己的地址空间创建出来的新的进程就是子进程,子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码.

线程
线程是进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程;一个进程至少包括一个线程,通常将该线程称为主线程;一个进程从主线程的执行开始,进而创建一个或多个附加线程,就是所谓基于多线程的多任务。

程序产生进程,进程包括多个线程

静态查看进程

ps [参数]

a 只能查看所有终端进程

u 显示进程拥有者

x 显示系统内所有进程

f  用ASCII字符显示树状结构,表达程序间的相互关系(父子进程之间的关系)

o 自定义字段显示

USER:进程的拥有者

PID:进程的ID 标识唯一一个进程  ppid:父进程ID

%CPU:CPU使用的百分比

%MEM:内存MEM使用百分比

VSZ:占用虚拟内存

RSS:占用实际内存 驻留内存

TTY:进程运行的终端

STAT:进程状态

进程的状态:

R Running,运行,正在被cpu处理的进程

S Sleeping,暂停状态

T Stopped,停止运行

Z Zombie,僵尸进程,子进程结束后没有被父进程回收

X 死掉的进程

Ss s父进程,进程的领导者

S< <优先级较高的进程

SN N优先级较低的进程

R+ +表示是前台的进程组

Sl 以线程的方式运行

START: 进程的启动时间

TIME: 进程占用CPU的总时间

COMMAND: 进程名,进程文件

按照CPU使用率从小到大排序:ps aux --sort %cpu

按照CPU使用率从大到小排序:ps aux --sort -%cpu

按照内存使用率从小到大排序:ps aux --sort %mem

按照内存使用率从大到小排序:ps aux --sort -%mem

自定义字段显示进程:ps axo 字段名称

后面接 | less 分页查看

后面接 | head/tail -n 查看前/后n行

后面接 | grep 服务名 过滤查看服务

获取进程PID的方法

法①:ps aux | grep 服务名

法②:ps axo command,pid | grep 服务名

法③:cat /run/服务名.pid

这个pid文件不一定在run目录下,也有可能会出现在run目录下的二级目录下

法④:pidof 服务名

法⑤:pgrep 服务名

lsof命令

查看正在占用该端口号的进程:lsof -i:端口号

前四列依次是:进程名,进程PID,进程拥有者,文件描述符

w命令

查看当前服务器的运行时间,在线用户数量,负载均衡和连接中的用户信息(用户名,终端编号,用户IP地址,登录时间等)

当前服务器已运行1天,有3个用户终端在线,负载均衡为:0.00,0.07,0.13(越小越好)

三个用户都是root,分别登录终端:pts/0,pts/1,pts/2,IP地址为123.127.39.50,

三个root登录时间分别为:19:12,21:31,21:00

who命令

查看当前服务器连接中的用户信息(用户名,终端编号,登录日期和时间,用户IP地址)及其数量

动态查看进程

top

第一行:当前服务器时间,服务器运行时间,当前在线用户数量,负载均衡

第二行:进程总量,运行进程数量,暂停进程数量,停止进程数量,僵尸进程数量

第三行:us 用户空间占用CPU百分比,sy 内核空间占用CPU百分比,id 空闲CPU百分比

第四行:内存总量,未用内存量,已用内存量,缓存量

内存总量(total)=未用内存量(free)+已用内存量(used)+缓存量(buff/cache)

第五行:swap分区信息

快捷键

P 将%cpu排序  

M 将%mem排序

R 反转排序

1 显示所有CPU的负载

f  自定义显示字段

htop

top命令的进阶版,需要自行安装

安装htop命令需要安装epel拓展源

使用以下命令:

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install epel-release

然后再安装htop:yum -y install htop

从上向下依次是:

左上区:CPU1,CPU2的使用情况,内存Mem使用情况,swap分区使用情况

右上区:进程情况(48个进程,74个线程,1个进程正在运行),负载均衡,服务器运行时间

中间:PID,进程拥有者(USER),进程状态(S),CPU使用率(CPU%),内存使用率(MEM%),

进程所使用的CPU时间(TIME+),进程名(COMMAND)

底部:

F1:显示帮助信息
F2:配置界面中的显示信息;
F3:进程搜索;
F4:进程过滤器;
search会将光标定位到符合条件的进程上,通过F3键进行逐个查找;而filter会直接将符合条件的进程筛选出来。
F6:排序方式;
F9:杀掉指定进程;先用F3搜索或者F4过滤找到对应的进程,再用F9发送  9 SIGKILL  信号(强制杀死)
u:显示指定用户的进程

查看服务器资源使用情况

查看系统的平均负载均衡:top/htop(动态);w(静态);uptime(静态)

查看CPU空闲率:top的id字段(动态);vmstat的id字段(静态)

查看内存的使用情况:top(动态);free -m/g/h(静态)

网络进程管理

查看网络进程:ss    netstat

安装netstat:yum -y install net-tools

[参数]

-a 所有的进程

-u udp进程

-t tcp进程

-p 显示程序的pid 和 名称

-l listening 监听的进程

-n 显示端口号

常用默认的端口号:

dhcp 68

vnc 5900

ftp 20,21

ssh 22

http 80 (apache,nginx)

https 443

mysql/mariadb 3306

php 9000

redis 6379

tomcat(8009 8080 8005)

数据传输协议:tcp(传输控制协议),udp(用户数据报协议)

使用 ss -auntpl 查看网络进程:

Netid:网络进程使用的传输协议

State:服务的当前状态

Local Address:Port:该网络进程使用的端口号

user列:服务名称,PID,fd文件描述符

使用 netstat -auntpl 查看网络进程:

Proto:网络进程使用的传输协议

Local Address:该网络进程使用的端口号

PID/Program name:PID和服务名称

State:服务的当前状态

tcp的状态:(共有11种)

CLOSED(关闭状态)。初始状态,表示TCP连接未建立
LISTEN(监听状态)。服务器等待客户端连接的状态
SYN_SENT(同步已发送状态)。客户端发送连接请求后等待服务器确认的状态。
SYN_RECEIVED(同步已接收状态)。服务器接收到客户端连接请求并发送确认后的状态。
ESTABLISHED(已建立状态)。表示TCP连接已成功建立,双方可以进行数据传输。
FIN_WAIT_1(等待对方FIN报文状态)。表示TCP连接的一方发送了关闭连接请求。
FIN_WAIT_2(等待对方关闭连接请求状态)。表示TCP连接的一方等待对方发送关闭连接请求。
TIME_WAIT(等待状态)。表示TCP连接关闭后的等待状态,用于确保数据的可靠传输。
CLOSE_WAIT(等待关闭状态)。表示TCP连接的一方接收到了对方的FIN报文,但尚未发送ACK。
LAST_ACK(最后确认状态)。表示TCP连接关闭前的最后确认状态,等待对方的FIN报文。
CLOSING(关闭状态)。表示TCP连接正在进行关闭过程
 

查看服务是否处于运行状态:

ss -auntpl (看是否有服务对应的端口号);  ps ; top;  lsof -i:服务对应的端口号

查看系统中哪些服务使用tcp/udp协议:

tcp:ss -antpl;netstat -antpl;

udp:ss -untpl;netstat -untpl

使用kill进行进程管理

kill  pkill  killall

kill -信号代码 进程PID(只适用于管理某个服务的单个进程)

pkill -进程代码 服务名称(适用于管理某个服务的多个进程)

killall -进程代码 服务名称(适用于管理某个服务的多个进程)

安装killall命令:yum -y install psmisc

如果不清楚某个命令所对应的安装包可以使用:yum provides 命令   来查看

信号代码

使用 kill -l 可以查看全部的信号代码

也可以用字母来代替信号代码

例如:kill -9 PID  等价于  kill -KILL PID

1  重新加载进程或重新加载配置文件(为了让修改后的配置文件生效)

重启进程,PID不变:kill -1 主进程的PID

重启进程,PID发生变化:systemctl restart 进程名字

9  杀死进程(Killed)

kill -9 PID

pkill/killall -9 进程名

踢掉指定终端:pkill -9 -t 终端名字

杀死指定用户的进程:pkill -9 -u 用户名

15 正常关闭(默认,不加信号代码就是15)(Terminated)

18 激活进程

kill -18 PID

进程由原来的状态变为S状态(sleeping)

19 挂起进程
kill -19 PID

进程由原来的状态变为T状态(stopped)

  • 44
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值