Linux-->进程管理
基本介绍
-
在Linux中,每个执行程序都称为一个进程。每一个进程都会分配一个ID号(pid,进程号)
-
每个进程都可能以俩种方式存在的。分别是前台与后台,所谓前台进程就是用户目前可以在屏幕上操作的。后台进程
就是实际在操作但是屏幕是看不到的。
-
一般系统的服务都是以后台进程的方式存在,且常驻在系统中直到关机结束。
程序一旦运行并加载到内存就会产生进程
显示系统执行的进程
- 基本介绍
ps命令查看目前系统中,有哪些正在执行,以及他们的执行状况。可以不加任何参数
ps -a 显示当前终端所有进程信息
ps -u 以用户的格式显示进程信息
ps -x 显示后台进程运行的参数
一般来说用法为:
ps -aux | more 来查看进程信息
ps -aux | grep xxx 查看有没有sshd服务
ps内的信息解释
信息 | 描述 |
---|---|
USER | 进程执行用户 |
PID | 进程号 |
%CPU | 当前进程占用cpu百分比(单位kb) |
%MEM | 占用物理内存的百分比(单位kb) |
VSZ | 占用虚拟内存的百分比 |
TTY | 终端名称,缩写 |
STAT | 当前运行状态 |
START | 代表进程开始执行的时间点 |
TIME | 表示这个进程占用cpu时间 |
command | 表示启动进程所使用的命令和参数,过长会被截断 |
关于STAT:
- S表示睡眠
- s表示该进程是会话的先导进程
- N表示进程有比普通优先级更低的优先级
- R表示正在运行
- D表示短期等待
- Z表示僵死进程(程序已经关闭但是内存未释放,需要定时清除)
- T表示被跟踪或者被停止
父子进程
在Linux中进程可以生成多个子进程,这个进程就叫父进程。
ps -ef 以全格式显示当前所有的进程。
-e 显示所有进程
-f 全格式
以全格式方式查看sshd的进程信息
ps -ef | grep sshd
查看ps -ef的全格式信息
ps -ef | more
ps -ef中信息详解
信息 | 描述 |
---|---|
UID | 用户ID |
PID | 进程ID |
FPID | 父进程ID |
C | CPU用于计算执行优先级的因子,数值越大,表明进程是CPU密集型运算,执行优先级会降低。越小表面进程是I/O密集型运算,执行优先级越高 |
STIME | 进程启动的时间 |
TTY | 完整的终端名 |
TIME | CPU时间 |
CMD | 启动进程所用的命令和参数 |
终止进程kill和killall
- 介绍:
如果某个进程执行一半需要停止。使用kill命令完成。
- 基本语法:
通过进程号杀死进程
kill 选项 进程号
通过进程名杀死进程
killall 进程名
killall支持通配符,在系统因负载过大变得很慢时很有用。
kill常用选项
表示强迫进程立刻停止。
kill -9 进程号
案例:
- 踢掉某个非法用户
ps -aux | grep sshd 查看非法用户登录的进程号
kill 对应的进程号
- 终止远程登录服务sshd,在适当的时候重启sshd服务。
ps -aux | grep 查看sshd中 /user/sbin/sshd -D的进程号
kill sshd对应的进程号
/bin/systemctl start sshd.service 重启sshd服务
重启后进程号会发送变化
终止sshd服务后无法远程登录!
- 终止多个gedit
killall gedit
gedit进程代表的是,打开文本编辑器产生的进程,关闭后就相当于强制退出了文本编辑
killall会杀死父进程+子进程
- 杀死终端
ps -aux | grep bash 查看终端进程号
kill -9 终端对应的进程号
终端就是相当于cmd命令框
系统会对杀死终端操作认为是误操作,会无视,需要-9才能强制终止
pstree指令
查看进程树,更直观的查看进程的信息。
- 基本语法
pstree 选项
- 常用选项
-p 显示进程的PID
-u 显示进程的所属用户
服务管理
-
介绍
服务管理本质就是进程,但是运行在后台的,通常会监听某个端口,等待其他程序的请求,比如(mysqld,sshd,防火墙等)
故我们又称为守护进程。
service管理指令
service 服务名 [start|stop|restart|reload|status]
status是查看状态
在CentOS7.0后很多服务不再使用service而是systemctl了
还继续使用service管理的指令可在 /etc/init.d 目录中中查看
-
查看服务名
setup
其中[*]代表会随着系统自启
按q进去确定与取消选项处
服务的运行级别(runlevel)
-
Linux系统有7中运行级别(runlevel)常用的是3和5
运行级别 说明 0 系统停机状态,默认运行级别不能设置为0,否则无法正常启动。 1 单用户工作状态,root权限,用于系统维护,禁止远程登录。 2 多用户状态(无NFS),不支持网络。 3 完全多用户状态,支持网络,登录后进入命令行模式。 4 系统未使用,保留。 5 X11控制台,登录后进入GUI模式 6 系统正常关闭并重启,默认不能设置为6,否则无法正常启动。 -
开机流程
开机—>BIOS–>/boot—>systemd进程1–>运行级别—>运行级别对应的服务
运行级别的指令
在/etc/inittab下可以设置运行级别,或者使用指令设置运行级别。
查看当前运行级别
systemctl get-default
设置运行级别
systemctl set-default 运行级别.target
multi-user.target 是level 3
graphical.target是
chkconfig指令
- 介绍:
- 通过chkconfig 命令可以给服务器的各个运行级别设置 自动启动/关闭。
- chkconfig 指令管理的服务在 /etc/init.d 查看
- 在Centos7.0之后,多数服务使用systemctl管理了
- chkconfig基本语法
查看全部服务在每个运行级别下的状态
chkconfig --list
查看具体服务在哪些运行级别是打开的哪些是关闭的
chkconfig 服务名 --list
设置服务在0~5的运行级别的状态是打开还是关闭
chkconfig --level n 服务名 on/off
每一个服务都有0~5六个运行级别,打开了对应的运行级别之后,他就会在对应的运行级别自启动并生效。
chkconfig设置后需要重启才能生效。
服务管理(2)
systemctl管理指令
基本语法(临时生效,重启就恢复)
systemctl [start | stop | restart | status ] 服务名
systemctl指令管理的服务在 /usr/lib/systemd/system中查看
systemctl设置服务的自启动状态
- 查看服务的开机启动状态(可以用grep过滤)
systemctl list-unit-files [| grep 服务名]
- 设置服务开机启动(永久生效)
systemctl enable 服务名
- 关闭服务开机启动(永久生效)
systemctl disable 服务名
- 查询某个服务是否自启动
systemctl is-enabled 服务名字
举例:查看当前防火墙状态
- 查看防火墙的服务名
ls -l /usr/lib/systemd/system | grep fire
- 查询防火墙服务当前状态
systemctl list-unit-files | grep firewalld
全名是firewalld.service,设置不能写一半fire必须写齐firewalld
关闭,启动,防火墙后,会立即生效
这种方式只是零时的生效,重启后还是会复原
如果希望永久生效要使用 systemctl enable|disable 服务名而不是systemctl start 服务名
防火墙可以简单理解为在监听端口前建立了一个墙。
外来程序要先访问防火墙才能进入端口。
如果防火墙没有打开对应端口就无法访问。
大概如图:
打开或关闭指定端口(firewall指令)
在真正的生产环境,防火墙必须是开启,故需要了解如何打开和关闭对应的端口。
打开端口
firewall-cmd --permanent --add-port=端口号/协议
关闭端口
firewall-cmd --permanent --remove-port=端口号/协议
打开或关闭后需要重载才能生效
重载
firewall-cmd --reload
查询端口是否开放
firewall-cmd --query-port=端口/协议
查看端口绑定的协议
netstat -anp | more
端口在 /etc/services中,可以自己设置或者进去查看
动态监控进程(top)
- 介绍
top和ps命令类似,都是用来显示正在运行的进程。
与ps不同的是top可以在执行一段时间就更新正在运行的进程。
基本语法
top 选项
- 选项说明
选项 | 功能 |
---|---|
-d 秒数 | 指定top指令每隔几秒更新,默认3s |
-i | 让top不显示任何闲置或者僵死的进程 |
-p 进程号 | 通过指定监控进程id来仅仅监控某个进程状态 |
top指令下内容详解
选项 | 解释 |
---|---|
PID | 进程号 |
USER | 哪个用户在执行 |
%CPU | 进程执行占cpu百分比 |
%MEM | 占用物理内存的百分比(单位kb) |
TIME+ | 进程在何时启动 |
COMMAND | 启动进程所用的命令和参数 |
-
第一行
-
top – 12:37:57代表当前系统时间
-
34 min是系统运行时间
-
2 users代表系统用户数量
-
load average : 0.02,0.06,0.05 负载值,0.02+0.06+0.05三个值加起来 除 3 < 0.7 就没问题,> 0.7 就负载过大
-
-
第二行
-
Tasks:324 total ,1 running,323 sleeping 0 stopped 0 zombie
- 代表系统的任务数量有324个其中1个在运行,323个在休眠,0个停止了,0个在僵死状态
-
-
第三行
- %Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
- 0.0 us 代表 用户占用cpu为0.0,0.2 sy是系统占用cpu 0.2 ,99.7 id是空闲cpu
- 第四行
- KiB Mem : 2028116 total, 541176 free, 819908 used, 667032 buff/cache
- Mem是内存占用情况,总体大约2G,大约0.5G在空闲,大约0.8个G在使用,buff用了0.6G
- 第五行
- KiB Swap: 2097148 total, 2097148 free, 0 used. 965996 avail Mem
- SWAP分区,共2G,空闲2G,使用0G,可获取0.9G
top指令的交互操作
在执行完top 选项指令后可以在键盘上按对应的键对top显示的内容进行交互操作。
操作 | 功能 |
---|---|
P | 以CPU使用率排序,默认此项 |
M | 以内存使用率排序 |
N | 以PID排序 |
q | 退出top |
按u回车,然后输入用户 | 监控指定用户 |
按k再回车,输入要结束的进程号,回车 | 终止指定进程 |
监控网络状态(netstat)
- 查看系统网络状态netstat
语法
netstat 选项
常用选项
netstat -an 按一定顺序排序输出
netstat -p 显示进程名和基础号
常用方法:
netstat -anp | more或grep 指定进程
netstat内容详解
选项 | 解释 |
---|---|
Proto | 协议 |
Local Address | 本地地址 |
Foreign Address | 外部地址 |
State | 状态,ESTABLISHED代表建立连接,LISTEN代表正在监听,TIME_WAIT代表超时等待 |
Recv-Q | 接受到数据 |
Send-Q | 发生的数据 |
Local Address和 Foreign Address的关系
检测主机连接命令(ping)
主要是检测远程主机是否正常,或俩部主机之间的网卡。
基本语法
ping 对方ip