Linux 运维知识梳理(1)运维基本功

文章目录

一、Linux 操作系统基础

1、Linux 相较于 Windows 系统有哪些优点

① 性能问题:Windows 操作系统性能不如 Linux 系统高。
② 稳定性问题:Linux 系统比 Windows 系统更稳定,可以运行长达几年而不关机。Linux 底层源代码开源。
③ 安全性问题:Linux 系统相较于 Windows 系统更加安全。
④ 远程管理:Windows 远程管理不如 Linux 方便。
⑤ 资源利用率:Windows 较多资源用于图像渲染,资源利用率差,而 Linux 系统大多没有图形化界面。

2、Linux 常见版本分支有哪些

① redhat(企业版)、centos(社区版-最常用)
② ubuntu(个人用户常用)
③ suse、debian
④ 银河麒麟、深度OS、红旗(国产系统)

3、Linux 进程文件存放在那里

Linux 的所有进程都存放在 /proc 目录中,以进程号为目录保存。

4、Linux 如何给系统添加一个新硬盘

Linux 添加新硬盘主要分为三个步骤:硬盘分区、格式化、挂载到目录

首先确定添加的硬盘名称,如下 /dev/sdb 为我新添加的硬盘,还没有分区信息

[root@192 ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009b364

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

① 分区

[root@192 ~]# fdisk /dev/sdb 
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xc7a73831 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n #这里既然我们是要创建一个分区,就用 n 选项。
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p #创建主分区或者扩展分区。默认情况下我们最多可以有 4 个主分区。
分区号 (1-4,默认 1):1 #按需求输入分区编号。推荐使用默认的值 1。
起始 扇区 (2048-20971519,默认为 2048):2048 #输入第一个扇区的大小。如果是一个新的磁盘,通常选择默认值。如果你是在同一个磁盘上创建第二个分区,我们需要在前一个分区的最后一个扇区的基础上加 1。
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):20971519 #输入最后一个扇区或者分区大小的值。通常推荐输入分区的大小。
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):w #保存更改并退出。
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

随后我们可以看到硬盘 /dev/sdb 已经有一个名为 /dev/sdb1 分区了

[root@192 ~]# fdisk -l

磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009b364

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc7a73831

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20969471    10483712   83  Linux

磁盘 /dev/mapper/centos-root:18.2 GB, 18249416704 字节,35643392 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

② 格式化

[root@192 ~]# mkfs.ext4 /dev/sdb1 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2620928 blocks
131046 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

③ 挂载到目录

mount /dev/sdb1 /mnt

可以看到 /mnt 目录已经被挂载了

[root@192 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 898M     0  898M    0% /dev
tmpfs                    910M     0  910M    0% /dev/shm
tmpfs                    910M  9.4M  901M    2% /run
tmpfs                    910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  1.3G   16G    8% /
/dev/sda1               1014M  151M  864M   15% /boot
tmpfs                    182M     0  182M    0% /run/user/0
/dev/sdb1                9.8G   37M  9.2G    1% /mnt

/etc/fstab 文件中添加条目以便永久启动时自动挂载。

/dev/sdb1 /mnt ext4 defaults 0 0

5、Linux 下 /bin 与 /sbin 的区别

  • /bin 目录下存放系统命令,普通用户和 root 用户都可执行。
  • /sbin 保存与系统环境设置相关的命令,只有 root 用户可以使用这些命令来配置环境。

6、Linux 如何切换到上一次的工作目录

  • 使用 cd - 命令可以直接回到上一次的工作目录
  • 使用 cd ~ 命令可以直接回到当前用户的家目录

7、Linux 中延迟关机方法

shutdown -h now # 立即关机
shutdown -h 10 # 十分钟之后关机
shutdown -c # 取消关机计划

8、Linux 中设置主机名方法

可以用 hostnamectl 命令查看当前主机名称。

[root@192 ~]# hostnamectl 
   Static hostname: localhost.localdomain
Transient hostname: 192.168.0.200
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 3e9a06c84a384e72b9bb51b8147906a8
           Boot ID: 6305e4e798664c019add98a765175fcf
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.el7.x86_64
      Architecture: x86-64
  • Transient hostname 为瞬态主机名称:临时主机名称,重启或关机后,名称失效。
hostnamectl --transient set-hostname redis.liuli.com
  • Static hostname 为静态主机名称:关机或者重启,设置的主机名仍然生效。
hostnamectl --static set-hostname redis.liuli.com
  • Pretty hostname 为灵活主机名称:可以设置特殊符号
hostnamectl --pretty set-hostname "liuli's server"

9、Linux 中 swap 分区的作用是什么

swap 就是 Linux 下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是 swap 分区)虚拟成内存来使用,防止系统内存被程序占满,而导致系统卡死。swap 分区大小一般是物理内存的 1-2 倍。
由于 swap 空间是由磁盘划出的,磁盘的读取写入速度都比传统内存条慢,所以性能不强,不推荐长久使用 swap 分区,应及时拓展服务器内存。

