Skip to content

Linux 初始入手与实战更新指南 ​

目标:以小白视角,按照真实业务运维的先后顺序,手把手带你完成从登录服务器到搞定程序更新与排障的全过程。


第一阶段:环境摸底 (刚拿到服务器该看啥) ​

当你第一次通过 SSH 登录一台陌生的 Linux 服务器,先不要急着敲复杂的命令,按顺序完成这三项“体检”。

1. 搞清楚这是谁的地盘 (系统版本) ​

  • 操作命令:cat /etc/os-release
  • 白话解释:这就像是右键“此电脑”看属性。
  • 你应该看什么:
    • PRETTY_NAME="Ubuntu 22.04.3 LTS":看到这个,你就知道后续安装软件要用 apt。
    • 如果是 CentOS,则使用 yum。
  • 避坑指南:如果你发现命令前面提示 Permission denied,在命令前加 sudo(如 sudo cat ...),这相当于 Windows 的“以管理员身份运行”。

2. 看看磁盘还有没有位置 (空间检查) ​

  • 操作命令:df -h
  • 参数详解:-h 代表 "Human-readable",把字节转成你能看懂的 GB/MB。
  • 你应该看什么:
    • 看 Use% 这一列。如果 /(根目录)或者 /data 已经到了 90% 以上,这时候更新程序很可能会失败。
  • 进阶命令:du -sh /app/* (查看 /app 目录下每个文件夹分别占了多大空间,找“大头”)。

3. 看看谁在“吃”性能 (资源监控) ​

  • 操作命令:htop
  • 作用:这就是 Linux 版的“任务管理器”。
  • 操作技巧:
    • 按 F6 可以按内存(MEM%)或 CPU 排序。
    • 看到某个进程红了,记住它的 PID(进程 ID)。
    • 按 q 退出。

第二阶段:应用程序更新实战 (搬运工的自我修养) ​

更新程序通常涉及:传包 -> 备份旧版 -> 替换新版 -> 重启。

1. 准备与解压更新包 ​

通常你会用宝塔或 FTP 把包传到 /tmp 或 /data/transfer。

  • 解压命令:tar -zxvf package.tar.gz -C /app/new_version/
  • 参数白话:
    • -z:处理 gzip 压缩文件。
    • -x:从包里提取文件。
    • -v:把解压的文件名刷出来给你看,让你知道没卡住。
    • -f:指定文件名。
    • -C:解压到指定目录。

2. 安全备份 (防手抖第一准则) ​

在 Linux 下没有“撤销”键,覆盖前必须备份。

  • 操作命令:cp -r /app/website /app/backup/website_$(date +%Y%m%d_%H%M)
  • 白话解释:把 /app/website 整个文件夹复制到备份目录,并自动在文件名后加个时间戳(如 website_20260922_1830)。
  • 检查备份:ls -lh /app/backup/ 确认文件夹确实在那儿。

3. 执行覆盖更新 ​

  • 操作命令:sudo cp -rf /app/new_version/* /app/website/
  • 参数详解:-f 代表强制覆盖,不再一个个问你“是否确认”。
  • 权限修正:更新完后,如果程序跑不起来,可能是权限变了。
    • sudo chown -R www:www /app/website (把所有者改回 Web 用户)。

第三阶段:Docker 容器管理 (现代部署核心) ​

如果你负责的项目(如 BigDataTrainNet10)跑在 Docker 里,这几招是必杀技。

1. 确认容器活没活着 ​

  • 操作命令:docker ps
  • 看什么:
    • STATUS:如果是 Up 2 hours 说明很健康;如果是 Restarting... 说明程序在崩溃重启。
    • PORTS:看外部端口(如 8080)是否正确映射到了内部。

2. 容器镜像一键更新 ​

如果你有 docker-compose.yml,更新最快的方式:

bash
# 1. 拉取/构建最新镜像并启动,-d 代表后台运行
docker compose up -d --build neat-api
  • 小白提示:这个命令会自动帮你停止旧容器、删掉它、用新代码起个新容器。

3. 进入容器“内部”看看 ​

有时候你需要进容器查配置文件。

  • 操作命令:docker exec -it neat-api /bin/bash
  • 退出:输入 exit 回到宿主机。

第四阶段:深度排障 (如何优雅地看日志) ​

程序报错了,不要瞎猜,去日志里找证据。

1. 实时“监控”日志 (盯着看) ​

  • 操作命令:tail -f /app/logs/api-error.log
  • 场景:你一边在浏览器点按钮,一边看终端里的日志跳动,报错会瞬间弹出来。

2. 定向“抓取”关键错误 ​

  • 操作命令:grep -n -C 5 "SQLConnectionError" /app/logs/api.log
  • 白话详解:
    • -n:告诉我错误在第几行。
    • -C 5:显示报错行前后各 5 行的内容,因为报错堆栈通常在关键句后面。

3. 检查服务自启动状态 ​

如果没用 Docker,程序是作为服务运行的:

  • 操作命令:sudo systemctl status neat-api.service
  • 看什么:Active: active (running) 代表绿灯;failed 代表红灯,下面会直接显示最后的报错原因。

避坑与生存小贴士 (小白必读) ​

  1. Tab 键是你的手指延伸:输入路径时多按 Tab,如果它不自动补全,说明你路径写错了,提前发现错误。
  2. Ctrl + C 是万能制动:日志刷屏停不下来?命令卡住了?按它。
  3. rm -rf 是地雷:除非你百分之百确定,否则永远不要用它。推荐先用 mv 把要删的东西移到 /tmp,确认没问题了过两天再清。
  4. 修改配置必留后路:
    • sudo cp config.json config.json.bak
    • 改错了直接 mv config.json.bak config.json 秒级回滚。

Generated by Ark Gardener - 让 Linux 运维像 Windows 一样有迹可循。

方舟 · Ark