Linux 入门第三节

一、磁盘分区

Linux来说无论有多少个分区,分给哪一个目录使用,他归根结底只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都用来组成整个文件系统的一部分。
在这里插入图片描述

众所周知,硬盘是可以进行分区的

1、命令使用

查看所有的设备挂载分区

lsblk

在这里插入图片描述
这个就表示有一个vda(虚拟硬盘)容量是80G,然后vda下有一个分区vda1 它的容量是80g 挂载在根目录

2、参数详解

  • NAME:代表硬盘的型号名称
  • MAJ:MIN:其实核心认识的装置都是透过这两个代码来熟悉的!分别是主要:次要装置代码!
  • RM:是否为可卸除装置 (removable device),如光盘、USB 磁盘等
  • SIZE:当然就是容量啰!
  • RO:是否为只读装置的意思
  • TYPE:是磁盘 (disk)、分区槽 (partition) 还是只读存储器 (rom) 等输出
  • MOUTPOINT:就是挂载点的意思,意思为分区对应系统文件的那个目录

3、模拟添加硬盘步骤(具体细节可以百度相对应的流程)

1、添加硬盘 2、磁盘分区 3、分区初始化 4、分区挂载 参考链接

二、进程管理

1、基本介绍

  1. 在Linux中,每个执行的程序都成为一个进程,每一个进程都分配了一个ID号(pid,进程号)。
  2. 每个进程都可能以两种方式存在。前台后台,所谓前台进程就是用户目前的屏幕上可以操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  3. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。

2、命令介绍

查看进程

#查看系统进程
ps
# a 显示当前终端的所有进程信息,u以用户的格式显示进程信息,x 显示后台进程的运行参数
ps -aux
# -e   显示所有进程,-f 全格式。
ps -ef 
列名称 描述
USER 启动进程的用户名
PID 进程号
PPID 父进程
%CPU 进程占用CPU的百分比
%MEM 进程占用物理内存的百分比
VSZ 进程占用的虚拟内存大小(单位:KB)
RSS 进程占用的物理内存大小(单位:KB)
TTY 终端名称缩写
STAT 进程状态,其中S 睡眠,s表示该进程是会话的先导进程,N 表示进程拥有比普通优先级更低的优先级,R 正在运行,D短期等待,Z僵死进程,T被跟踪或者被停止等等
START 进程的启动时间
TIME CPU时间,即进程使用的CPU总时间
COMMAND 启动进程所用的命令和参数,如果过长会被截断显示

进程终止

# 强制关闭进程
kill -9 PID

查看进程树

# 以树的形式显示进程pid
pstree -p 
# 以树的形式展示用户
pstree -u

三、服务管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld,sshd防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

1、service指令管理

  1. service <服务名> [start、stop、restart、reload、status]
  2. 在centos7.0后很多服务不再使用service,而使用的是systemctl
  3. service指令管理的服务在/etc/init.d 查看
    在这里插入图片描述
  4. 如何查看系统有哪些服务指令
# 这种指令的局限性比较大
ls -a /etc/init.d/
# 查看全部的服务,选定系统服务然后回车
setup 

这里打了*号的都是开机自动启动的服务

在这里插入图片描述

2、systemctl 指令管理

# 查看sytemctl管理的指令
ls -l /usr/lib/systemd/system
  1. systemctl [start、stop、restart、reload、status] <服务名>
  2. systemctl list-unit-files 查看服务开启的启动状态 可以根据grep过滤 例:systemctl list-unit-files |grep firewalld(查看防火墙的状态)
  3. systemctl enable 服务名 设置服务开机启动
  4. systemctl disable 服务名 关闭服务开机启动
  5. systemctl is-enable 服务名 查看服务是否自启动

3、防火墙端口

#添加端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
#刷新规则
firewall-cmd --reload
#查看指定端口
firewall-cmd --zone=public --query-port=8080/tcp
#删除指定端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
#查看已开放得所有端口
firewall-cmd --list-ports

四、动态监控

1、TOP

top和ps命令相似,他们都是用来显示正在执行的程序。top和ps最大的区别是,top是实时的而ps是只获取当前时间的进程状态。

在这里插入图片描述

第一行: top - 15:25:07 up 1 day, 13 min, 2 users, load average: 0.00, 0.01, 0.05

内容 含义
14:41:58 系统当前时间
up 23:30 系统运行的时间
2 users 两个系统用户
load average: 0.00, 0.01, 0.05 系统负载均衡,三个值相加/3 大于0.75的话就需要考虑硬件提升了

第二行: Tasks: 115 total, 1 running, 114 sleeping, 0 stopped, 0 zombie

内容 含义
Tasks: 115 tota 总共任务数量
1 running 一个线程正在运行
114 sleeping 114个睡眠线程
0 stopped 0个停止线程
0 zombie 0个僵尸线程,如果系统负载过高可以考虑把僵尸线程给杀掉

第三行:%Cpu(s): 0.5 us, 0.2 sy, 0.0 ni, 99.2 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st 只需要注意前四个参数就行

内容 含义 优先级
0.5 us 用户空间占用CPU百分比 重点关注
0.2 sy 内核空间占用CPU百分比 重点关注
0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
99.2 id 空闲CPU百分比 重点关注