二、Linux 文件管理

1、如何快速创建 100 个文件或目录

使用 {开始序号..结束序号} 来设置创建数量

# 创建目录
mkdir {1..100}_dir
# 创建文件
touch file{1..100}

2、不解包查看 tar 包中的内容

tar -tf root.tar

3、往 tar 包中追加文件

tar -uf root.tar 1.txt

4、vim 对文本内容进行替换

# 替换当前行第一个满足条件的
:s/old_word/new_word
# 替换当前行所有满足条件的
:s/old_word/new_word/g
# 整个文本全局替换第一个满足条件的
:%s/old_word/new_word
# 整个文本全局替换所有满足条件的
:%s/old_word/new_word/g

5、vim 显示/取消行号

# 显示
:set nu
# 取消
:set nonu

6、vim 粘贴代码清除逐行累加的缩进

使用 vim 粘贴代码时,会出现逐行叠加的缩进,如下图:
Linux 运维知识梳理(1)运维基本功
使用 set paste 模式,可以解决这种逐行缩进

# 在粘贴代码前
:set paste
# 粘贴完代码后
:set nopaste

7、vim 可视模式下复制粘贴

命令模式下:

  • ctrl + v(可视块)
  • V (可视行)
  • v (可视)

然后按上下左右键选取要复制的内容,y 复制,p 粘贴。

8、vim 可视模式添加、取消注释

待操作文本
Linux 运维知识梳理(1)运维基本功

  • 给 9-17 添加注释
  1. :9 + 回车:光标定位到第九行
  2. ctrl + v:进入可视块模式
  3. 选择 9-17
  4. shift + i: 进入编辑模式
  5. 输入 #
  6. 按两下 ESC 键完成注释
    Linux 运维知识梳理(1)运维基本功
  • 取消 9-17 添加注释
  1. :9 + 回车:光标定位到第九行
  2. ctrl + v:进入可视块模式
  3. 选择 9-17
  4. delete 键删除

9、vim 代码着色设置

# 开启
:syntax on
# 关闭
:syntax off

10、使用 cat 将文件内容合并

cat 1.py 2.py > 3.py

11、more 与 less 区别

  • more 命令读取文件,是一次性将所有文件所有内容加载到内存中,如果文件较大,则有可能会产生卡顿。
  • less 命令是 more 的增强版,加载文件为一点点加载,而不是一次加载完毕。读取大文件时,效率较高。

12、输出重定向

  • >:标准输出重定向:覆盖输出,会覆盖掉原先的文件内容。
  • >>:追加重定向:不会覆盖原始文件内容,会在原始内容末尾继续追加

三、Linux 用户管理

1、用户组

与用户组相关的文件:/etc/group

# 添加 tester 用户组,指定 gid 为 1100
groupadd -g 1100 tester
# 修改 tester 用户组名字为 testgroup
groupmod tester -n testgroup
# 修改 testgroup 用户组 gid 为 1010
groupmod testgroup -g 1010
# 删除 testgroup 用户组
groupdel testgroup

