跳转至

Linux 运维速查指南

速查手册, 持续更新 ~

1. 用户与权限管理

日常协作, 文件权限分配的核心指令:

  • 添加新用户: sudo useradd -m username
    • -m 会自动创建用户主目录 /home/username
  • 设置/修改密码: sudo passwd username
    • username的密码
  • 赋予管理员权限: sudo usermod -aG sudo username (Ubuntu/Debian)
    • 在不改变该用户原有用户组的前提下, 将他追加到 sudo 这个管理员组里
    • usermod: user modify, 修改用户属性
    • -a: append, 追加; -G: group, 指定附加组
  • 修改某用户的主 Shell: sudo usermod -s /usr/bin/fish username
    • username的主shell变成fish
  • 修改文件/目录所有者: sudo chown user:group filename
  • 修改文件权限: chmod 755 filename
    • 拥有者: 读+写+执行
    • 所属组: 读+执行
    • 其他人: 读+执行
  • 递归修改整个目录权限: chmod -R 755 /path/to/dir
    • -R: recursive, 递归所有子文件和子文件夹

2. 系统信息与硬件架构

接手新服务器时的"摸底":

  • 查看系统内核与架构: uname -a (详细) 或 uname -m (仅架构)
  • 查看发行版信息: cat /etc/os-release
  • 查看 CPU 详情: lscpu
  • 实时系统资源监控: htop / btop
  • 查看内存占用: free -h

3. Tmux 会话管理

聚焦"Session Management":

  • 新建并命名会话: tmux new -s <session_name>
  • 离开当前会话 (挂起): 按 Ctrl+b 松开后, 按 d
  • 查看所有现有会话: tmux ls
  • 重新接入会话: tmux attach -t <session_name>
  • 彻底杀死会话: tmux kill-session -t <session_name>
  • 中断tmux所有服务: tmux kill-session

4. 服务进程与排查

以 mihomo 为例

(1) p系列

  • 模糊查找进程:
    • pgrep clash: 搜索并仅显示PID
      Bash
      1
      2
      bxhu@ubuntu ~/p/SaTrinity (starpike) [1]> pgrep clash
      2383825
      
    • ps aux | grep clash: 显示进程具体信息
      Bash
      1
      2
      3
      4
      5
      bxhu@ubuntu ~/p/SaTrinity (starpike)> ps aux | grep clash
      root     2383823  0.0  0.0  16900  7512 pts/0    S+   07:35   0:00 sudo ./clash-linux -d /home/bxhu/.config/mihomo/
      root     2383824  0.0  0.0  16900  2544 pts/2    Ss   07:35   0:00 sudo ./clash-linux -d /home/bxhu/.config/mihomo/
      root     2383825  0.1  0.0 1277384 36132 pts/2   Sl+  07:35   0:04 ./clash-linux -d /home/bxhu/.config/mihomo/
      bxhu     2392455  0.0  0.0   6544  2304 pts/6    S+   08:43   0:00 grep --color=auto clash
      
  • 按PID精准杀死进程: kill -9 <PID> (-9 强制执行)
  • 按名称批量杀死进程: pkill mihomo

(2) systemctl系列

  • 查看某服务运行状况: sudo systemctl status <SERVICE>
  • 重启某服务: sudo systemctl restart <SERVICE>
  • 手动开启/停止某服务: sudo systemctl start/stop <SERVICE>
  • 设置/关闭开机自启某服务: sudo systemctl enable/disable <SERVICE>

