Linux运维从入门到进阶_linux运维学习-程序员宅基地

技术标签: c++  运维  linux  centos  

图片描述

Linux 磁盘管理

知识点

  • 磁盘和文件系统简介
  • 文件系统工具
  • 磁盘分区管理
  • 交换分区
  • 逻辑卷和阵列

 磁盘和文件系统介绍

正如上文中提到的,Linux 中一切都是文件。这个重要的概念贯穿整个 Linux 的始末,磁盘也是如此。各种接口的磁盘在 Linux 系统中以文件的形式进行挂载。

文件系统 简述
ext 最早的 Linux 文件系统,性能和兼容性上有很多缺陷。
ext2 Ext 文件系统的升级版本,改进了一些缺陷。
ext3 对于 Ext2 做出了诸多改进,引入了日志功能,提高文件系统的可靠性。
ext4 向前兼容 Ext3,在性能方面得到了极大的发展。
xfs 目前较先进的文件系统技术,具有可升级性。

目前,主流的操作系统采用的是 xt4 和 xfs 系统,我们的实验环境 Ubuntu 采用的就是第一种文件系统——ext4。此外,除了 ext4 和 xfs 等存储性的文件系统,Linux 系统中还存在着诸多的辅助性的文件系统。

文件系统 简述 目录
proc 用来管理内存的虚拟文件系统 /proc
sysfs Ext 文件系统的升级版本,改进了一些缺陷。 /sys
swap 类似于虚拟内存,用磁盘 ROM 来模拟 RAM,当内存不够的时候就使用 Swap 分区
tmpfs 与 sysfs 类似,但是可以使用 swap 交换分区

当你的计算机挂在了一个设备之后,Linux 的系统内核会自动把硬件名称规范起来以及识别文件系统类型,比如说 IDE 硬盘可能会被挂载到/dev/hdb。几乎所有设备都会被挂载到 dev 目录下面,这里是他们遵守的命名规范

硬件设备 文件名称
IDE /dev/hd[a-d]
SATA /dev/sd[a-p]
软驱 /dev/fd[0-1]
鼠标 /dev/mouse

磁盘管理命令

        接下来,我们通过一系列命令来查看磁盘分区以及相应的文件系统类型,为了防止接下来查看磁盘的时候提示权限不足,首先我们使用 sudo -i 命令打开 root 权限。

df -kh

        输出清单的第一列显示的是文件系统以及路径,第二列显示的是分区包含的数据的大小,用 -h 参数以 M 为单位显示会更符合我们的阅读习惯,第三列和第四列则分别显示已用以及可用的空间大小,同时,我们可以在最后一列中看出该文件系统的挂载点。

 磁盘分区命令

同时,fdisk 还提供一个交互式的接口来实现不同的管理命令。例如在上图中,我们可以看到,在我们的系统下面挂载了一个 /dev/vda 设备,这个设备只有一个 40G 的 vda1 分区,我们可以通过如下命令进入分区交互界面:

root@jjx-MS-7D09:~# fdisk -l
Disk /dev/loop0:51.04 MiB,53522432 字节,104536 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop1:64.77 MiB,67915776 字节,132648 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop2:55.45 MiB,58142720 字节,113560 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop3:218.99 MiB,229629952 字节,448496 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop4:32.27 MiB,33841152 字节,66096 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/sda:465.76 GiB,500107862016 字节,976773168 个扇区
Disk model: Samsung SSD 870 
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:59DBB3DB-248B-45B1-9773-D3620B28E6E9

设备            起点      末尾      扇区   大小 类型
/dev/sda1       4096    618495    614400   300M EFI 系统
/dev/sda2     618496    651263     32768    16M Microsoft 保留
/dev/sda3     651264 315228159 314576896   150G Microsoft 基本数据
/dev/sda4  315228160 609585151 294356992 140.4G Linux 文件系统
/dev/sda5  609585152 629585919  20000768   9.5G Linux 文件系统
/dev/sda6  629585920 829585407 199999488  95.4G Linux 文件系统
/dev/sda7  829585408 849586175  20000768   9.5G Linux 文件系统
/dev/sda8  849586176 912087039  62500864  29.8G Linux swap
/dev/sda9  912087040 970680319  58593280  27.9G Linux 文件系统
/dev/sda10 970680320 972681215   2000896   977M Linux 文件系统
/dev/sda11 972681216 973680639    999424   488M BIOS 启动
root@jjx-MS-7D09:~# 