2、用户

与用户组相关的文件:/etc/passwd

tester:x:1001:1100:test user:/home/tester:/sbin/nologin

第一列:tester: 用户名称
第二列: x: 密码占位符
第三列: 1001: uid
第四列: 1100: gid
第五列: test user: 备注信息
第六列: /home/tester: 家目录
第七列: /sbin/nologin: 可以使用的 bash 类型
# 添加用户 tester 指定用户组 gid 为 1100,不允许登录
useradd tester -g 1100 -s /sbin/nologin -c 'test user'
# 查看用户信息
id tester
# 修改 tester 用户名为 testuser,并允许登录
usermod tester -l testuser -s /bin/bash
# 删除用户,-r 参数,同时删除用户家目录 
userdel -r testuser 

3、锁定/解锁用户

# 锁定/禁止 testuser 用户登录
usermod -L testuser
# 解锁/允许 testuser 用户登录
usermod -U testuser

四、Linux 管道符详解

1、标准输入/标准输出/错误输出

| : 前面一个程序的标准输出(stdout)作为后面程序的标准输入(stdin)
Linux 运维知识梳理(1)运维基本功
0:标准输入:程序或命令需要外部的某些程序传递相应的参数,才能正常运行。
1:标准输出:程序或命令正确的输出结果,我们就称之为标准输出。
2:标准错误:程序或命令错误的输出结果,我们就称之为标准错误。

2、管道符功能

# 查找 sshd 进程
ps -ef | grep sshd

# 查找 mysql 安装信息
rpm -qa | grep mysql

# less 组合
cat /etc/my.cnf | less

# 统计 /etc/ 目录下的文件数
ls /etc/ | wc -l

3、xargs 命令拓展

由于很多命令不支持使用管道符来传入参数,所以使用 xargs 命令来拓展管道符的使用,是所有命令都支持管道符。

# ls -l 显示 /etc 目录下的 *.conf 文件
find /etc -name '*.conf' -type f | xargs ls -l

# 删除 /root 目录下 *.py 文件
find /root -name '*.py' | xargs rm -rf {}

五、Linux 网络配置

1、网络相关硬件

  • 集线器(HUB)

共享带宽的设备,采用广播的形式来传输信息,可以实现多台电脑同时使用一个进线接口来上网或组成局域网。

集线器不管有多少个端口,所有端口都共享一条带宽,在同一时刻只能有两个端口传送数据,其他端口只能等待。

运作在 OSI 模型的物理层
Linux 运维知识梳理(1)运维基本功

  • 交换机

独享带宽的设备,能够进行地址学习(mac地址:源端和目标端),采用存储转发的形式来交换报文。

可以隔离冲突域。因为没一个端口都有一个独占的带宽,当两个端口工作时,不影响其他端口工作。

运行在 OSI 模型的数据链路层
Linux 运维知识梳理(1)运维基本功

  • 路由器

一个作用是连通不同的网络,另一个作用是选择信息传送的线路(选路)

选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。

路由器可以在无网络或有网络时可以让几台电脑同时互联,并且进行局域网连接。

运行在 OSI 模型的网络层
Linux 运维知识梳理(1)运维基本功

2、netstat 中的网络状态

Linux 运维知识梳理(1)运维基本功
Linux 运维知识梳理(1)运维基本功

3、VMware 的网络模式

  • 网卡

Linux 运维知识梳理(1)运维基本功

VMnet0:用于虚拟 桥接 网络下的虚拟交换机
VMnet1:用于虚拟 Host-Only 网络下的虚拟交换机
VMnet8:用于虚拟 NAT 网络下的虚拟交换机

VMware Network Adapter VMnet1:Host 用于与 Host-Only 虚拟网络进行通信的虚拟网卡
VMware Network Adapter VMnet8:Host 用于与 NAT 虚拟网络进行通信的虚拟网卡

  • 网络连接

