linux

Linux清理命令大全及使用技巧

小樊
51
2025-11-23 12:25:10
栏目: 智能运维

Linux清理命令大全及使用技巧

一 快速定位占用

二 按场景的清理命令速查表

场景 命令示例 说明
临时文件 sudo tmpwatch 7d /tmptmpreaper 7d /tmp 自动清理超过指定时间的临时文件,避免误删正在使用的会话文件
systemd 日志 sudo journalctl --vacuum-time=7d 保留最近7天日志,也可按大小 --vacuum-size=100M
包管理器缓存 APT:sudo apt-get cleansudo apt-get autocleansudo apt-get autoremove --purge;YUM:sudo yum clean allsudo yum autoremove;DNF:sudo dnf clean allsudo dnf autoremove 清理下载缓存与不再需要的依赖,释放空间
旧内核 `dpkg --list grep linux-imagesudo apt-get remove linux-image- linux-headers-`
大文件定位 `du -ah . sort -rh
浏览器缓存 Chrome:rm -rf ~/.config/google-chrome/Default/Cache/*;Firefox:rm -rf ~/.mozilla/firefox/*.default-release/cache2/* 关闭浏览器后清理,避免占用与隐私泄露
系统缓存 `sudo sync && echo 3 sudo tee /proc/sys/vm/drop_caches`
日志轮转 sudo logrotate -f /etc/logrotate.conf 强制按配置轮转与压缩日志,配合大小/时间策略使用

三 自动化与图形化工具

四 安全与排错要点

五 一键清理脚本示例

#!/usr/bin/env bash
set -Eeuo pipefail

# 0) 配置
KEEP_LOGS_DAYS=7
KEEP_LOGS_SIZE="100M"
TMP_AGE="7d"
BIG_FILE_MIN=500  # MB
DRY_RUN=false

# 1) 工具检测
for cmd in du find journalctl tmpwatch logrotate; do
  if ! command -v "$cmd" >/dev/null 2>&1; then
    echo "缺少命令: $cmd,请先安装。"
    exit 1
  fi
done

# 2) 日志
echo "[1/6] 清理 systemd 日志..."
if $DRY_RUN; then
  echo "  journalctl --vacuum-time=${KEEP_LOGS_DAYS} --vacuum-size=${KEEP_LOGS_SIZE}"
else
  sudo journalctl --vacuum-time="${KEEP_LOGS_DAYS}" --vacuum-size="${KEEP_LOGS_SIZE}"
fi

# 3) 临时文件
echo "[2/6] 清理临时文件 (${TMP_AGE})..."
if $DRY_RUN; then
  echo "  tmpwatch ${TMP_AGE} /tmp"
else
  sudo tmpwatch "${TMP_AGE}" /tmp
fi

# 4) 包管理器缓存与无用包
echo "[3/6] 清理包管理器缓存与无用包..."
if command -v apt-get >/dev/null 2>&1; then
  $DRY_RUN && echo "  apt-get clean && apt-get autoclean && apt-get autoremove --purge" \
    || { sudo apt-get clean && sudo apt-get autoclean && sudo apt-get autoremove --purge; }
elif command -v dnf >/dev/null 2>&1; then
  $DRY_RUN && echo "  dnf clean all && dnf autoremove" \
    || { sudo dnf clean all && sudo dnf autoremove; }
elif command -v yum >/dev/null 2>&1; then
  $DRY_RUN && echo "  yum clean all && yum autoremove" \
    || { sudo yum clean all && sudo yum autoremove; }
fi

# 5) 大文件清单
echo "[4/6] 大于 ${BIG_FILE_MIN}MB 的文件清单(前20):"
du -ah / 2>/dev/null | sort -rh | awk -v min="$BIG_FILE_MIN" '$1 ~ /M$/ && int($1) > min {print; count++; if (count>=20) exit}' || true

# 6) 日志轮转
echo "[5/6] 强制执行日志轮转..."
$DRY_RUN && echo "  logrotate -f /etc/logrotate.conf" || sudo logrotate -f /etc/logrotate.conf

# 7) 可选:清理页面缓存(仅临时,谨慎)
echo "[6/6] 如需清理页面缓存,请在确认后执行:"
echo "  sync && echo 3 | sudo tee /proc/sys/vm/drop_caches"

0
看了该问题的人还看了