一组实用的 Linux 服务器运维与日常使用脚本。
系统优化
1. 开启 BBR
开启 TCP BBR 拥塞控制算法,提升网络传输性能。脚本会自动检测内核是否支持 BBR(需要 Linux 内核 >= 4.9),支持临时启用和永久启用两种方式。
标签: bbr
#!/bin/bash
# 只处理 BBR 开/关 + 检测
# 支持大多数现代 Linux (内核 ≥4.9)
set -e
# ======================
# 颜色
# ======================
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $1"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${NC} $1" >&2; exit 1; }
# ======================
# 检查内核是否支持 tcp_bbr
# ======================
check_bbr_support() {
if ! modinfo tcp_bbr >/dev/null 2>&1; then
error "当前内核没有 tcp_bbr 模块(需要 Linux 内核 ≥ 4.9)"
fi
}
# ======================
# 获取当前拥塞控制算法
# ======================
get_current_cc() {
sysctl -n net.ipv4.tcp_congestion_control 2>/dev/null || echo "unknown"
}
# ======================
# 判断 BBR 是否已启用
# ======================
is_bbr_enabled() {
local cc
cc=$(get_current_cc)
[ "$cc" = "bbr" ]
}
# ======================
# 显示当前状态
# ======================
show_status() {
local cc=$(get_current_cc)
local avail=$(sysctl -n net.ipv4.tcp_available_congestion_control 2>/dev/null)
echo
if [[ "$cc" = "bbr" ]]; then
echo -e "${GREEN}当前已使用 BBR${NC}"
elif [[ "$avail" =~ "bbr" ]]; then
echo -e "${YELLOW}BBR 模块可用,但当前未启用(当前: $cc)${NC}"
else
echo -e "${RED}BBR 不可用(模块缺失或内核太旧)${NC}"
fi
echo "当前拥塞控制 : $cc"
echo "可用算法 : $avail"
echo
}
# ======================
# 临时启用 BBR(本次开机有效)
# ======================
enable_bbr_temp() {
info "临时启用 BBR(本次重启后失效)..."
modprobe tcp_bbr 2>/dev/null || true
sysctl -w net.ipv4.tcp_congestion_control=bbr
if is_bbr_enabled; then
info "临时启用成功"
else
warn "临时启用失败,请检查内核模块"
fi
}
# ======================
# 永久启用 BBR(推荐)
# ======================
enable_bbr_permanent() {
info "设置永久启用 BBR..."
# 加载模块(开机自动加载)
if [[ -d /etc/modules-load.d ]]; then
echo "tcp_bbr" | tee /etc/modules-load.d/tcp_bbr.conf >/dev/null
elif [[ -f /etc/modules ]]; then
grep -q "^tcp_bbr$" /etc/modules || echo "tcp_bbr" >> /etc/modules
fi
# sysctl 配置
local conf="/etc/sysctl.d/98-tcp-bbr.conf"
cat > "$conf" << 'EOF'
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
EOF
sysctl -p "$conf" 2>/dev/null || true
info "已写入配置:$conf"
info "重启后完全生效(或手动执行:sysctl -p $conf)"
}
# ======================
# 主逻辑
# ======================
main() {
check_bbr_support
show_status
if is_bbr_enabled; then
warn "BBR 已经启用,无需操作。"
exit 0
fi
echo -n "是否现在启用 BBR?[y/N] "
read -r answer
if [[ ! "$answer" =~ ^[Yy]$ ]]; then
info "已取消"
exit 0
fi
enable_bbr_temp
show_status
echo -n "是否设置为永久启用(推荐)?[y/N] "
read -r answer
if [[ "$answer" =~ ^[Yy]$ ]]; then
enable_bbr_permanent
fi
info "操作完成"
echo "验证命令:"
echo " sysctl net.ipv4.tcp_congestion_control"
echo " lsmod | grep bbr"
}
main "$@"
手动验证命令:
# 查看当前是否在使用 bbr
sysctl net.ipv4.tcp_congestion_control
# 查看可用拥塞控制算法列表
sysctl net.ipv4.tcp_available_congestion_control
# 查看是否加载了 bbr 模块
lsmod | grep -i bbr
# 临时切换成 bbr(测试用)
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
2. Debian 12 Bookworm 升级 Debian 13 Trixie
将 Debian 12 (Bookworm) 升级至 Debian 13 (Trixie)。先完成当前版本的完整更新,然后替换软件源并执行跨版本升级。
apt update
apt upgrade -y
apt full-upgrade -y
apt autoremove --purge -y
apt autoclean
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
find /etc/apt/sources.list.d/ -type f -name "*.list" -exec sed -i 's/bookworm/trixie/g' {} \;
find /etc/apt/sources.list.d/ -type f -name "*.sources" -exec sed -i 's/bookworm/trixie/g' {} \;
apt update
apt upgrade --without-new-pkgs -y
apt full-upgrade -y
apt autoremove --purge -y
apt autoclean
这个脚本"能用",社区里很多人这么干也成功了,但属于"简单粗暴快"类型,不是最稳妥的做法。 真正稳的做法是:先完整备份 → 更新到最新 bookworm → 手动/精细修改源(优先禁用第三方)→ 两阶段升级 → 升级后再处理第三方源和可能的冲突包。
如果你的机器只是个人桌面/测试服务器/干净 VPS,这个脚本大概率没问题;如果是重要生产环境,建议再谨慎一些。
3. 新增 SWAP
创建 2GB 的 SWAP 交换文件并永久挂载。
标签: swap
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile swap swap defaults 0 0" | tee -a /etc/fstab
4. 更新 SWAP
删除旧的 SWAP 文件并重新创建,可用于扩容或缩小 SWAP 大小。
标签: swap
sudo swapoff /swapfile
sudo rm /swapfile
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
5. 优化 SWAP
优化 SWAP 使用和回收策略,让系统更倾向于用内存、更早更平滑地写回脏数据、尽量少碰 SWAP。在内存充足 + SSD 的 VPS 环境下,这是一种提升交互体验的常见且相对安全的调优方式。
标签: swap
#!/usr/bin/env bash
# ================== 虚拟内存优化脚本 ==================
# 适用于大多数现代 Linux 发行版
# 主要调整:降低 swap 使用倾向 + 优化脏页写回
set -euo pipefail
echo "正在优化虚拟内存参数..."
# 目标参数
cat <<'EOF' | sudo tee /etc/sysctl.d/99-vm-optimization.conf >/dev/null
# 降低使用 swap 的倾向(0=几乎不使用,100=积极使用swap)
vm.swappiness = 10
# 脏页占系统内存比例达到 20% 时触发进程主动回写
vm.dirty_ratio = 20
# 后台进程开始回写脏页的阈值(内存的 5%)
vm.dirty_background_ratio = 5
# 可选:加快脏页过期时间(默认 3000~5000 左右,根据需求可选开启)
# vm.dirty_expire_centisecs = 1500
# vm.dirty_writeback_centisecs = 500
EOF
echo "已写入配置到 /etc/sysctl.d/99-vm-optimization.conf"
# 立即生效(当前会话)
echo "立即应用设置..."
sudo sysctl -p /etc/sysctl.d/99-vm-optimization.conf
echo ""
echo "当前生效参数如下:"
echo "----------------------------------------"
sysctl vm.swappiness vm.dirty_ratio vm.dirty_background_ratio
echo "----------------------------------------"
echo ""
echo "优化完成!"
echo "这些设置会在重启后仍然有效(因为写入了 sysctl.d 目录)。"
软件安装
6. 安装 Docker
使用官方一键安装脚本安装 Docker。
标签: docker
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
验证安装:
docker run hello-world
生活工具
7. 获取天气
在终端中查看当前位置的天气信息。
curl -4 wttr.in
8. 获取 IP
在终端中查看当前公网 IP 及相关信息。
curl ip.im/info
其他
9. 性能测试
使用 bench.sh 进行服务器性能测试,包括 CPU、内存、磁盘 IO、网络速度等。
第三方项目:https://bench.sh/
apt update
apt install wget
curl -Lso- bench.sh | bash