LInux基础学习笔记八

什么是RAID,有几种类型,其原理是什么
  • RAID (独立磁盘冗余阵列)是一种将多个磁盘驱动器组合成一个逻辑单元的数据存储虚拟化技术,以提高性能、可靠性或两者兼顾。

复制代码
 | RAID类型  |           特点            |
 |---------|-------------------------|
 | RAID 0  | 条带化,提升性能,无冗余,任一盘坏数据全无   |
 | RAID 1  | 镜像,完全备份,读性能高,存储利用率低     |
 | RAID 5  | 至少3块盘,条带+奇偶校验,平衡性能和冗余   |
 | RAID 6  | 类似RAID 5,但双重校验,可容忍两块盘坏  |
 | RAID 10 | RAID 1+0,先镜像再条带,性能和冗余兼具 |
什么是防火墙,Linux下有哪些防火墙
  • 防火墙是一种网络安全系统,用于监控和控制进出计算机或网络的数据流。

  • iptables:传统命令行防火墙工具

    nftables:iptables后继者,功能更强

    firewalld:基于zone概念的服务型防火墙(CentOS常用)

    ufw:Ubuntu上默认简单防火墙前端工具

如何清空iptables中的所有规则
复制代码
 ```bash
 sudo iptables -F         # 清空所有链的规则
 sudo iptables -X         # 删除用户自定义链
 sudo iptables -t nat -F  # 清空nat表
 sudo iptables -t nat -X
 ```
添加一个规则,禁止所有地址访问服务器的80端口,测试是否生效
复制代码
 ```bash
 sudo iptables -A INPUT -p tcp --dport 80 -j REJECT
 ```
  • 测试方法:

    在其他主机执行:

复制代码
 ```bash
 curl http://A_IP
 #如果连接失败或被拒绝,说明生效
 ```
iptables规则是按顺序全部执行还是匹配到就结束?
  • 按顺序匹配一旦匹配成功就停止执行后续规则。
如果要拒绝所有地址访问,但是允许指定的地址访问,那么拒绝的规则应该放在第几条
  • 允许规则要放在前面,拒绝规则放后面

    bash 复制代码
    # 允许某IP
    sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
    # 拒绝所有
    sudo iptables -A INPUT -j REJECT
如何调整iptables规则的顺序
  • 使用iptables -I命令可以在特定位置插入规则,例如:

    bash 复制代码
    iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT
    #在INPUT 链的第 2 个位置插入允许 22 端口的规则
如何单独删除某条iptables规则
  • 使用iptables -D命令删除特定规则,需要指定规则号

    bash 复制代码
    iptables -D INPUT 2
准备2台虚拟机,A和B,在A机器上生成密钥,并配置让A可以使用密钥免密登录到B机器
  • 在A上

复制代码
 ```bash
 ssh-keygen                # 一路回车
 ssh-copy-id user@B_IP    # 输入B的密码
 ```
复制代码
 ```bash
 ssh user@B_IP             # 无需密码登录
 ```
复制代码
###### 如何从A机器上复制一个文件或目录到B机器

* 可以使用scp命令

*

  ```bash
  scp a.txt hjc@192.168.163.80:download
  #把A中a.txt文件复制到192.168.163.80的download中
  ```
复制代码
###### 如何使用sync同步A机器上的目录到B机器

*

  ```bash
  sync
  ```

* rsync

  ```bash
  rsync -avz /path/to/dir/ user@B_IP:/path/to/target/
  ```
复制代码
###### 如何设置同步时,保持目录一致,比如A机器原始目录中删除了文件同时也会删除B机器同步目录中的对应文件

* 使用rsync命令中的delete

  ```bash
  rsync -avz --delete /path/to/dir/ user@B_IP:/path/to/target/
  ```
复制代码
###### 如何设置同步时,A机器原始目录中删除文件,但是B机器同步目录中会保留文件

* **不加 `--delete`** 参数即可,默认不会删除目标文件。
复制代码
###### 每隔几秒创建一个以当前时间命名的文件,比如20250623110833.txt

* 使用`while true`循环和`date`命令:

  ```bash
  while true; do date +%Y%m%d%H%M%S | tee "$(date +%Y%m%d%H%M%S).txt"; sleep 5; done
  #or
  while true; do
    date +%Y%m%d%H%M%S > "$(date +%Y%m%d%H%M%S).txt"
    sleep 5
  done
  ```
复制代码
###### 将一个目录打包,生成一个以当前时间命名的压缩包,比如将/etc目录打包为etc_20250623110833.tgz

* 使用tar命令和date命令:

```bash
tar -czvf etc_$(date +%Y%m%d%H%M%S).tgz /etc
```
复制代码
###### 如何查看进程的当前工作目录

*

  ```bash
  ls -l /proc/<pid>/cwd
  #查看PID方法:
  ip aux
  top  
  htop#功能更多彩色界面
  pstree#树状图展示
  ```
复制代码
###### 如何查看某个端口被哪个进程占用

```bash
sudo lsof -i :80
# 或
sudo netstat -tulnp | grep :80
```
复制代码
###### 如何查看某个文件被哪个进程占用

```bash
lsof <file>
```
复制代码
###### lsof有哪些功能

`lsof`是一个列出当前系统打开文件的工具,它可以显示打开的文件、设备、网络文件系统等信息
复制代码
###### /proc目录有什么作用

* `/proc`是一个虚拟文件系统,包含了系统运行时的信息,如进程信息、系统配置、硬件信息等
复制代码
###### apt如何卸载软件包,如何查找软件包,如何安装指定版本的软件包,如何锁定软件包版本(不会自动升级)

|   操作    |             命令             |
|---------|----------------------------|
| 卸载      | `sudo apt remove 软件名`      |
| 卸载及配置清理 | `sudo apt purge 软件名`       |
| 查找      | `apt search 软件名`           |
| 安装指定版本  | `sudo apt install 软件=版本`   |
| 锁定版本    | `sudo apt-mark hold 软件名`   |
| 解除锁定    | `sudo apt-mark unhold 软件名` |