标签: Linux

  • Debian12为 history 命令添加时间戳显示

    1. 修改 ~/.bashrc 让 history 命令显示时间

    1. 编辑 ~/.bashrc 文件

    在终端执行以下命令,打开 ~/.bashrc 配置文件:

    nano ~/.bashrc
    1. 添加 HISTTIMEFORMAT 变量

    ~/.bashrc 文件末尾添加以下内容:

    # Histroy display time
    export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  "

    这行代码的作用:

    • HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " —— 让 history 以 YYYY-MM-DD HH:MM:SS 的格式显示时间。

    如果你希望存储更多的历史命令,还可以添加:

    # 设置 history 命令记录的条数
    export HISTSIZE=10000
    export HISTFILESIZE=20000
    • HISTSIZE=10000 —— 设置 history 缓存 10,000 条命令(当前会话)。
    • HISTFILESIZE=20000 —— 让 .bash_history 文件最多存储 20,000 条记录。

    2. 使更改生效

    在终端执行以下命令,让 .bashrc 立即生效:

    source ~/.bashrc

    3. 测试

    执行 history 命令,检查是否显示时间:

    history

    如果输出结果前面出现了时间戳,说明已生效:

      1  2025-03-14 11:00:01  ls
      2  2025-03-14 11:05:32  ls

  • Debian 12 上禁用密码登录并配置 SSH 密钥登录

    在 Debian 12 上禁用密码登录并配置 SSH 密钥登录(使用 ed25519)

    1: 生成 SSH 密钥对

    首先,在本地机器上生成一个 ed25519 类型的 SSH 密钥对。打开终端并执行以下命令:

    ssh-keygen -t ed25519 -C "[email protected]"
    • -t ed25519 指定生成 ed25519 密钥。
    • -C 用于添加一个注释,通常使用电子邮件或用户名。

    系统会提示你选择密钥存储的位置:

    Enter file in which to save the key (/home/your_user/.ssh/id_ed25519):

    你可以直接按回车选择默认位置,也可以指定一个不同的文件名。接着会要求输入一个密码来保护私钥(可以选择为空)。

    2: 将公钥复制到 Debian 12 服务器

    将生成的公钥复制到 Debian 12 服务器上。在本地机器上执行以下命令:

    ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your_debian_server_ip
    • ~/.ssh/id_ed25519.pub 是你生成的公钥路径。
    • user@your_debian_server_ip 是你 Debian 12 服务器的用户名和 IP 地址。

    该命令会将公钥复制到目标服务器的 ~/.ssh/authorized_keys 文件中,确保你可以使用私钥登录服务器。

    3: 禁用密码登录

    登录到 Debian 12 服务器(假设你已经能够通过密钥登录),然后修改 SSH 配置文件来禁用密码登录。

    1. 打开 /etc/ssh/sshd_config 配置文件:
    sudo nano /etc/ssh/sshd_config
    1. 查找以下两行并修改或确保它们如下所示:
    PasswordAuthentication no
    ChallengeResponseAuthentication no

    这些设置将禁用密码认证和挑战响应认证。

    1. 确保以下行未被注释掉,并设置为 yes
    PubkeyAuthentication yes
    1. 保存文件并退出编辑器(在 nano 中按 CTRL + X,然后按 Y 保存更改)。

    4: 重新启动 SSH 服务

    修改配置文件后,需要重新启动 SSH 服务以使更改生效:

    sudo systemctl restart sshd

    5: 测试 SSH 密钥登录

    在本地机器上,尝试使用 SSH 密钥登录到服务器:

    ssh -i ~/.ssh/id_ed25519 user@your_debian_server_ip

    如果成功登录且没有要求输入密码,说明密钥认证配置成功。

    6: 确保只有密钥登录

    为了进一步加强安全性,你可以尝试使用 SSH 密码登录进行连接。应该会被拒绝,确保只有密钥能够登录。

  • Debian12 启用BBR算法提升网络性能

    在 Debian 12 上启用 BBR 以优化网络连接

    BBR(Bottleneck Bandwidth and Round-trip propagation time)算法可以显著提升网络性能,特别是在高延迟或丢包环境下。通过启用 BBR,您可以优化带宽利用率,减少延迟,并提高稳定性。

    BBR 的优势:

    • 提升速度: 优化带宽利用率,加快数据传输。
    • 降低延迟: 减少数据包丢失,改善响应速度。
    • 增强稳定性: 适应复杂网络环境,提供更可靠的连接。

    操作步骤:

    1. 配置 BBR

    执行以下命令,将 BBR 配置添加到系统配置文件:

    echo "net.core.default_qdisc=fq" | tee -a /etc/sysctl.conf
    echo "net.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.conf

    说明:

    • net.core.default_qdisc=fq:设置队列规则为 fq,优化 BBR 性能。
    • net.ipv4.tcp_congestion_control=bbr:启用 BBR 拥塞控制算法。

    2. 重新加载配置

    运行以下命令,使配置立即生效:

    sysctl -p

    3. 验证 BBR 是否生效

    执行以下命令,验证 BBR 是否启用:

    sysctl net.ipv4.tcp_congestion_control

    如果输出为 net.ipv4.tcp_congestion_control = bbr,则表示 BBR 已成功启用。

    您还可以使用以下命令查看系统可用的拥堵算法和当前使用的算法:

    sysctl net.ipv4.tcp_available_congestion_control

    4. 验证 BBR 内核模块

    为了确认 BBR 内核模块是否已加载,可以运行以下命令:

    lsmod | grep bbr

    如果返回 tcp_bbr,则表示 BBR 已成功加载。

  • 搭建 MinIO 私有云存储并配置 Joplin 同步

    搭建一个私有的云存储服务基于 MinIO,Joplin客户端配置S3进行笔记同步。这种方法简化了 MinIO 的部署和管理,并提供了一个安全、可靠且私有的笔记同步解决方案。

    新版 MinIO 社区版已经移除了大部分 Web UI 管理功能(例如用户、权限、桶管理等),现在需要通过命令行工具 mc 操作,对我们来说使用起来不太方便。

    可以选择minio/minio:RELEASE.2025-04-22T22-12-26Z 版本,主要是为了保留其功能完整的 Web 管理控制台。

    安装MinIO

    1. 创建 docker-compose.yml 文件

    services:
      minio:
        image: minio/minio
        container_name: minio
        ports:
          - "9000:9000"
          - "9001:9001"
        volumes:
          - ./minio/data:/data
        environment:
          MINIO_ROOT_USER: qixinlee
          MINIO_ROOT_PASSWORD: qixinlee.com
        command: server /data --console-address ":9001"
        restart: always

    重要提示:

    • 立即修改默认用户名和密码! 为了安全,请将 YOUR_ACCESS_KEYYOUR_SECRET_KEY 替换为你自己生成的强密码。

    2. 启动容器

    运行以下命令启动 MinIO 容器:

    docker compose up -d

    这会在后台启动 MinIO 容器。 使用 docker-compose logs minio 查看日志,确保没有错误。

    3. 访问 MinIO 控制台

    • 打开你的浏览器,访问 http://YOUR_IP:9001 (将 YOUR_IP 替换为运行 MinIO 服务器的 IP 地址)。
    • 使用你设置的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 登录。

    4. 在MinIO 控制台创建 Bucket

    • 登录后,单击 Buckets -> Create Bucket
    • 输入存储桶名称(例如,joplin-sync),然后单击 Create Bucket
    • 可以选择设置存储桶的对象锁定(Object Locking),防止意外删除。
    • 重要提示: 创建Bucket后,强烈建议配置Bucket策略,限制对Bucket的访问。

    5. 创建密钥信息

    在控制台 选择 Access Key 创建密钥

    Joplin 同步设置

    1. 同步信息设置

    • 在 Joplin 中,进入 工具 (Tools) -> 选项 (Options) -> 同步 (Synchronization)
    • 同步目标 (Synchronization target): 选择 S3
    • S3存储桶 (S3 bucket): joplin-sync (你创建的存储桶名称)
    • S3 URL (S3 URL): http://YOUR_IP:9000 (将 YOUR_IP 替换为运行 MinIO 服务器的 IP 地址)。
    • S3 区域 (S3 region): qixinlee(这个值不重要,因为 MinIO 不依赖于真正的 AWS 区域。 可以填任意值)
    • S3 访问密钥 (S3 access key ID): 你创建的 Access Key
    • S3 密钥 (S3 secret access key): 你创建的 Secret Key

    2. 测试和同步

    配置完成后,可以通过 同步 测试确保 Joplin 客户端与 MinIO 配置正常。建议首先同步少量数据,确保没有问题后再进行完整同步。

  • Debian 12 导出Docker 镜像并导入到没有互联网的 Docker 主机

    在有互联网的主机上:

    1. 列出镜像:

    docker images

    输出可能如下所示:

    REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
    my-app        latest    abcdef123456   2 weeks ago     500MB
    ubuntu        20.04     fedcba987654   3 weeks ago     200MB

    2. 导出 my-app:latest 镜像:

    导出单个镜像

    docker save -o my-app.tar my-app:latest

    导出多个镜像: 如果需要导出多个镜像,可以一次性完成

    docker save -o all-images.tar image1:tag1 image2:tag2 image3:tag3

    在无互联网的主机上:

    1. 将 my-app.tar 复制到 /root 目录。

    2. 导入镜像:

    docker load -i /root/my-app.tar

    3. 验证导入:

    docker images

    应该会看到 my-app:latest 镜像出现在列表中。

  • DD命令测试硬盘读写速度

    1. 测试硬盘写入速度

    使用 dd 命令将随机数据写入硬盘并计算写入速度:

    dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 oflag=direct
    
    • if=/dev/zero: 输入文件是 /dev/zero,这会生成零字节。
    • of=/tmp/testfile: 输出文件路径,即测试写入数据的目标文件。
    • bs=1M: 设置块大小为 1MB。
    • count=1024: 写入 1024 块(即 1024MB = 1GB)。
    • oflag=direct: 禁用文件系统缓存,进行原始写入操作。

    完成后,它会显示写入速度。

    2. 测试硬盘读取速度

    使用 dd 命令读取数据并计算读取速度:

    dd if=/tmp/testfile of=/dev/null bs=1M count=1024 iflag=direct
    
    • if=/tmp/testfile: 输入文件是先前创建的测试文件。
    • of=/dev/null: 输出数据丢弃,不保存。
    • bs=1M: 设置块大小为 1MB。
    • count=1024: 读取 1024 块(即 1024MB = 1GB)。
    • iflag=direct: 禁用文件系统缓存,进行原始读取操作。

    3. 清理测试文件

    rm -f /tmp/testfile