第十四章 Linux实操篇——进程管理(重点)
1. 基本介绍
(1)在Linux中每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid进程号)
(2) 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程 则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
(3)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束
(4)示意图:
2. 显示系统执行的进程
2.1 基本介绍
ps 命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数
PID:进程识别号;TTY:终端机号;TIME:占用CPU时间;CMD:正在执行的命令
参数:ps -a(显示当前终端的所有进程信息);ps -u(以用户的格式显示进程信息);ps -x(显示后台进程运行的参数)
2.2 ps详解
(1)指令:ps -aux | grep xxx(例如有无sshd服务)
(2)指令说明
USER:该进程执行用户;PID:进程号;%CPU:进程占用CPU的百分比;%MEM:进程占用物理内存的百分比;VSZ:虚拟内存的大小,单位KB;RSS:进程占用的物理内存大小,单位KB;TTY:终端名称;STAT:进程状态(S睡眠、R正在运行、D短期等待、Z僵死进程、T被跟踪或被停止);START:进程的启动时间;TIME:CPU时间,即进程使用CPU的总时间;COMMAND:启动进程所用的命令或参数,如果过长会被截断
2.3 应用实例
案例:以全格式显示当前所有的进程,查看进程的父进程(一个进程创建其他进程,多进程概念)例如:查看sshd的父进程信息
ps -ef是以全格式显示当前所有的进程
-e显示所有进程、-f全格式
UID:用户ID;PID:进程ID;PPID:父进程ID;C:CPU用于计算执行优先级的因子(数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明CPU是I/O密集型运算,执行优先级会提高);STIME:进程启动的时间;TTY:完整的终端名称;TIME:CPU时间;CMD:启用进程所用的命令和参数
3. 终止进程kill和killall
3.1 介绍
若是某个进程执行一半需要停止时,或是已经消耗了很多的系统资源时,此时可以考虑停止该进程(使用kill命令来完成此项任务)
3.2 基本语法
kill [选项] 进程号(通过进程号杀死进程)
killall 进程名称(通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
3.3 常用选项
-9:表示强迫进程立即停止
3.4 应用实例
(1)踢掉某个非法登录用户(kill对应的进程号)
(2)终止远程登录服务sshd,在适当时候再次重启sshd服务(/bin/systemctl start sshd.service)
(3)终止多个gedit(killall gedit)
(4)强制杀掉一个终端(kill -9 bash 对应的进程号)
4. 查看进程树pstree
4.1 基本语法
pstree [选项],可以更加直观的来看进程信息
4.2 常用选项
-p(显示进程PID);-u(显示进程所属用户)
4.3 应用实例
(1)树状的形式显示进程的PID
(2)树状的形式显示进程的用户
5. 服务(service)管理
5.1 介绍
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysqld、sshd防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点
5.2 service管理指令
(1)service 服务名 [start启动 | restart重启 | reload重载 | status状态]
(2)在centos7.0后很多服务不再使用service,而是systemctl
(3)service指令管理的服务在/etc/init.d查看(绿色)部分
5.3 service管理指令案例
使用service指令查看、关闭、启动network
5.4 查看服务名
(1)使用setup就可以看到全部系统服务(前面有*表示会随着Linux的启动自动启动)
(2)/etc/init.d可以看到service指令管理的服务(ls -l /etc/init.d)
5.5 服务的运行级别(runlevel)
(1)Linux系统有7中运行级别(runlevel):常用的是级别3和5
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
运行级别2:多用户状态(没有NFS网络文件存储系统),不支持网络
运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式(无界面)
运行级别4:系统未使用,保留
运行级别5:X11控制台,登录后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
工作中几乎都是3!
(2)开机的流程说明:
先开机,进入BIOS,然后引导,开启1号进程systemd,确定运行级别,启动运行级别对应服务
5.6 centos7后运行级别说明
在/etc/initab进行简化
systemctl get-default(查看当前运行级别)
systemctl set-default TARGET.target(切换运行级别)
5.7 chkconfig指令
5.7.1 介绍
(1)通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭
(2)chkconfig指令管理的服务在/etc/init.d查看
(3)注意:在centos7.0后,很多服务使用systemctl管理
5.7.2 基本语法
chkconfig --list(查看服务);chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off(某个服务在某个运行级别设置自启动/停止)
5.7.3 应用案例
对network服务,进行操作,把network在3运行级别关闭自启动
chkconfig重新设置服务自启动或关闭后,需要重启机器生效
5.8 systemctl管理指令5.9 systemctl设置服务的自启动状态
5.8.1 基本语法
systemctl [start | stop | restart | status] 服务名
systemctl管理的服务在/usr/lib/systemd/system查看
5.8.2 systemctl设置服务的自启动状态
(1)systemctl list-unit-files | grep 服务名(查看服务开机启动状态,grep可以进行过滤)
(2)systemctl enable 服务名(设置服务开机启动)
(3)systemctl disable 服务名(关闭服务开机启动)
(4)systemctl is-enabled 服务名(查询某个服务是否是自启动的)
5.8.3 应用案例
查看当前防火墙状态,关闭和重启防火墙
注意:(1)关闭和启动防火墙后,立即生效
(2)这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置
(3)如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable | disable] 服务名
5.9.1 概述
在真正的生产环境,往往需要将防火墙打开,但是如果将防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,就需要打开指定的端口
5.9.2firewall指令
打开端口:firewall-cmd --permanent --add-port=端口号/协议
关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
重新载入才能生效:firewall-cmd --reload
查询端口是否开放:firewall-cmd --query-port=端口/协议
5.9.3 应用案例
启用防火墙,测试111端口是否能telnet;开放111端口;再次关闭111端口
6. 动态监控进程
6.1 概述
top和ps命令很相似,它们都是用来显示正在执行的进程。top和ps最大的不同之处在于top在执行一段时间可以更新正在运行的进程
6.2 基本语法
top [选项]
参数:-d秒数(指定top命令每隔几秒更新,默认是3秒);-i(使top不显示任何限制或者僵死进程);-p(通过指定监控进程ID来仅仅监控某个进程状态)
第一行:当前时间;系统执行时间;用户数量:负载值(3个值相加除以3,若大于0.7则系统负载大,若0.7以下则正常)
第二行:系统任务数;正在运行数;休眠数;停止数;僵死数
第三行:CPU占用百分比(用户占用;系统占用;空闲)
第四行:内存占用情况(共有内存;空闲内存;使用内存)
第五行:分区(共有;空闲;可获取)
6.3 交互操作说明
6.4 应用案例
(1)监视特定用户
输入top命令后回车,然后输入'u',再输入用户名回车
(2)终止指定进程
输入top命令后回车,然后输入'k',再输入要结束进程的ID号
7. 监控网络状态7.1 查看系统网络状况netstat
基本语法:netstat [选项]
参数:-an(按一定顺序排列输出);-p(显示哪个进程在调用)
案例:请查看服务名为sshd的服务的信息
7.2 检测主机连接命令ping
ping是一种网络检测工具,主要用于检测远程主机是否正常,或是两部主机间的网线或网卡故障