[[Linux 换源]]
[[SSH 优化]]
[[SSH 密钥登录]]
[[Linux 的 DNS 配置]]
国内访问不上8.8.8.8,而有些时候路由器的 DNS 又容易抽风,因此推荐设置一个国内的 DNS。
安装工具优化
安装 Brew
Ubuntu
[[Ubuntu or Debian 换源]]
安装 apt-fast
sudo add-apt-repository ppa:apt-fast/stable
sudo apt-get update
sudo apt-get -y install apt-fastShell 设置
Vim 优化
# 安装 vim
sudo apt install vim
# 新建一个 vim 的配置文件:
vim ~/.vimrc内容如下
set nu " 显示行号
colorscheme desert " 颜色显示方案
syntax on " 打开语法高亮zsh shell 方案
# 安装依赖
sudo apt install git -y
# 安装zsh
sudo apt install zsh -y
# 更改默认shell为zsh
chsh -s /bin/zsh
# 安装oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" -y
命令补全插件:zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestionssed -i 's/plugins=(\(.*\))/plugins=(\1 zsh-autosuggestions)/' ~/.zshrc 快捷目录跳转插件:autojump
sudo apt install autojump -ysed -i 's/plugins=(\(.*\))/plugins=(\1 autojump)/' ~/.zshrc 命令语法检测插件:zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlightingsed -i 's/plugins=(\(.*\))/plugins=(\1 zsh-syntax-highlighting)/' ~/.zshrc其他 zsh 的优化操作
关掉 URL 反斜杠转义以及禁用 zsh 自动更新:
echo "DISABLE_MAGIC_FUNCTIONS=true" >> ~/.zshrc
echo "zstyle ':omz:update' mode disabled" >> ~/.zshrc命令行工具
此处的安装命令均以 brew 为主,如果想要使用其他安装工具,请自行去官网查找
| 工具名称 | 作用 | 安装命令 |
|---|---|---|
| bat | brew install bat | |
| tldr | 快速查看常用命令的使用实例 | |
| exa | ls 的替代品 | |
| fzf | ||
| lrzsz |
GitHub CLI
安装:https://github.com/cli/cli/blob/trunk/docs/install_linux.md
GitHub CLI 命令补全:gh completion
mkdir -p "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/completions"
gh completion -s zsh > "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/completions/_gh"
exec zshTmux 优化
Tmux 安装
# Ubuntu 或 Debian
sudo apt-get install tmux
# CentOS 或 Fedora
sudo yum install tmux
# Mac
brew install tmux安装 Oh-My-Tmux
curl -fsSL "https://github.com/gpakosz/.tmux/raw/refs/heads/master/install.sh#$(date +%s)" | bash配置
sed 's/#set -g mouse on/set -g mouse on/' ~/.config/tmux/tmux.conf.local配置 ZRAM 和 Swap
内存不太够用,但又暂时不想升级配置,可以设置 ZRAM 和磁盘 Swap,缓解内存不足导致进程被系统杀掉的问题。
- ZRAM:将内存中的数据压缩后存放在内存里,拿一部分 CPU 开销换取更多可用空间,通常比磁盘 Swap 快。
- 磁盘 Swap:使用磁盘空间存放换出的内存数据,速度较慢,主要作为内存不足时的兜底。
比较适合 2~8GB 内存的小型 VPS、办公电脑和开发测试机,磁盘最好是 SSD。内存更大的机器也可以使用,主要看实际内存压力。数据库、实时服务等对延迟敏感的场景,需要谨慎评估。
Swap 不能代替物理内存。如果机器长期内存不足、频繁换页,还是建议升级内存或减少服务数量。以下命令适用于使用 systemd,且软件源提供
systemd-zram-generator的 Ubuntu 或 Debian 系统。
检查现有配置
先检查机器内存和已经启用的 Swap,避免重复配置:
free -h
sudo zramctl
sudo swapon --show
df -h /如果系统已经配置了 ZRAM,建议调整现有配置,不要同时使用多个 ZRAM 管理工具。
配置 ZRAM
安装 ZRAM 管理工具:
sudo apt update
sudo apt install -y systemd-zram-generator写入配置:
cat << 'EOF' | sudo tee /etc/systemd/zram-generator.conf > /dev/null
[zram0]
# 物理内存的一半,最大 4GiB,数值单位为 MiB
zram-size = min(ram / 2, 4096)
swap-priority = 100
EOFzram-size 设置的是 ZRAM 可存放的未压缩数据容量,并不会立即占用这么多物理内存,实际占用取决于使用量和压缩效果。
swap-priority 是交换空间的优先级,数值越大越优先使用。这里让 ZRAM 优先于后面配置的磁盘 Swap。
首次配置后,立即启用:
sudo systemctl daemon-reload
sudo systemctl start /dev/zram0生成器会在开机时自动配置 ZRAM,不需要额外执行 systemctl enable。这里启动设备对应的单元,会连同生成的 Swap 单元一起启用。
检查状态:
sudo zramctl
sudo swapon --show
free -h创建 Swap 文件
以创建 2GiB 的 Swapfile 为例。执行前确认根分区空间足够,并且 /swapfile 不存在。
以下方式适用于常见的 ext4 等文件系统。如果使用 Btrfs,需要按其专用方式创建 Swapfile,不能直接照搬。已有 Swapfile 不要重复执行
mkswap。
# 创建文件
sudo fallocate -l 2G /swapfile
# 限制为仅 root 可读写
sudo chmod 600 /swapfile
# 初始化为交换空间
sudo mkswap /swapfile设置开机自动启用,优先级低于 ZRAM:
grep -qE '^[[:space:]]*/swapfile[[:space:]]' /etc/fstab \
|| echo '/swapfile none swap defaults,pri=10 0 0' \
| sudo tee -a /etc/fstab > /dev/null如果 /etc/fstab 中已经有 /swapfile 配置,上面的命令不会修改原有内容,需要自行检查。
立即启用:
sudo swapon --priority 10 /swapfile检查配置
sudo zramctl
sudo swapon --show
free -hswapon --show 中应该能看到两个交换空间,其中大小随实际配置变化:
NAME TYPE SIZE USED PRIO
/dev/zram0 partition 4G 0B 100
/swapfile file 2G 0B 10系统分配交换空间时会优先使用 ZRAM,再使用优先级更低的磁盘 Swap。ZRAM 中的数据不会因为配置了 Swapfile 就自动转存到磁盘。
如果需要休眠,ZRAM 不能作为休眠镜像的存储位置,还需要单独配置容量足够的磁盘 Swap 和恢复参数。
启用定期 TRIM(可选)
删除文件后,文件系统会将对应空间标记为可用,但底层存储不一定知道这些数据已经不需要了。TRIM 可以将这些空闲范围通知给 SSD 或云盘后端,帮助存储回收空间,并有利于维持 SSD 的长期写入性能。
适合支持 discard 的 SSD、NVMe 和虚拟磁盘。云服务器能否使用取决于服务商是否开放支持,不支持的话直接跳过即可。
TRIM 不会扩大磁盘容量,也不会让
df -h显示的可用空间凭空增加。它不是安全擦除工具,但可能使已删除的数据更难恢复,准备恢复误删文件时不要执行。
检查是否支持
lsblk -D查看系统磁盘及对应分区、逻辑卷的 DISC-MAX:
- 非零:设备向系统声明支持 discard,可以继续测试。
0B:设备没有提供 discard 能力。
例如:
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda 0 4K 1G 0
└─sda3 0 4K 1G 0
└─ubuntu--vg-ubuntu--lv 0 4K 1G 0这里磁盘、分区和 LVM 逻辑卷的 DISC-MAX 都非零,符合继续测试的条件。DISC-ZERO 为 0 不代表不支持 TRIM。
手动测试
对根文件系统执行一次 TRIM:
sudo fstrim -v /成功后会看到类似输出:
/: 6.7 GiB (7169220608 bytes) trimmed表示向下层存储提交了约 6.7GiB 空闲范围的 discard 请求,不代表新增了同等大小的可用空间,也不保证后端实际回收了同等大小的物理存储。
如果提示 the discard operation is not supported,说明当前文件系统或下层存储链路不支持,不必强行启用。
启用定时任务
以下命令适用于使用 systemd,且已提供 fstrim.timer 的系统:
# 开机自动启用,并立即启动定时器
sudo systemctl enable --now fstrim.timer
# 查看下次执行时间
systemctl list-timers fstrim.timer通常默认每周执行一次,具体以系统配置为准。--now 启动的是定时器,不等于立即执行一次 TRIM。
输出中,NEXT 是下次执行时间,LAST 是上次触发时间,ACTIVATES 通常为 fstrim.service。
查看自动执行的结果:
sudo journalctl -u fstrim.service -n 30 --no-pager启用后交给系统定期执行即可,不需要重复添加 cron 任务,也不必为了 TRIM 再给 /etc/fstab 添加持续 discard 挂载选项。