fdisk /dev/vda

例如,我们可以通过 P 命令查看分区表:

root@jjx-MS-7D09:~# fdisk /dev/sda

欢迎使用 fdisk (util-linux 2.36.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助): 

在交互界面,我们有如下命令可以使用。

  n:创建新分区

  d:删除已有分区

  t:修改分区类型

  l:查看所有已经ID

  w:保存并退出

  q:不保存并退出

  m:查看帮助信息

  p:显示现有分区信息

当你想要退出的时候,可以按 w 来保存。如果在 fdisk 命令中修改了分区,还需要通过 Partprobe 命令让内核重新识别分区 /proc/partitions。

partprobe

SWAP 交换分区

在 Linux 系统中,Swap 分区是用来模拟内存的,简单的来说,就是当内存不太够的时候,将调用 SWAP 分区。这跟 Windows 系统的虚拟内存很像。两者的技术原理都是将磁盘当作内存条来读写,但是我们知道磁盘的读写速度要比内存条慢很多,所以 SWAP 分区只是一种替代手段,并不能达到实际内存的效果。

 通过 free -m 我们查看目前的内存以及 SWAP 分区大小

root@jjx-MS-7D09:~# free -m
              总计         已用        空闲      共享    缓冲/缓存    可用
内存:       31931        2590       27012         106        2328       28790
交换:       30517           0       30517
root@jjx-MS-7D09:~# 

根据 Redhat Linux 官方给出的建议,Swap 分区设置为如下大小最合适:

内存 推荐分区大小
<2GB 内存的两倍
2GB-8GB 与内存一样大
8GB-64GB 最少 4GB
>64GB 最少 4GB

 事实上,Swap 分区并不是越多越好,在性能越好的设备上,Swap 分区设置的越少。因为当内存足够多的时候,磁盘的读写速度反而会成为累赘。例如可能会出现内存还剩下很多,系统却在使用 Swap 分区的情况。在目前系统的性能普遍提高的情况下,我们对 Swap 进行一定的配置来调优。

逻辑卷和阵列

        你可能会有过这样的想法,当 Windows 下 C 盘空间不够的时候,你想再给 C 盘加一点空间,但又不想格式化删内存,这时候,你可能需要的就是逻辑卷管理技术。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。类似的,Linux 上也有这样的技术。

        这种技术最大的特点就是可以对磁盘进行动态管理。大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。

        LVM 主要涵盖四个基本的部分

类目 描述
PE 物理拓展
PV 物理卷
VG 卷组
LV 逻辑卷

RAID 阵列

此外除了 LVM 技术,我们还使用 RAID 阵列 来提供更高性能的硬盘组。RAID 阵列和 LVM 中的 VG 有些类似。在大多数 Linux 发行版上使用名为 mdadm 的软件包进行管理。

目前,我们通常使用的是 RAID 技术由三块或者三块以上的磁盘组成阵列。RIAD 技术的诞生是因为早期技术上还不是那么成熟,一块大容量的磁盘的价格会高于几块小磁盘的组合,而现在,随着技术的发展,大容量磁盘的成本已经大幅降低。因此,RAID 技术不再是那么必要,但是仍然有一定存在的理由

在使用 RAID 技术之前,我们需要安装 adadm 包。这是一个和 RAID 技术相关的包。

Shell 脚本入门

  • Linux 常用 Shell 简介
  • Bash 特性
  • Bash 简介
  • Bash 基础
  • Bash 进阶
  • 常用命令

Linux 常用 Shell 简介

我们知道 Linux 系统的内核是操作系统的核心,而 Shell 在英文中是外壳的意思。Shell 暗指它是用来用户和内核交互的程序。Shell 提供一个与用户对话的环境,这个环境被称之为 CLI(Command Line Interface,命令行界面),我们能够在 CLI 中输入命令让系统执行。

这里,我们罗列集中几种目前使用较为广泛的 Shell 类型。

  • Bourne Shell

  • Cshell

  • Korn

  • Bash