Linux 运维知识梳理(1)运维基本功

桥接模式:桥接网络是指虚拟网卡通过 VMnet0 虚拟交换机和本地物理网卡进行桥接,那么物理网卡和虚拟网卡就相当于处在同一个网段,虚拟交换机就相当于现实网络中的一台交换机。所以想虚拟机也可以连接到互联网中,那么两个网卡的 IP 地址也要设置成同一个网段。
Linux 运维知识梳理(1)运维基本功

NAT 模式:会用到 VMware Network Adapter VMnet8 虚拟网卡,主机上的 VMware Network Adapter VMnet8 虚拟网卡被直接连接到 VMnet8 虚拟交换机上与虚拟网卡进行通信。VMware Network Adapter VMnet8 虚拟网卡的作用仅限于和 VMnet8 网段进行通信,它不给 VMnet8 网段提供路由功能,所以虚拟机虚拟一个 NAT 服务器,使虚拟网卡可以连接到 internet 。VMware Network Adapter VMnet8 虚拟网卡的 IP 地址是在安装 VMware 时系统指定生成的,我们尽量不要修改这个数值,否则会使主机和虚拟机无法通信。
Linux 运维知识梳理(1)运维基本功

Host-Only 模式:虚拟网络是一个全封闭的网络,它唯一能访问的就是物理真机。主机和虚拟机之间的通信是通过 VMware Network Adapter VMnet1 虚拟网卡来实现的。Linux 运维知识梳理(1)运维基本功

4、网卡基本信息

