服务器相关笔记
约 1588 字大约 5 分钟
服务器
2025-07-30
apt-check
:是 Ubuntu/Debian 系系统中的一部分,用来检查系统更新(比如有没有新的包可以升级)。unattended-upgrade
:是自动升级服务,用于后台自动更新安全补丁等系统包。
这两个进程会不定时运行,占用 CPU 检查包信息,尤其在资源较小的服务器上(如你这种 2 核 4G),一跑就很吃紧。
解决方案:禁用自动更新服务,改为手动升级
关闭 unattended-upgrades
sudo systemctl stop unattended-upgrades
sudo systemctl disable unattended-upgrades
手动更新建议,以后你可以定期手动更新系统,执行:
sudo apt update && sudo apt upgrade -y
虽然你只禁用了 unattended-upgrades
,但这已经间接停止了 apt-check
的触发。
建议你再确认一个文件:
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
如果里面还有这两行:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
就改成
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
否则系统可能还是会定时调用 apt-check
去尝试检查更新。
切换 npm 镜像源,使用官方 npm 源或淘宝镜像
npm config set registry https://registry.npmjs.org/
用淘宝镜像(镜像站更快)
npm config set registry https://registry.npmmirror.com/
查找空间使用最多的目录
du -h --max-depth=1 / | sort -hr | head -n 20
比如你看到 /var
或 /usr
特别大,接着进入它继续看:
du -h --max-depth=1 /var | sort -hr | head -n 20
清理 apt 缓存
apt clean && apt autoremove -y && apt autoclean
清理日志
journalctl --disk-usage
清空系统日志目录
rm -rf /var/log/*.gz /var/log/*.[0-9] /var/log/journal/*
清理 Node/npm 缓存:如果你曾经手动安装过 Node 或 PM2,这些缓存可能很多:
npm cache clean --force
rm -rf ~/.npm
rm -rf ~/.nvm
rm -rf /usr/local/lib/node_modules
宝塔面板临时缓存
rm -rf /www/server/panel/data/*.log
rm -rf /www/server/panel/plugin/*/log
rm -rf /www/server/panel/logs/*
cls
设置别名为 clear
在你的 shell 配置文件里(比如 ~/.bashrc
或 ~/.zshrc
)添加:
alias cls='clear'
source ~/.bashrc # 或者 source ~/.zshrc
以后你在终端输入 cls
就会执行 clear
,达到和 Windows 类似的效果。
使用 nvm 管理 Node.js 版本的 Ubuntu 环境配置总结
背景
- 使用 nvm(Node Version Manager)在 Ubuntu 上管理多个 Node.js 版本。
- 遇到的问题:
- 新开终端,
node
命令找不到(提示未安装)。 - 全局安装的 npm 包命令无法识别。
- 切换 Node 版本后,全局包路径混乱,多个版本共存,执行命令混淆。
- 新开终端,
Ubuntu Shell 配置文件及执行机制简述
Ubuntu 登录及交互式 shell 会读取不同配置文件:
Shell 类型 | 读取的配置文件 |
---|---|
登录 shell | ~/.profile (或 ~/.bash_profile ,Ubuntu 默认无) |
交互式非登录 shell | ~/.bashrc |
- 登录 shell:用户登录系统时(SSH、图形终端登录)执行,读
.profile
。 - 交互式非登录 shell:新打开终端时执行,读
.bashrc
。 .profile
通常会调用.bashrc
,以保证配置一致。
nvm 的工作原理及 PATH 管理
- nvm 实际是通过 shell 脚本,动态切换
$PATH
里当前 Node 版本的 bin 路径。 - 关键点:只有当前 shell session 中正确执行了
nvm
初始化脚本,才能保证node
和 npm 全局包的 bin 目录加入到$PATH
中。 - 如果初始化没执行,shell 里找不到
node
命令。 - 切换 Node 版本时,nvm 会更新
$PATH
,但如果旧的版本路径残留,会导致命令混淆。
出现问题的原因分析
- 新终端环境没有自动加载 nvm 脚本
.profile
或.bashrc
里没有正确加载$NVM_DIR/nvm.sh
,导致nvm
命令不可用。 - 没有自动切换到默认 Node 版本 新开 shell 未执行
nvm use default
,node
未激活。 - 全局包命令找不到 npm 全局包安装在
~/.nvm/versions/node/vXX.X.X/bin
下,但该目录未加入当前 shell 的$PATH
。 - PATH 中残留多个版本的全局包路径 导致切换版本后执行的命令版本混乱。
解决步骤与配置示范
1. 在 ~/.profile
里加载 nvm 并自动切换默认版本
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # 初始化 nvm
nvm use default >/dev/null # 自动切换到默认 Node 版本
为什么写在
.profile
? 因为.profile
是 Ubuntu 登录 shell 默认加载的文件,确保远程 SSH 或终端登录时执行。
2. 确保 .profile
加载 .bashrc
,保持一致配置
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
3. 在 ~/.bashrc
中防止 PATH 冲突,保证只使用当前 Node 版本 bin
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
# 清理 PATH 中所有 nvm 版本的 Node 路径,避免冲突
PATH=$(echo "$PATH" | tr ':' '\n' | grep -v "$NVM_DIR/versions/node" | paste -sd ':' -)
# 加上当前版本 Node 的 bin 路径
export PATH="$NVM_DIR/versions/node/$(nvm current)/bin:$PATH"
这样切换版本后,不会存在多个版本的全局包目录同时在 PATH 里。
4. 设置默认 Node 版本
nvm alias default 20.19.4 # 用你安装的 Node 版本号替换
常用验证命令
# 查看当前 Node 版本
node -v
# 查看当前 nvm 版本
nvm --version
# 查看当前 PATH 里的 node bin 目录
echo $PATH | tr ':' '\n' | grep '.nvm/versions/node'
# 查看某命令路径
which node
which vite
总结
问题 | 原因 | 解决办法 |
---|---|---|
终端打开无 node 命令 | nvm 未初始化或未激活默认版本 | 在 .profile 里加载 nvm,执行 nvm use default |
全局包命令不可用 | PATH 未包含正确版本的全局包目录 | 清理 PATH 中旧版本路径,加入当前版本 bin |
切换版本后包命令混乱 | PATH 中残留多个版本路径 | 使用脚本清理 PATH 中所有旧版本路径 |
额外建议
- 项目内尽量本地安装依赖,使用
npx
调用,减少全局包冲突风险。 - 不同 Node 版本不要安装相同全局包,避免 PATH 冲突。
- 每次修改
.bashrc
或.profile
后,执行source ~/.bashrc
或source ~/.profile
立即生效。
查找并终止占用端口的进程
使用以下命令查找占用端口 9000 的进程:
sudo lsof -i :9000
这将显示占用 9000 端口的进程。如果你找到了进程 ID(PID),可以终止它:
sudo kill -9 <PID>
如果不确定是哪个进程占用了 9000 端口,可以查看当前所有正在监听的端口:
sudo netstat -tuln
或者使用 ss
命令:
sudo ss -tuln
通过Cloudflare的DNS解析来访问网站并且启用代理加速,会在网站的请求头中插入一些....
贡献者
更新日志
7eec2
-Document organization于9de0b
-全局优化于b1c4a
-文档迁移于