使用下面命令,我们可以看到当前操作系统安装的所有 Shell。

cat /etc/shells

 

我们在写 Shell 脚本第一步声明解析器的时候,往往需要用/bin xxx。

我们来看一个 Bash 程序声明解释器的例子:

#!/bin/sh

这里告诉我们这个程序将使用 bin 目前下面的 bash 解释执行。

创建 Hello.sh

vi hello.sh

接着,我们按 i 进入插入模式,在里面输入如下内容:

#!/bin/bash # 这是评论!
echo Hello World # 这也是评论!

第一行告诉 Unix 该文件将由 /bin/sh 执行,这是几乎所有 Unix 系统上 Bourne shell 的标准位置。如果您使用的是 GNU/Linux,则 /bin/sh 通常是指向 bash(或最近的 dash)的符号链接。

变量类型

在开始下面的学习之前,我们首先要开始了解本地变量和环境变量。顾名思义,本地变量就是作用域只在当前文件的变量,而全局变量的定义是:

您可以将旧 shell 的变量复制到新 shell(即第一个 shell 变量到第二个 shell),这样的变量称为全局 shell 变量

在 Bash 中,声明变量的格式是:

变量=值

例如,我们可以声明采用如下方式变量(CLI 中依次执行如下命令):

var=123
echo $var
bash
echo $var

Bash 命令相当于打开一个新的命令行窗口,在新的命令行窗口中,bash 命令是不生效的。

        与其他的编程语言不同,在 Shell 中,我们定义变量等号之间是不能有空格,否则将会执行失败。这种方式声明的变量只能在当前文件中使用变量 var,一旦出了当前文件,便无法再次使用。如果我们想要将本地环境转化成全局变量,还需要导出该变量。

Bash 进阶

If 循环

在 Bash 中,if 语句与其他编程语言十分类似,都是 if 后面紧跟着紧跟着条件,后面紧跟着 then 以及 else(分别表示条件成立以及条件不成立的情况下,代码需要做什么)。唯一有所不同的是,我们的 if 语句以 fi 结尾。这里,我们展示一个例子:

#! /bin/bash
var="Linux"
if var==Linux
then
  echo "match"
else
  echo "do not match"
fi

For 循环

类似的,For 循环也是如此,唯一需要注意的是 for 结构这里可以有多种不同的写法,并且与常见的写法都略有不同

写法 1:

for ((i=0; i<5; i++));

写法 2:

for i in 1,2,3,4,5

        我们通过 vi test_for.sh 直接创建编写相应的文件命令,并尝试编写一个用到 for 循环的例子来说明。全部代码如下:

#!/bin/bash
cd /
mkdir test_dir
cd test_dir

for ((counter=0; counter<5; counter++))
do
    touch test_$counter.txt
done

While 语句

For 语句主要适用于有限次数地循环不断的执行一系列命令,而 While 语句则适用于循环次数比较多或者我们不确定有多少次循环的情况。我们将上面 For 循环中的例子略微修改一下,得到另一个例子:

#!/bin/bash
cd /
mkdir test_dir2
cd test_dir2
counter=0

while (($counter<5))
do
    let "counter++"
    touch test_$i.txt
done

特别的,当我们想要循环无限次的时候,我们可以这样写:

while :

或者,

while true

 常用命令

除了在上面的应用过程中我们已经用到的 set 命令,还有其他几个我们常用的 Shell 命令。

shopt 命令

shopt 内置命令用于设置和取消设置 shell 选项。使用此命令,您可以高效地利用 shell。直接使用 shopt 命令可以查看各项参数以及他们的开闭状

如果要查找某项特定的参数,我们也可以在 shopt 后面接上参数名:

shopt dotglob

