跳转到内容
实战指南raspberry-pi

Raspberry Pi 每日系统巡检脚本

创建一个普通用户可运行的 Bash 脚本,把网络、内核、磁盘、内存、运行时间和温度追加到私有日志。

状态
已审阅
难度
入门
风险
会改变系统
平台
raspberry-pi · raspberry-pi-os

把多条只读检查命令组织成一个 Bash 脚本。每次运行都向当天日志追加一段结果;日志默认仅当前用户可读写。

  • Raspberry Pi OS 已提供 Bash 与常用系统命令。

  • 当前用户可写入自己的家目录,不需要 sudo

  • 日志可能包含局域网地址、系统版本和资源使用信息,只保存在本机,不直接发布。

  • 先确认解释器:

    Terminal window
    command -v bash
  1. 创建脚本目录:

    Terminal window
    mkdir -p -- "$HOME/day2/scripts"
    nano "$HOME/day2/scripts/sys-check.sh"
  2. 写入以下完整脚本:

    #!/usr/bin/env bash
    umask 077
    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    LOG_DIR="$HOME/day2/logs"
    LOG_FILE="$LOG_DIR/system-check-$(date +%F).log"
    mkdir -p -- "$LOG_DIR"
    chmod 700 -- "$LOG_DIR"
    touch -- "$LOG_FILE"
    chmod 600 -- "$LOG_FILE"
    {
    printf '===== System check: %s =====\n\n' "$(date --iso-8601=seconds)"
    printf '[Network]\n'
    hostname -I
    printf '\n[Kernel]\n'
    uname -srmo
    printf '\n[OS]\n'
    if [[ -r /etc/os-release ]]; then
    cat /etc/os-release
    else
    printf '%s\n' '/etc/os-release unavailable'
    fi
    printf '\n[Disk]\n'
    df -h
    printf '\n[Memory]\n'
    free -h
    printf '\n[Uptime]\n'
    uptime
    printf '\n[Temperature]\n'
    if command -v vcgencmd >/dev/null 2>&1; then
    vcgencmd measure_temp
    else
    printf '%s\n' 'vcgencmd unavailable'
    fi
    printf '\n'
    } >> "$LOG_FILE" 2>&1
    printf 'Saved locally: %s\n' "$LOG_FILE"
  3. 在 Nano 中按 Ctrl+O、Enter 保存,按 Ctrl+X 退出。仅给所有者增加执行权限并运行:

    Terminal window
    chmod u+x -- "$HOME/day2/scripts/sys-check.sh"
    "$HOME/day2/scripts/sys-check.sh"
Terminal window
LOG_FILE="$HOME/day2/logs/system-check-$(date +%F).log"
ls -l -- "$LOG_FILE"
test -s "$LOG_FILE" && sed -n '1,80p' -- "$LOG_FILE"

日志应非空,并包含 Network、Kernel、Disk、Memory、Uptime 和 Temperature 小节。脚本会把目录收紧为 700、日志收紧为 600vcgencmd 不存在时应记录 vcgencmd unavailable,脚本仍正常完成。

先检查目标,再交互式删除脚本和日志:

Terminal window
ls -la -- "$HOME/day2/scripts" "$HOME/day2/logs"
rm -i -- "$HOME/day2/scripts/sys-check.sh"
rm -ri -- "$HOME/day2/logs"
rmdir -- "$HOME/day2/scripts" "$HOME/day2" 2>/dev/null || true

日志包含诊断信息。确认不再需要后才删除;若要保留历史记录,只撤销执行权限即可:

Terminal window
chmod u-x -- "$HOME/day2/scripts/sys-check.sh"
现象 检查 处理
Permission denied ls -l 是否有所有者执行位 运行 chmod u+x,不要改成 777
bash 不存在 command -v bash 本指南面向 Raspberry Pi OS;不要直接在只含 BusyBox sh 的系统运行。
vcgencmd unavailable command -v vcgencmd 非 Raspberry Pi 或未安装该工具时属于预期降级。
日志持续增大 ls -lh "$HOME/day2/logs" 定期归档或删除旧日志;自动运行前配置保留策略。
页面准备发布 日志是否含 IP、主机名和版本信息 只整理方法,不上传真实日志文件。