5. SSH、SCP 与编辑器远程连接

  • 远程登录: ssh username@ip_address
    • 指定端口: ssh -p <PORT> username@ip_address
  • 配置免密登录:
    • 生成新密钥对, 并将pubkey传到服务器上
      Bash
      1
      2
      3
      4
      # 生成新密钥对: id_ed25519_myserver && id_ed25519_myserver.pub
      ssh-keygen -t ed25519 -C "xxx@xxx.com" -f ~/.ssh/id_ed25519_myserver
      # 将指定公钥传给server: -i 指定 pubkey
      ssh-copy-id -i ~/.ssh/id_ed25519_myserver.pub username@ip_address
      
    • SSH Config 配置文件: vim ~/.ssh/config
      Text Only
      1
      2
      3
      4
      5
      Host lab-server                 # 给服务器起的简称
          HostName 192.168.1.100      # 服务器IP
          User bxhu                   # 登录用户名
          Port 22                     # 登陆端口 (默认22)
          IdentityFile ~/.ssh/id_ed25519_myserver  # 绝对路径指向上述私钥
      
    • 丝滑连接: ssh lab-server
  • SCP
    • 上传文件到服务器: scp /local/file username@ip_address:/remote/path/
    • 下载文件到本地: scp username@ip_address:/remote/file /local/path/
  • VS Code Remote-SSH 快速连接:
    • 在本地 VS Code 安装 Remote-SSH 插件
    • 配置 ~/.ssh/config 文件填入 Host、HostName 和 User 即可
  • SSH 排错神器: ssh -v username@ip_address
    • -v: verbose, 详细模式
  • 本地端口转发: ssh -L 8080:localhost:80 username@ip_address
    • 常用: server上跑了jupyter, 用本地电脑打开链接访问
    • 服务器的 80 端口跑着一个内部管理网页; 你在自己电脑的浏览器里输入 http://localhost:8080, 就能直接访问到服务器内网的 80 端口

6. Docker 容器管理 (防爆盘终极版)

(1) 安装与免 sudo 配置

  • 一键安装: 看 https://docs.docker.com/engine/install/
  • 设置开机自启: sudo systemctl enable --now docker
  • 免 sudo 提权: sudo usermod -aG docker $USER (执行后输入 newgrp docker 生效)

(2) 日志限制配置 (防撑爆硬盘)

修改或创建 /etc/docker/daemon.json, 写入以下内容, 全局限制日志大小:

JSON
1
2
3
4
5
6
7
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

这样一个 node 最多只有 30M 写日志的空间, 不会撑爆

重启生效: sudo systemctl daemon-reload 然后 sudo systemctl restart docker

(3) 镜像与容器高频指令

  • 查看本地镜像: docker images
  • 查看运行状态: docker ps (加 -a 看所有容器)
  • 进入容器内部: docker exec -it <container_name> /bin/bash (或 sh)
  • 查看最新日志: docker logs -f --tail 100 <container_name>

(4) 空间清理

  • 查看 Docker 磁盘占用: docker system df
  • 彻底清理垃圾 (慎用): docker system prune -a --volumes
    • 清理所有停止的容器、未使用的镜像和网络

7. Python 环境管理

  • Conda:
    • 创建环境: conda create -n env_name python=3.10
    • 激活环境: conda activate env_name / conda deactivate
    • 查看环境: conda env list
    • 安装包:
      • conda install <PKT>: 安装包 [默认频道]
      • conda install -c conda-forge <PKT>: 从开源社区频道拉取
    • 换"源":
      • 添加:
        Bash
        1
        2
        3
        4
        5
        6
        # 换tuna源
        conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
        conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
        conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
        # 安装时显示channel
        conda config --set show_channel_urls yes
        
      • 检验:
        Bash
        1
        2
        # 查看当前配置了哪些源
        conda config --show channels
        
    • pip 换"源":
      • 将清华源写入全局配置: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
      • 临时换源, -i 指定: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple <PKT>
  • uv (新一代极速包管理器, see this):
    • 创建环境: uv venv
    • Bash/Zsh 激活: source .venv/bin/activate
    • Fish 激活: source .venv/bin/activate.fish
    • 极速安装依赖: uv pip install <package_name>

8. 网络与端口排查

  • 查看端口被谁占用: lsof -i :8080
    • lsof: list open file
  • 查看所有监听中的端口: sudo ss -tulnp
    • ss: socket statistics
  • 查看服务器网卡与 IP: ip a / ifconfig
  • traceroute + ping: mtr <IP>
    • mtr: my traceroute

9. 磁盘空间与终端快捷键

  • 查看整块磁盘使用率: df -h
    • df: disk free
  • 查看当前目录下各文件夹大小: du -sh * (配合排序: du -sh * | sort -h)
    • du: disk usage
  • 历史命令搜索:
    • Bash/Zsh 用 Ctrl + R
    • Fish Shell 直接输入命令前缀并按

10. Claude Code

官方文档

一行代码安装搞定:

Bash
1
2
3
4
5
# bash. follow official steps
curl -fsSL https://claude.ai/install.sh | bash
# fish. my favorite
curl -fsSL https://claude.ai/install.sh | bash
fish_add_path ~/.local/bin