LNMP 搭建

        LNMP(Linux-Nginx-MySQL-PHP)网站架构是世界上最流行的 Web 堆栈之一,被誉为 Linux 下 Web 应用的黄金组合。该堆栈包括:Linux 操作系统、Nginx HTTP 服务器、MySQL 数据库、PHP 编程语言。本实验帮助学员可以帮助用户获得 LNMP 部署、安装、配置等技能。在最短时间内学会在 Linux 上使用 Nginx+PHP+MySQL 的组合。此外,本节课采用实战的方式,绝大部分命令都是在终端中执行,如果在蓝桥云课环境下操作失败,可以考虑在私人 VPS 中进行实战。

        LNMP 架构既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP 代理服务器对外进行服务。此外,Nginx 用 C 编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多,面板具有较高的安全性能,有效解决了主机之间跨站攻击问题,提高服务器整体安全性。

  • LNMP 架构简介
  • 手动部署 LNMP
  • 使用自动脚本部署 LNMP

         你可能会好奇,为什么我们想要把这几个工具放在一起讨论呢,实际上,这是因为 LNMP 中的四个组件加在一起可以构成搭建服务器的最小需求。Linux 是操作环境,Nginx 用于解析服务器,Nginx 加速网站内容和应用程序交付,能够提高网络服务器安全性,促进 Internet 上网站的可用性和可扩展性。MySQL 作为服务器的后台,存储服务器用到的数据,P 一般指的是 PHP 语言,有时候,也会有人理解为 Python,或者 Perl,但是无论是这三个哪一个,都是编程语言

下面我们先从 Nginx 开始

首先我们更新软件包列表:

sudo apt update

sudo apt install nginx

nginx -v

接下来,我们安装 Mysql:

sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev

实验楼中默认安装有 Mysql ,但是刚启动的时候 Mysql 服务是关闭的,在这里的几条命令是为了告诉读者如何进行安装 Mysql。这三条命令分别安装的是 Mysql 的服务端,客户端,以及环境依赖。

 类似地,在安装完成后,我们通过查看版本号来确定是否安装成功

最后来到我们安装 PHP,Ubuntu 上安装 PHP 十分快捷:

sudo apt update
sudo apt install php-fpm

下面是各个工具可能用的路径:

  • web 目录默认:/home/wwwroot/default/
  • Nginx 目录:/usr/local/nginx/
  • Mysql 目录:/usr/local/mysql/
  • PHP 目录:/usr/local/PHP/
  • PHPMYADMIN 目录:/home/wwwroot/default /phpMyadmin/
  • Nginx 主配置(默认虚拟主机)文件:/usr/local/nginx/conf/nginx.conf
  • 添加虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
  • MySQL 配置文件:/ etc/my.cnf
  • PHP 配置文件:/usr/local/php/etc/php.ini
  • PHP-FPM 配置文件:/usr/local/php/etc/php-fpm.conf

使用自动脚本部署 LNMP 

自动部署 LNMP 是目前比较常用的方式,通过这种方式,我们只需要几行代码,就能够快速完成 LNMP 架构的部署。

在正式使用 Ansible-LNMP 自动化部署脚本之前,我们还需要获得 root 权限,使用:

sudo -i

接着,我们就可以开始执行 LNMP 自动化部署脚本了

wget -N https://raw.githubusercontent.com/Websoft9/ansible-linux/main/scripts/install.sh; bash install.sh -r lnmp

如果通过在线拉取的方式不成功,可以考虑使用我上传到课程附件中的备份:

https://labfile.oss.aliyuncs.com/courses/4838/install.sh

        相对于二进制安装,编译安装因为是在本地编译的,更加适合当前的主机,后期出现问题的可能性更少。但也是因为采用的是编译的方式,该自动化脚本的执行时间会有些长。

        此外,如果我们喜欢二进制安装追求速度,可以使用如下命令批量安装:

apt-get install nginx php-cli php make automake gcc gcc-c++ spawn-fcgi 
wget mysql-server

然后,我们只需要静静的等待自动部署结束就可以了,在这个过程中可能会有一些交互式的选项需要我们选择是或者否,使用默认选项或者根据实际情况选择均可以。如果学员对于 Ansible 有所了解的话,还可以通过 Ansible 映射给大规模的服务器批量安装 LNMP 架构。

自动部署结束以后,我们采用以下命令来检查时候安装成功

php -v
mysql -v
nginx -v

注意事项:

  • 确保网络良好,否则安装过程可能会因为无法拉取文件失败
  • 确保操作用户已经有了足够的权限
  • 预留出足够的空间

如果希望无人值守安装 LNMP 环境,可以考虑使用这个网站来生成相应的命令:

https://lnmp.org/auto.html 