# ifconfig 
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.11  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::4d30:ec98:587b:cc03  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:18:89:d9  txqueuelen 1000  (Ethernet)
        RX packets 63102974  bytes 33626145608 (31.3 GiB)
        RX errors 0  dropped 14  overruns 0  frame 0
        TX packets 36389113  bytes 147282307107 (137.1 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
inet 192.168.1.11: 代表 ens192 网卡的 ip 地址
netmask 255.255.255.0: 子网掩码,一般为 255.255.255.0
broadcast 192.168.1.255: 广播地址

5、网卡配置文件

网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens192

# 网络类型,Ethernet 以太网
TYPE="Ethernet"
# IP 的获取方式,dhcp 代表自动获取,static/none 代表手动设置
BOOTPROTO="none"
# 启动默认路由
DEFROUTE="yes"
# 不启用 ipv4 错误检测
IPV4_FAILURE_FATAL="no"
# 网卡的名称
NAME="ens192"
# 网卡的唯一 UUID 编号
UUID="9c6f674b-ecd2-4ed0-bde2-415d55fc9f5b"
# 设备名称
DEVICE="ens192"
# 网卡是否开机启动,no 表示不启动
ONBOOT="yes"
# 手动设置网卡的 IP 地址
IPADDR="192.168.1.11"
# 手动设置网卡的网关地址
GATEWAY="192.168.1.1"
# 手动设置网卡的 DNS 服务器地址
DNS1="192.168.1.1"

6、systemctl 控制网卡状态

# 查看网络状态
systemctl status network
# 开启网卡
systemctl start network
# 关闭网卡
systemctl stop network
# 重启网卡
systemctl restart network

7、查看网卡是否插好

[root@localhost ~]# ethtool ens33
Settings for ens33:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: off (auto)
	Supports Wake-on: d
	Wake-on: d
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes

8、路由表

交换、路由、路由表的概念

  • 交换是指同网络访问(两台机器连接在同一交换机上,配置同网段的不同 IP 即可互相访问)
  • 路由就是跨网络访问(路径选择)
  • 路由表是记录路由信息的表,在 Linux 中首先是一张可见的,可更改的表,它的作用就是当数据表发送到 Linux 的时候,内核就根据这张表中记录的信息,来决定数据包接下来该怎么走

查看路由表信息

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 ens33
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
Destination: 目标网络
Gateway: 网关
Genmask: 子网掩码
Flags: 路由标志,U 启动状态,UG 该网关为路由器
Iface: 网卡

路由表编辑

# 增加一个默认网关
route add default gw 192.168.2.1 
# 删除默认网关
route del default gw 192.168.2.1 
# 增加一条到达网络
route add -net 192.168.1.0/24 dev ens33
# 删除一条到达网路
route del -net 192.168.1.0/24 dev ens33

六、Linux 系统服务

1、CentOS 6 与 CentOS 7 系统管理命令的区别

  • CentOS 6 使用 service 管理(启动/停止/重启/查看)系统服务,chkconfig 来设置开机自启/关闭。
  • CentOS 7 使用 systemctl 管理(启动/停止/重启/查看/开机自启/开机关闭)系统服务。

2、systemctl 命令详解

# 列出所有系统服务
systemctl list-units --type service --all
# 仅列出启动的系统服务
systemctl list-units --type service
# 启动 sshd 服务
systemctl start sshd.service
# 停止 sshd 服务
systemctl stop sshd.service
# 查看 sshd 服务状态
systemctl status sshd.service
# 重载 sshd 服务
systemctl reload sshd.service
# 设置 sshd 服务开机自启
systemctl enable sshd.service
# 取消 sshd 服务开机自启
systemctl disable sshd.service

3、CentOS 7 下软件的安装方式

  1. RPM 软件安装包 ==> 软件名.rpm
  2. YUM 包管理器 ==> yum install -y 软件包名
  3. 源码安装 ==> 下载软件源码 → 编译 → 安装 (操作负责但是稳定)

4、RPM 包管理器

  • 查找系统中已安装的 mysql 软件包
rpm -qa | grep mysql
-q:query,查询操作
-a:all,代表所有
  • 卸载已安装的 mysql 软件包
rpm -e mysql --nodeps
--nodeps:强制卸载
  • 安装 mysql 软件包
rpm -ivh mysql.rpm
-i:install,安装
-v:显示进度条
-h:以 '#' 形式显示进度条
  • 升级 mysql 软件包
rpm -Uvh mysql5.7.rpm
-U:Update,升级
  • 查找文件所属那个软件包
rpm -qf /etc/my.cnf
  • 查询安装完成后生成了那些文件
rpm -ql mysql-community-server
配置文件类:/etc
使用手册类:/usr/share/doc
二进制程序:/usr/bin 或 /usr/sbin

5、ntpd 时间同步服务

ntp 服务器池:http://www.ntp.org.cn/pool

# 手动同步
ntpdate cn.ntp.org.cn
# 自动同步
systemctl start ntpd.service
systemctl enable ntpd.service

6、firewalld 防火墙

  • 区域

firewalld 防火墙增加了区域(zone)的概念,类似于预设的策略模版,可以根据不同的使用场景选择区域模版。CentOS 7 默认使用 public 区域。

区域 默认策略
trusted 允许所有数据包
home 拒绝流入的流量,除非与流出的流量相关,允许 ssh,mdns,ippclient,amba-client,dhcpv6-client
Internal 与 home 相同
work 拒绝流入的流量,除非与流出的流量相关,允许 ssh,ippclient,dhcpv6-client
public 拒绝流入的流量,除非与流出的流量相关,允许 ssh,dhcpv6-client
external 拒绝流入的流量,除非与流出的流量相关,允许 ssh
dmz 拒绝流入的流量,除非与流出的流量相关,允许 ssh
block 拒绝流入的流量,除非与流出的流量相关,非法流量采取拒绝操作
drop 拒绝流入的流量,除非与流出的流量相关,非法流量采取丢弃操作
  • 运行模式和永久模式

运行模式:此模式下,配置的防火墙规则立即生效,但是不写入配置文件,重启后失效。firewalld 默认采用此模式。
永久模式:此模式下,配置的防火墙规则写入配置文件,但是需要 reload 加载才能生效。

  • firewall-cmd 管理工具
# 查看默认使用的区域
[root@localhost ~]# firewall-cmd --get-default-zone 
public

# 查看所有支持的区域
[root@localhost ~]# firewall-cmd --get-zones 
block dmz drop external home internal public trusted work

# 列出当前使用的区域配置
[root@localhost ~]# firewall-cmd --list-all
public (active)		# 当前使用的区域
  target: default
  icmp-block-inversion: no	# 服务器 IP 是否禁 ping
  interfaces: ens33	# 防火墙规则适用的网卡
  sources: # 来源 IP
  services: dhcpv6-client ssh # 防火墙放行的服务
  ports: # 端口
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: # 放行规则
  • 添加允许通过的服务或端口 ☆

① 添加服务

firewalld 支持的服务在 /usr/lib/firewalld/services/ 目录中,如果不存在,可以自己添加文件。

将 http 服务添加到防火墙规则中

# 1)运行模式(立即生效,重启失效)
firewall-cmd --zone=public --add-service=http
# 2)永久模式(reload 后生效,永久有效)
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

将 http 服务从防火墙规则中移除

# 1)运行模式(立即生效,重启失效)
firewall-cmd --zone=public --remove-service=http
# 2)永久模式(reload 后生效,永久有效)
firewall-cmd --zone=public --remove-service=http --permanent
firewall-cmd --reload

② 添加端口

添加 80 端口到防火墙规则中

# 1)运行模式(立即生效,重启失效)
firewall-cmd --zone=public --add-port=80/tcp
# 2)永久模式(reload 后生效,永久有效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

将 80 端口从防火墙规则中移除

# 1)运行模式(立即生效,重启失效)
firewall-cmd --zone=public --remove-port=80/tcp
# 2)永久模式(reload 后生效,永久有效)
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --reload

7、crond 定时任务

在指定的时间,进行指定的操作

crontab [选项]
-l: list,显示当前已经设置的计划任务
-e: 使用 vim 编辑计划任务的文件

命令规则

使用的命令要使用命令的完整路径,可以使用 whereis 查找完整路径

[root@localhost ~]# whereis echo
echo: /usr/bin/echo

时间规则

*    *    *    *    *    program
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

符号规则

* : 表示取值范围内的任意一个数字
- : 做连续区间表达式,要想表示 1 至 7,则写 1-7
/ : 表示多少次,比如想每 10 分钟执行一次,则在分钟位置写:*/10
, : 表示取多少值,比如想在 1 点,2 点,6 点执行,则在小时的位置写:1,2,6

计划任务文件

# 计划任务文件
/var/spool/cron/用户名文件
# 计划任务日志文件
/var/log/cron

8、at 一次性任务

# 查看是否在运行
systemctl status atd
# 如果没有该服务则安装
yum install -y at

示例

  • 三天后的下午五点执行 /bin/ls 命令
[root@localhost ~]# at 5pm+3 days
at> /bin/ls
at> <EOT>  # ctrl + d 退出
job 1 at Thu Oct 14 17:00:00 2021
  • 明天 17 点 ,输出内容到指定文件
[root@localhost ~]# at 17:00 tomorrow
at> echo '123' > /root/1.txt 
at> <EOT>
job 2 at Tue Oct 12 17:00:00 2021

查询已设定的 at 任务

[root@localhost ~]# atq 
1	Thu Oct 14 17:00:00 2021 a root
2	Tue Oct 12 17:00:00 2021 a root

删除指定的 at 任务

atrm 任务号

七、Linux 进程管理

1、查看 CPU 的核数

grep 'core id' /proc/cpuinfo | sort -u | wc -l

2、进程的优先级

PR:数值越小,优先级越高
NI:NICE 优先级,数值越小,优先级越高(范围:-20 ~ 19,默认是 0)

3、top 快捷键

P: 将进程按照 CPU 使用率,从高到低排序
M: 将进程按照 内存 使用率,从高到低排序
c: 显示进程的详细命令
q: 退出 top 界面
上一篇:2021-10-15


下一篇:IRremoteESP8266库 红外控制空调方法