相关定义
程序
二进制文件,静态 /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)