Linux 日志管理

        大多数情况下,运维人员无法守在每一台服务器旁边,而当服务器出了故障,我们想要维修的时候,就需要查看日志。维护、查阅日志对于运维人员来说是分析问题的非常有效的解决途径。rsyslog 是实现日志管理的一个工具。

  • Linux 日志管理介绍
  • rsyslog 概述及配置
  • 日志管理实践

         日志记录操作系统在运行过程中的状况,既有正确的,也有错误的。例如记录服务器访问 IP,访问内容的日志就属于正确的日志。程序运行出错时生成的 log 文件则属于错误日志。当系统正常运行的时候,我们可能用不到日志,但是一旦操作系统出错,日志就起到了非常关键的作用。

 几乎所有的系统日志都存储在 /var/log 目录下面,我们通过 ls 命令查看该目录下面的所有内容

/var/log/cron
/var/log/cups/
/var/log/dmesg
/var/log/secure
/var/log/btmp
/var/log/lastlog
/var/log/message

        首先是 cron,你可能用到过 cron 来设置定时任务,它记录了和定时任务相关的日志。cups 文件则记录了打印信息的日志,而 dmesg 记录了开机时候内核自检的文件。此外,还有 btmp 以及 lastlog 文件,这两个文件是二进制的形式,我们不能直接打开,前者要用 lastb 命令来查看,后者要用 lastlog 命令来查看。

lastb
lastlog

 lastb 命令输出的是尝试登陆但失败的日志,如果你某一次忘记输入密码,那么你这一次登录的行为可能就被 btmp 文件记录了下来。lastlog 能够列出系统当中所有的用户,包括端口以及 IP

last

           

         rsyslog 是 syslog 的进阶版本,能够取代前者自然是因为 rsyslog 功能更先进,效果更好。目前,除了一些 RPM 包安装服务产生的日志,绝大部分的日志都是由 rsyslog 服务来管理的。通常情况下,rsyslog 在 Linux 系统中均为默认安装。

ps aux | grep rsyslog

        ps aux 用来查看当前正在运行的服务器进程,我们看到返回的结果有两条,这说明在我们的操作系统上 rsyslog 正在运行。

通常情况下,rsyslog 生成的日志由以下格式构成:

  • 时间
  • 产生日志的主机名
  • 产生日志的服务名
  • 时间的具体信息

日志配置

        我们的日志还有相对应的配置文件,通过对配置文件的调整,可以有选择的记录不同的内容。配置文件的默认路径为 /etc/rsyslog.conf。

cat /etc/rsyslog.conf

        conf 文件中的所有内容都由两部分构成,一部分是记录日志的进程,中间的"."是连接符,后面则是日志等级。

连接符:

连接符 描述
. 只记录.后面等级以上的日志
.= 只记录对应等级
.! 除了该等级日志以外,其他都记录

日志等级:

日志等级 描述
debug 一般内容
info 基本通知
notice 重要通知
warning 警告信息
err 错误信息
crit 危险信息
alert 警告信息
emerg 紧急信息

        我们运营一个规模略显庞大的组织的服务器的时候,日志的记录是不可避免,这一部分相应的内容也会在运维人员的工作中占据较大的一部分。但也不必害怕,通过这节课的学习,我们已经了解到了 Linux 上日志的选择性记录,日志等级,日志转发等等常用的操作。同时,我们也看到了日志的格式,以及学会了如何看日志,这些技能对于我们排错十分有帮助。

文本处理三剑客

  • 三剑客简介
  • awk 基础
  • grep 基础
  • sed 基础

如果说 Linux 上有哪几个推荐的文本处理工具,那么我一定毫不犹豫的推荐 awk,grep 和 sed。推荐的理由不仅仅在于他们功能的强大,更在于他们能够和彼此相互配合,实现复杂的文本处理功能。

grep 也是一种强大的文本搜索工具,最常用使用的例子是与 Linux 下面的各种命令结合,例如我们经常用到的查看进程的命令:

下面是 sed 工具,sed 主要是利用脚本来处理文本文件,通常情况下可以通过脚本来大规模的处理大量文件。

grep 的功能主要是从文件中查找过滤出我们需要的内容,常用的命令格式是:

