用一条 Shell 脚本给 Linux 开发环境做一次体检

举报
yd_217917957 发表于 2026/11/06 01:15:05 2026/11/06
【摘要】 换新机器或接手别人的服务器时,先跑一遍环境体检脚本:时间、主机、目录、Python/Node 版本、磁盘内存一次打全。附可直接复制的 Shell 脚本和四个常见坑。

为什么要做这件事

换一台新机器、或者进到一个别人留下的服务器,最常见的问题不是「不会写代码」,而是「不知道这台机器现在是什么状态」。Python 是哪个版本?工作目录在哪?磁盘还有多少?时区对不对?这些信息如果每次靠手敲五六条命令去确认,既慢又容易漏。

这篇短文给出一条可以直接落地的思路:写一个小的体检脚本,把常用检查项一次性打印出来,以后每换一个环境先跑一遍,几十秒就能看清底子。

脚本本身

把下面的内容保存成 check_env.sh,放在项目根目录或 ~/bin 下都可以。

#!/usr/bin/env bash
set -u

echo "===== 环境体检 ====="
echo "时间      : $(date '+%Y-%m-%d %H:%M:%S %Z')"
echo "主机      : $(hostname)"
echo "当前目录  : $(pwd)"
echo "系统      : $(uname -srm)"

if command -v python3 >/dev/null 2>&1; then
  echo "Python    : $(python3 --version 2>&1)"
else
  echo "Python    : 未安装"
fi

if command -v node >/dev/null 2>&1; then
  echo "Node      : $(node --version)"
else
  echo "Node      : 未安装"
fi

echo "磁盘      : $(df -h . | awk 'NR==2 {print $4" 可用 / "$2" 总量"}')"
echo "内存      : $(free -h 2>/dev/null | awk '/Mem/ {print $7" 可用 / "$2" 总量"}')"
echo "===================="

加执行权限后跑一次:

chmod +x check_env.sh
./check_env.sh

在我这边的一台 Linux 容器里,输出是这样的:

===== 环境体检 =====
时间      : 2026-11-06 01:07:30 CST
主机      : devspace
当前目录  : /root/workspace
系统      : Linux 6.1.0 x86_64
Python    : Python 3.11.16
Node      : v20.11.0
磁盘      : 38G 可用 / 50G 总量
内存      : 5.2Gi 可用 / 7.8Gi 总量
====================

几个容易踩的坑

第一,不要用 set -e。体检脚本的定位是「尽量把所有信息都打出来」,某一项命令不存在不应该让整个脚本提前退出。这里用 set -u,只对未定义变量报错,反而能帮你发现自己写错的变量名。

第二,命令存在性要先判断。python、node 这类工具在很多精简镜像里根本没有,直接调用会刷一屏 command not found,反而干扰阅读。用 command -v 判断一下,没有就明确打印「未安装」,信息更干净。

第三,把 2>&1 加上。python3 --version 在部分老版本里是往 stderr 输出的,不重定向就会在日志里丢掉。

第四,时间一定要带时区。服务器时区经常是 UTC,本地是东八区,两者差 8 小时。脚本里用 %Z 把时区名一起打出来,对日志排查很有用——很多「数据对不上」的问题,追到最后其实是时区。

再往前走一步

这个脚本可以很自然地接进日常流程:

  • 放进 CI 的流水线第一步,构建日志开头就带上环境快照,出问题不用再去猜镜像里装了什么。
  • 放进 Docker 镜像的 entrypoint,容器启动时打印一遍,排查「本地能跑、线上不能跑」时非常省事。
  • 用 cron 每天写一份到文件,机器慢慢变化的过程就有据可查。

脚本本身不超过三十行,但它把「先看清环境,再动手」变成了一个不依赖记忆的动作。比起记住一堆零散命令,这更值得长期保留。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。