第四行:KiB Mem : 3879880 total, 2436844 free, 401560 used, 1041476 buff/cache

  • buffer 即写如磁盘时,先保存到磁盘缓冲区(buffer),然后再写入到磁盘。

  • cache 即读磁盘时,数据从磁盘读出后,暂留在缓冲区(cache),为后续程序的使用做准备。

内容 含义
3879880 total 总内存
2436844 free 空闲内存
401560 used 使用内存
1041476 buff/cache 磁盘读写的分配内存

2、TOP使用案例

top   //每隔3秒显式所有进程的资源占用情况
top -d 1  //每隔1秒显式所有进程的资源占用情况
top -c  //每隔3秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 12345 -p 6789//每隔3秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 123456 //每隔2秒显示pid是123456的进程的资源使用情况,并显式该进程启动的命令行参数

3、TOP交互案例

# 使用Top后

# 按P 以CPU的使用率排序
# 按M 以内存的使用率排序
# 按N 以PID排序
# 按q 推出TOP

五、网络管理

# 查看本机网络服务
netstat -an 

# 常见参数
-a (all) 显示所有选项,默认不显示LISTEN相关。
-t (tcp) 仅显示tcp相关选项。
-u (udp) 仅显示udp相关选项。
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服务状态。

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

在这里插入图片描述

参数 协议
Proto 协议,tcp是平常的ip协议,tcp6就是ipv6
Recv-Q 指接受到的消息
Send-Q 指发送的消息
Local Address 服务本机启动的ip 三个:号指的是ipv6,0.0.0.0和127.0.0.1均为本地,10.0.24.14是机器的内网地址。
Foreign Address 0.0.0.0:* 指监听所有的网络,具体的ip是和本地程序发生连接的ip

State 各种状态:

  • CLOSED 初始(无连接)状态。
  • LISTEN 侦听状态,等待远程机器的连接请求。
  • SYN_SEND 在TCP三次握手期间,主动连接端发送了SYN包后,进入SYN_SEND状态,等待对方的ACK包。
  • SYN_RECV 在TCP三次握手期间,主动连接端收到SYN包后,进入SYN_RECV状态。
  • ESTABLISHED 完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
  • FIN_WAIT_1 在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。
  • FIN_WAIT_2 在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。
  • TIME_WAIT 在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
  • CLOSING 在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却收到对方的FIN包,此时,进入CLOSING状态。
  • CLOSE_WAIT 在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。
  • LAST_ACK 在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。

六、RPM和YUM包管理工具

1、rpm

介绍

rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager(RedHats软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。Linux的分发版本都有采用(suse,redhat,centos等等),可以算是公认的行业标准了。

命令

# 查看doker的版本信息
rpm -qa|grep docker
# docker-ce-cli 软件名  20.10.5 版本号 3.el7.x86_64 表示适用于centos
docker-ce-cli-20.10.5-3.el7.x86_64

# 查看是否安装过docker 会发现查不到,这个是根据rpm包全名称查找的
[root@VM-0-108-centos ~]# rpm -q docker

# 查看安装包详细的全信息
rpm -qi docker-ce-cli

#软件包的删除 --nodeps表示强制删除,因为可能当前的软件正在被其他软件所依赖
rpm -e docker-ec-cli --nodeps

#软件包的安装 i 安装 v提示 h 进度条 软件报名.rpm 可以是个连接也可以是个本地的文件.rpm
rpm -ivc 软件报名.rpm 

2、YUM

介绍

Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

命令

# 这个命令是去远程仓库查看是否有可供安装的firefox
yum list|grep firefox

# 软件安装
yum install firefox

七、Shell编程

1、介绍

Shel是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shel来启动、挂起、停止甚至是编写一些程序。看一个示意图
在这里插入图片描述

2、脚本入门

脚本格式要求

开头写解释器类型,我们采用最常见的解释器 bash,也是Linux默认的shell解释器

#! /bin/bash
echo "hello, world"

脚本执行要求

# 给拥有者赋予执行权限
chmod u-x hello.sh

3、Shell变量

Linux Shell中的变量分为,系统变量和用户自定义变量。

系统变量

  1. 系统变量:$HOME、$PWD、$SHELL、$USER 等等,比如:echo $HOME等等
  2. 显示当前shelli中所有变量:set

用户自定义变量

#!/bin/bash
A=100
#输出变量需要加上$
echo A=$A
echo "A=$A"
#案例2:撤销变量A
unset A
echo "A=$A"
#案例3:声明静态的变量B=2,不能unset
readonly B=2
echo "B=$B"
#将指令返回的结果赋给变量``和$()等价
C=`date`
D=$(date)
echo "C=$C"
echo "D=$D"

4、设置环境变量

假设我们很多的shell脚本需要用到同一个变量,那么我们就可以在系统中定义一个环境变量。

vim /etc/profile
#定义自己的环境变量
export JAVA_HOME=/usr/local/java
#刷新环境变量文本
source /etc/profile
# 打印
echo $JAVA_HOME

5、设置位置参数

编写shell脚本

#!/bin/bash
echo "0=$0 1=$1 2=$2"
echo "所有的参数1=$*"
echo "所有的参数2=$@"
echo "传入参数的个数=$#"

运行

[root@VM-0-108-centos shell]# sh demo1.sh 100 200
0=demo1.sh 1=100 2=200
所有的参数1=100 200
所有的参数2=100 200
传入参数的个数=2
posted @ 2022-05-10 15:13  xiye1  阅读(78)  评论(0)    收藏  举报