grep [命令] [操作对象]

在这里,我们仍然用 awk.txt 作为例子,来演示 grep 的用法。grep -i 忽略大小写匹配 This。

grep -i This awk.txt

Linux 文件共享 

        ftp 是一个可以追溯到 1970 年的文件传输协议,最初的目的是为了方便在不同的设备上交换文件。但是由于 ftp 采用明文传输,很容易发生中间人攻击,目前 ftp 已经全面由 sftp 替代了。我们经常说的搭建 ftp 服务器,实质上也是在使用 sftp 协议。目前,经常使用的 Linux ftp 工具是 vsftp,这是一个安全且快速的工具。

  • ftp 文件共享简介
  • ftp 服务器搭建
  • ftp 两种工作模式
  • samba 服务器搭建
  • samba 服务器配置

ftp 协议因为传输的不安全性,黑客如果截留了我们的数据包,就有可能直接看到我们的账户密码,乃至于修改文件的内容。而 sftp 采用加密的形式进行文件传输,尽管这可能会耗费一点时间和效率,但是能够提高更高的文件传输安全性。

下面,我们来尝试一下安装 ftp 服务器。

sudo apt update
sudo apt install vsftpd

查看 ftp 服务器端口号

netstat -antup | grep ftp

端口号

接下里,我们给 ftp 服务器添加用户,在创建之前,我们先备份一下默认配置文件,以免出错。

我们还需要关闭防火墙对于 20,21 端口的限制,这两个端口是 ftp 传输协议的默认端口。

Linux 防火墙

防火墙作为一种有效的阻隔计算机流量的工具被广泛使用,它基于一组定义的规则来进行有效的过滤。很多时候,我们既可以把防火墙作为一种用于获取安全性的保护屏障,例如用来缓解 DOS,DDOS 攻击,同时,我们也可以用防火墙来对用户做出筛选,比如对于不同 IP 段的用户呈现不同的内容。

知识点

  • 防火墙简介
  • iptables 基础
  • firewalld 基础
  • 防火墙配置

         防火墙配置了一系列规则来规范流量,允许接受或者发送来自某个端口乃至协议的数据包。你可能经常听说,开放 80 端口,开放 443 端口之类的话语,这就是对防火墙进行配置。iptables 和 firewall 是我们常用的管理防火墙规则的工具。两者都是管理工具,都是对底层流量模块 netfilter 的封装。

iptables 是 Linux 上一个强大且易用的防火墙工具,它不仅可以实现黑名单,白名单控制流量,端口开闭而且可以实现流量转发等等复杂的命令。需要注意的是,在 iptables 上可以设置针对流量的多条规则,这些规则甚至有可能互相违。在 iptables 表中位置越靠上的规则权重越高,权重高的规则可以抵消权重低的规则。

我们经常说 ptables 内部包含四个表,五个链。这四表五链是 iptables 所有操作的基础。但实际上,iptables 还有一个不常用的 security 表,但是这个表我们几乎不做任何修改,所以这个表渐渐被人们遗忘。

filter:一般过滤功能
nat:端口转发功能
mangle:修改特定数据包
raw:实现复杂的高级功能
input:对外部进来的数据包
output:对向外部发送的数据包应用
forward:对转发的数据包应用此规则
prerouting:在被路由接受前的数据包
postrouting:在被路由接受后的数据包

同时,每个表上能够应用的链不一样:

filter input,output,forward
nat prerouting,postrouting,output
mangle prerouting,postrouting,input,output,forward
raw prerouting,output

主要用到的参数:

参数 描述
-A 新增规则
-L 序号形式罗列规则
-D 常常与-L 配合使用,删除指定序号规则

