11.1基本介绍
- 在Linux中,每一个执行的程序都被称为一个进程。每一个进程都被分配一个ID号(pid,进程号)
- windows下的pid
- linux:top指令
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
- 每个进程都可能以两种方式存在。前台与后台,
- 所谓前台进程就是用户目前屏幕上可以进行操作的。
- 后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才会结束
11.2显示系统执行的进程
ps命令是用来查看目前系统中,有哪些正在执行的进程 ,以及他们的执行状况。可以不加任何参数
ps显示的信息选项
字段 | 说明 |
---|---|
PID | 进程识别号 |
TTY | 终端机号 |
TIME | 此进程所消耗CPU时间 |
CMD | 正在执行的命令或进程名 |
ps -a:显示当前终端的所有进程信息
ps -u:以用户的格式显示进程信息
ps -x:显示后台进程运行的参数
ps -aux | more :翻页查看
ps -aux | grep "xxx":过滤查看
- 执行ps -aux
- 参数解释
- USER:进程执行用户
- PID:进程号
- %CPU:当前进程占用cpu的百分比
- %MEM:占用物理内存的百分比
- VSZ:进程占用虚拟内存大小(KB)
- RSS:进程占用的物理内存的大小(KB)
- TTY:终端名称
- STAT:运行状态,S-表示sleep休眠、s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-表示正在运行,D-短期等待,z-僵尸进程,T-被跟踪或者被停止等等
- STARTED:执行的开始时间
- TIME:占用CPU时间
- COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
- 以全格式显示当前所有的进程,查看进程的父进程 ```bash ps -ef 是以全格式显示当前所有的进程
-e 显示所有的进程 -f 全格式
ps -ef|grep xxx 是BSD风格
![Snipaste_2022-02-24_16-25-05.png](https://cdn.nlark.com/yuque/0/2022/png/21879589/1655365536089-be87fec6-5cd6-4eaa-a45b-8bdeb326547c.png#clientId=u97215922-5329-4&crop=0&crop=0&crop=1&crop=1&from=drop&id=u0d7f0b28&margin=%5Bobject%20Object%5D&name=Snipaste_2022-02-24_16-25-05.png&originHeight=314&originWidth=1683&originalType=binary&ratio=1&rotation=0&showTitle=false&size=24379&status=done&style=none&taskId=u36674d80-fcba-43b5-a9de-18ad458304f&title=)
- UID:用户ID
- PID:进程ID
- PPID:父进程ID
- C:cpu用于计算执行优先的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
- STIME:进程启动时间
- TTY:完整的终端名称
- TIME:CPU占用时间
- CMD:启动进程所用的命令和参数
```bash
ps -ef|grep sshd
sshd进程是1号进程的子进程,
终止进程kill和killall
- 若是某一个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务
基本语法
kill [选项] 进程号 功能描述:通过进程号杀死进程 killall 进程名称 功能描述:通过进程名杀死进程也支持通配符,这在系统因负载过的很慢时很有用 kill -9 pid:强制关闭pid进程。
常用选项:-9 表示强迫进程立即停止
- 案例
- 踢掉某个非法登录用户(mikasa)
ps- ef|grep sshd后可知用户mikasa登录的进程号为9583
kill 进程号
kill 9583
用户mikasa的连接关闭
- 终止远程登录服务sshd,在适当时候再次重启sshd服务
```bash kill 7756 结束远程登录服务sshd后用户无法通过xshell连上Linux虚拟机
回复sshd服务 /bin/systemctl start sshd.service
- 终止多个gedit
```bash
killall gedit
强制杀掉一个终端
先ps -aux | grep bash 观察出终端的进程号 再 killall -9 bash对应的进程号
11.3查看进程树pstree
基本语法
pstree [选项] 可以更加直观的来看进程信息
常用选项
-p 树状形式显示进程的pid -u 树状形式显示进程的所属用户
十二、服务(service)管理
12.1介绍
服务(service)本质就是进程,但是时运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysqld,sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点
service管理指令
service 服务名 [start| stop| restart| reload | status]
[root@Tyc init.d]# service network status
Configured devices:
lo eth0
Currently active devices:
lo eth0
测试某个端口是否在监听:telnet
在CentOS7.0后很多服务不再使用service,而是systemctl
- service指令管理的服务在 /etc/init.d查看
案例
使用servce指令,查看,关闭,启动network[不要在xshell中执行,关闭网络后,连接sshd服务会断开连接]
查看服务名:
- 方式1:使用setup——>系统服务,就可以看到全部
- 带号的服务是随着linux的启动自动启动,没有带 号的都是需要手动启动的
- 这里记一个比较呆比的事情,退出按Tab
- 方式1:使用setup——>系统服务,就可以看到全部
方式2:/etc/init.d 看到service指令管理的服务ls -l /etc/init.d
额外扩展:为什么linux很多服务以d结尾?
linux系统有七种运行级别(runlevel):常用的是级别3和5
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
- 运行级别2:多用户状态(没有NFS),不支持网络
- 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11控制台,登陆后进入图形GUI模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
[root@Tyc init.d]# runlevel N 3 [root@Tyc init.d]# systemctl get-default multi-user.target
开机的流程说明
CentOS7运行级别说明
介绍
- 1.通过chkconfig命令可以给服务的各个运行级别设置自 启动/关闭
- 2.chkconfig指令管理的服务在 /etc/init.d查看
- 注意:CentOS7.0后,很多服务使用systemctl管理
- 基本语法 ```bash 查看xxx服务:chkconfig –list | grep xxx 查看服务的状态:chkconfig 服务名 —list 给服务的运行级别设置自启动:chkconfig –level 5 服务名 on/off 要所有运行级别关闭或开启:chkconfig 服务名 on/off
chkconfig重新设置后需要重新启动才能生效
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21879589/1655363964163-c44001f7-3609-45ab-9341-0c1ea50e3f15.png#clientId=u97215922-5329-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u2f3132c8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=268&originWidth=726&originalType=url&ratio=1&rotation=0&showTitle=false&size=33288&status=done&style=none&taskId=u790e206c-9b16-4169-aaad-9934407c719&title=)
- 案列
```bash
对network服务进行操作,把network在3运行级别关闭自启动
chkconfig --level 3 network off
注意:chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效
12.4systemctl命令
systemctl管理命令
systemctl [start | stop |restart |status ] 服务名
- systemctl指令管理的服务咋/usr/lib/systemd/system中查看
systemctl设置服务的自启动状态
systemctl list-unit-files [|grep 服务名] (查看服务开机启动状态,grep可进行过滤) systemctl enable 服务名 (设置服务开机启动) systemctl disable 服务名 (关闭服务开机启动)关闭和开启都是默认的3和5两级别 systemctl is-enabled 服务名 (查询某个服务是否是自启动的)
引用案列: ```bash ll /usr/lib/systemd/system |grep fire 查找防火墙服务
systemctl list-unit-files | grep firewalld 查看当防火墙的服务状态
systemctl is-enabled firewalld 查看防火墙服务是否是自启的
查看当前防火墙的状态,关闭防火墙和重启防火墙 systemctl status firewalld
停止防火墙 systemctl stop firewalld
启动防火墙、 systemctl s
ls -l /usr/lib/systemd/system/ | more:显示systemctl管理的服务名称。
systemctl list-unit-files | grep firewalld:查看防火墙开启还是关闭。
![image.png](https://cdn.nlark.com/yuque/0/2022/png/21879589/1655363964410-f604287f-607f-463c-a53a-183dd15bcb2e.png#clientId=u97215922-5329-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ue538705d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=65&originWidth=709&originalType=url&ratio=1&rotation=0&showTitle=false&size=8451&status=done&style=none&taskId=u81172659-73b0-4a09-a3ce-299d9d283a7&title=)
- 细节点
- 关闭或者启动防火墙后,立即生效。[telnet测试 某个端口即可]
- 这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置
- 如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable|disable]服务名
<a name="TroWR"></a>
## 12.5打开或者关闭指定端口
关于防火墙的管理指令<br />目的,打开防火墙的同时允许防火墙通过某些端口。<br />![Snipaste_2022-02-24_19-10-07.png](https://cdn.nlark.com/yuque/0/2022/png/21879589/1655368899494-2bf361c7-c1a6-4466-b5f2-ef695b9a343d.png#clientId=u97215922-5329-4&crop=0&crop=0&crop=1&crop=1&from=drop&id=ud7c3d0fa&margin=%5Bobject%20Object%5D&name=Snipaste_2022-02-24_19-10-07.png&originHeight=503&originWidth=1119&originalType=binary&ratio=1&rotation=0&showTitle=false&size=106933&status=done&style=none&taskId=u0be7bcff-03f5-412b-bfc5-a90f7bbdeaf&title=)<br />在真正的生产环境,往往需要将防火墙打开,来了,如果我们把防火墙打开,那么外部请求数据包就不能给服务器监听端口通讯。,这时,需要打开指定的端口。比如80,22,8080 该怎么做呢?
- firewall指令
- 打开端口
```bash
firewall-cmd --permanent --add-port=端口号/协议
关闭端口
firewall-cmd --permanent --remove-port =端口号/协议
无论是关闭还是开启端口都需要重新载入防火墙才能生效
firewall-cmd --reload
查询端口是否开放
firewall-cmd --query-port=端口/协议
案例
基本语法
top [选项]:主要查看cpu和内存men占用量,以及是否有僵尸进程zombie。
选项说明 | 选项 | 功能 | 实例 | | —- | —- | —- | | -d 秒数 | 指定top命令每隔几秒更新。默认是3秒 | top -d 5 | | -i | 是top不显示任何闲置或者僵死进程 | | | -p | 通过指定监控进程ID来仅仅监控某个进程的状态 | |
- 僵死进程:进程已经死掉了(进程运行结束),但是内存没有被释放掉。僵死进程需要定时清除!!
-
13.2动态监控进程的交互操作
交互操作说明 | 操作 | 功能 | | —- | —- | | P | 以CPU施一公率排序,默认就是此项 | | M | 以内存使用率排序 | | N | 以PID排序 | | q | 退出top |
实例案例 ```bash 案例1.监视特定用户,比如说监控mikasa用户 top:输入此命令,按回车键,查看执行的进程 然后输入“u”,回车,在输入用户名,即可
案例2:终止指令的进程 先输入top指令后,在输入“k“ ,在输入想要终止的进程号
案例3:指定系统状态更新的时间(每隔10秒自动更新)(默认的是3秒) top -d 10
<a name="MdVrb"></a>
## 13.3监控网络状态
- 查看系统网络情况netstat
- 基本语法
```bash
netstat [选项]
选项说明
-an 按一定顺序排列输出 -p 显示哪个进程在用
应用案例 ```bash
- 查看所有的网络服务
- netstat -anp | more
- 查看sshd的服务的信息
- netstat -anp | grep sshd ```
- 检测主机连接命令ping
- 是一种网络检测工具,它主要是用来检测远程主机是否正常,或是两部主机间的网线或网卡故障