Linux 内核入门

        掌握 Linux 系统的内核,对于系统升值优化,性能优化,软硬件优化都有一定的好处,最重的是,它能够让你看问题看的更加深刻.理解内核能够让你拨开云雾看到本质.但这里并不是说让大家直接去看内核的底层实现这个有着 600 多万行代码的庞然大物.而是我们提炼出其中的重点,了解我们可以对内核做出怎么样的修改.

  • 内核简介
  • 内核信息
  • 内核管理
  • 内核优化

 Linux 系统采用经典的冯诺依曼架构,内核的作用是连接软件和硬件并且充当底层驱动。内核是操作系统的核心,一个内核的好坏直接决定了系统运行的效率以及稳定性。从技术层面上来讲,内核主要发挥了以下作用

  • 充当软件和硬件之间的中间件
  • 管理系统的进程,内存,驱动以及文件
  • 提供了一系列面向操作系统的命令
  • 在应用开发的过程中抽象了相关细节

         内核中提供了一系列基本的功能,例如时钟功能,进程调度功能,它就像在编写代码的时候引入的库文件,程序会调用库中的函数,而软件则会调用内核中实现的基本函数。

        我们可以通过如下命令查看 CPU 的型号以及物理 ID:

root@92446759cc7c:~# cat /proc/cpuinfo | grep "model name" && cat /proc/cpuinfo | grep "physical id"
model name      : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
model name      : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
model name      : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
model name      : Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0

内核管理

/proc/sys 目录下面,这个目录是内核启动后生成的伪目录,里面储存 Linux 系统的内核参数以及配置。

我们首先进入这个目录

cd /proc/sys

        sys 目录下面是我们能够做出修改的内核部分,一般来说,我们需要修改的只有 net 目录下面的内容,其他目录要么和硬件相关,要么和 Linux 系统的架构有关。

Linux 数据同步

作为一个增量备份的工具,rsync 在 Linux 中得到了广泛的应用,最终能够实现两机的文件同步。实际上,除了基本的校验之外,Linux 还提供了文件的校验等等一系列工具。还能够解决本机和目标主机上版本冲突等等问题,这样的操作方法对于云端主机备份有着非常好的效果。

rsync 在同步过程中主要有两部分组成:第一部分是对需要同步的文件的检查,第二部分是文件同步模式的确定。默认情况下,会使用 quick check 模式进行检查。如果读者想要了解更多的细节,可以尝试分析 rsync 的执行过程。在阅读源码的过程中,可以发现,rsync 和 git 工具的模式其实有很多的相似之处。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44120785/article/details/121167449

智能推荐

SyntaxError: Non-ASCII character '\xef' in file server.py on line 18, but no encoding declared_syntaxerror: non-ascii character '\xe3' in file de-程序员宅基地

文章浏览阅读1k次。解决方案:在第一行加入#coding:utf-8注意:一定是在第一行加,python2.7实测可以。_syntaxerror: non-ascii character '\xe3' in file deal.py on line 18, but no e

ffmpeg 从avio_read 到 file_read-程序员宅基地

文章浏览阅读1k次,点赞24次,收藏10次。第一层: aviobuf.c中, AVIOContext对象当家, 这就是pReadCtx.第二层: avio.c中, URLContext 当家, 简记为h.第三层: file.c中, FileContext 对象当家,简记为c.

接口相关配置_tvbox黄源接口9月-程序员宅基地

文章浏览阅读7.3k次。1,相关接口系统配置(1)配置应用服务器,选择YES(2)网关配置点击ping网关,显示status:active则网关正常。(3)点击网关设置属性配置peoplesoft节点配置填写正确的应用程序服务器url,用户id为ps,tools发行版本为开发工具版本,可点击开发工具help,about application designer 查看版本..._tvbox黄源接口9月

素数筛_acm素數篩-程序员宅基地

文章浏览阅读110次。We know what a base of a number is and what the properties are. For example, we use decimal number system, where the base is 10 and we use the symbols - {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. But in different bases we use different symbols. For example in binary _acm素數篩

Appium 自动化测试详解元素定位方式_appium 根据class定位元素driver.find_element(appiumby.cla-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏21次。简介在做UI自动化的时候,有很大一部分精力是在进行定位元素操作,元素定位如果不准确,直接影响自动化的成败和效率环境Appium server :v1.20.2Appium-Python-Client :2.1.2selenium 4.1.0常用的元素定位方式id定位元素class_name定位元素content-desc定位元素name 定位元素 (appium1.5及之后的版本废弃了name属性)xpath定位元素uiautomator定位元素,Android独有id 定_appium 根据class定位元素driver.find_element(appiumby.class_name

Anaconda的python虚拟环境中安装cudatoolkit和cudnn加速tensorflow_conda安装cudatoolkit(1)_虚拟环境中下载cudatoolkit-程序员宅基地

文章浏览阅读811次,点赞25次,收藏11次。大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**_虚拟环境中下载cudatoolkit

随便推点

【Linux命令-转载】nohup 和 & 绝配(让命令在后台执行)-程序员宅基地

文章浏览阅读428次。nohup 的作用可以将程序以忽略挂起信号(SIGHUP)的方式运行。常见的用法是和 & 命令一同使用,将命令放置到后台运行,即使终端挂掉,进程会忽略挂起信号,继续运行。将程序放到后台运行,一般有两种方式:(1)command &:后台运行,关掉终端会停止运行。(2)nohup command & :后台运行,关掉终端也会继续运行。「注意:」(1)如果使用nohup执行程序未显示进行标准输出重定向,则标准输出默认重定向当前工作目录的 nohup.out 文件中。

2003服务器系统QQ安装不了,windows2003server-程序员宅基地

文章浏览阅读957次。windows2003server是一款针对大中型企业而设计的服务器操作系统,拥有32位和64位两种版本,保证了最佳的灵活性和可伸缩性,它支持的应用程序包括:联网、消息传递、清单和顾客服务系统、数据库、电子商务 Web 站点以及文件和打印服务器。有需要的朋友可以到本站进行下载!windows2003server简介:Windows Server 2003 企业版允许通过添加处理器和内存来提高服务器..._qq winserver

最新《市场调研与预测》考试重点_实验内容:根据收集的资料和调查分析的结果,进行战略总体决策,制定预算,运用定位策略,表现策略进行策划-程序员宅基地

文章浏览阅读177次。1.通过实地试验进行调查取得的资料,客观实用,排除人们主观估计的偏差2.调研人员可以针对调研事项的需要进行合理的实验设计,有效的控制实验环境,有意识的使调研对象在相同条件下重复出现,反复进行试验,使调研的结果更加准确3.调研人员可以主动的引起市场因素的变化,并通过控制其变化来研究该因素对市场产生的影响,而不是被动、消极的等待某种现象的发生,这是其他调研法无法做到的。一个实际的市场调研与预测设计的目标并不是一定要形成最精确的信息,而是在一定的成本费用条件下形成最有价值的信息。政府部门的市场调研;_实验内容:根据收集的资料和调查分析的结果,进行战略总体决策,制定预算,运用定位策略,表现策略进行策划,对驴友的需求和特点进行分析,展开创意与文案写作,考虑分析网络新产品和服务项目开发的可能性。

vi一个简单操作_vi a.txt-程序员宅基地

文章浏览阅读399次。进入:打开VIM之后,按一下insert键或者i键就可以进入输入状态了 #vi a.txt退出:退出的时候先按Esc键,出来冒号(:)就可以敲命令, q! 回车 不保存 wq 保存 wq!强制保存并推出(适用与只读文件) x 保存_vi a.txt

vue3 antd pro 框架动态路由_vue3+ant design + ts+pro-程序员宅基地

文章浏览阅读629次。1. 在store/user.ts中,找到 GENERATE_ROUTES_DYNAMIC 方法中调用的方法:generatorDynamicRouter(),此方法在在router/router-guards/router-guards.ts中。2. router/router-guards/router-guards.ts中,通过方法getCurrentUserNav(),获取到个人信息中的菜单,将菜单列表传generator()方法中,此方法将菜单列表处理成路由所需格式的路由数组。_vue3+ant design + ts+pro

【华为云技术分享】敏捷开发落地不实际?原因可能在于你的 IDE 工具_华为云ide问题-程序员宅基地

文章浏览阅读3.5k次。对于企业来说,效率就是一切。开发效率的工程化建设已经开始被各大企业提到技术管理日程中。而且现阶段,无论是框架也好、模板也好,目的都是在为提升代码开发效率而努力。随着云计算的深入,端 + 云的开发模式以及完全云端化的开发模式都先后上线,这些无疑都是在对传统 IDE 开发模式的挑战。云端 IDE,会是未来的趋势吗?云时代下,万物上云正在影响企业研发效率工程化建设万物上云,可以说已经是不可逆..._华为云ide问题

推荐文章

热门文章

相关标签