前言:
在上一篇中,我们给 Linux 服务器穿上了安全的“防弹衣”。但说实话,服务器买来不是为了供着的,而是为了用的。
很多人买了 VPS 也就是跑个脚本,一旦遇到磁盘满了、进程卡死、或者想传个文件,就开始抓瞎。去百度搜命令,搜一个忘一个。
今天这篇,我把这一年多折腾 VPS 最常用的“实战级”命令和技巧做了一个大汇总。这些不是教科书上的死知识,而是真正能让你从“小白”进化到“熟手”的工具箱。
给系统“洗洗澡”:清理与维护
VPS 运行久了,最先遇到的问题往往是——磁盘红了。通常罪魁祸首就是日志文件。
清理 Systemd 日志
Ubuntu/Debian 系统中,journalctl 会记录大量的系统日志。如果不加限制,几个 G 是常有的事。
# 1. 查看日志占用了多少空间
journalctl --disk-usage
# 2. 只有效清理:只保留最近 1 周的日志
sudo journalctl --vacuum-time=1w
# 3. 或者按大小清理:只保留 500M
sudo journalctl --vacuum-size=500M
进阶技巧: 也可以直接去 /var/log 目录下看看有没有巨大的 `.log` 文件,如果有,可以用 echo "" > bigfile.log 来清空它,而不是直接删除(直接删除可能导致正在写入的程序报错)。
防止手滑:使用 trash-cli 后悔药
rm -rf 是 Linux 里最可怕的咒语。为了防止悲剧,强烈建议安装 trash-cli,它会把文件放入回收站,而不是直接粉碎。
# 安装
sudo apt-get install trash-cli
# 使用方法(完全替代 rm)
trash-put 文件名 # 删除文件
trash-list # 查看回收站里有什么
trash-restore # 救命!我要恢复文件
trash-empty # 清空回收站
校准时间与时区
很多国外 VPS 默认时间是 UTC,看日志的时候还要脑内 +8 小时,非常痛苦。直接改成上海时间吧。
# 交互式修改(推荐)
sudo dpkg-reconfigure tzdata
# 在菜单里选择 Asia -> Shanghai 即可
# 验证时间
date
文件管理与搜索大师
在黑框框里找文件,不能靠眼睛看,要靠命令搜。
Find:精准定位
比如你想找个配置文件,只记得名字里带 “nginx”,但不记得在哪:
# 在当前目录及子目录搜索名字包含 nginx 的文件
find . -name "*nginx*"
# 进阶:找大于 100M 的大文件(磁盘清理神器)
find / -type f -size +100M
Tree:上帝视角看目录
有时候项目文件结构太乱,ls 看不明白,tree 命令能画出漂亮的树状图。
sudo apt install tree
# 显示两层深度(防止刷屏)
tree -L 2
硬链接复制:省空间的魔法
如果你想备份一个很大的文件夹(比如 Docker 数据),但又不想占用双倍磁盘空间,可以用硬链接复制(cp -lR)。
# 就像影分身一样,A和B指向同一块数据,但互不影响删除
cp -lR /source/folder /backup/folder
进程与后台管理:让程序永不掉线
SSH 连接一旦断开,你运行的程序通常也会挂掉。这时候你需要后台神器。
Screen:会话保持专家
Screen 可以在服务器上开一个“虚拟窗口”,即使你关掉电脑,它里面的程序还在跑。下次连上去还能恢复。
# 1. 创建一个叫 mytask 的窗口
screen -S mytask
# 2. 在里面运行你的脚本...
# 3. 离开(Detach):按键盘 Ctrl + A,然后按 D。
# (此时程序在后台运行)
# 4. 回来(Reattach):
screen -r mytask
注:现在的年轻人也流行用 tmux,功能更强,但 screen 胜在简单。
Watch:穷人的仪表盘
想盯着某个命令的变化(比如看显卡状态、看文件下载大小),不用一直疯狂按“上箭头+回车”,用 watch。
# 每 1 秒刷新一次 nvidia-smi
watch -n 1 nvidia-smi
# 或者监视文件大小变化
watch -n 1 ls -lh file.tar.gz
Nethogs:谁在偷跑流量?
服务器网速突然变慢?nethogs 可以按进程显示流量,而不是按网卡。谁是内鬼一目了然。
sudo apt install nethogs
sudo nethogs eth0
高级文件传输:不仅是上传下载
Rsync:增量同步神器
别再用 scp 搬运大文件夹了,一旦断网就要重头来。rsync 支持增量同步,断了可以续传,只传修改过的文件。
# -a: 归档模式(保留权限、时间等)
# -v: 显示过程
# -P: 显示进度条且支持断点续传
# --partial: 保留传了一半的文件
rsync -avP source_folder/ user@remote_ip:/target_folder/
SSH Key:免密登录与互信
如果你有两台 VPS 需要互相传文件,或者你厌倦了每次输入密码,SSH Key 是必须掌握的。
# 1. 在本机生成钥匙(一路回车即可)
ssh-keygen -t rsa
# 2. 把公钥(锁)发送给远程服务器
ssh-copy-id -p 22 root@192.168.1.5
完成后,你再用 ssh 登录或用 rsync 传输时,就不需要输入密码了。这也是自动化脚本的基础。
Bonus:Python 玩家的福音
如果你的 VPS 是用来跑 Python 脚本、爬虫或者 AI 模型的,强烈建议安装 Conda(Miniconda 或 Anaconda)。
不要直接用系统自带的 Python!因为你一旦把系统 Python 的环境弄乱了(比如依赖包冲突),整个系统可能都会出问题(比如 `yum` 或 `apt` 报错)。
Conda 可以让你创建隔离的沙盒环境:
# 创建一个叫 myenv 的环境,指定 python 3.9
conda create -n myenv python=3.9
# 激活环境
conda activate myenv
打包与解压:Linux 里的“压缩包”
在 Windows 上我们习惯用 WinRAR 或 7-Zip。在 Linux 命令行里,我们主要跟 tar 和 zip 打交道。记住这几个万能公式,走遍天下都不怕。
Tar:最通用的格式
.tar.gz 是 Linux 下最常见的压缩格式。虽然命令参数看起来像乱码,但其实有规律:
z: gzip压缩
c: create (创建/压缩)
x: extract (解压)
v: verbose (显示过程)
f: file (指定文件)
# 1. 压缩:把 test 文件夹打包成 test.tar.gz
tar -czvf test.tar.gz ./test
# 2. 解压:把包解压到当前目录
tar -xzvf test.tar.gz
# 3. 偷懒解压法(查看内容但不解压)
tar -tvf test.tar.gz
运行结果(解压时):
test/
test/index.html
test/style.css
test/images/
test/images/logo.png
Zip:与 Windows 兼容
如果你要发文件给用 Windows 的朋友,最好用 zip。
# 如果提示找不到命令,先安装
sudo apt install zip unzip
# 解压
unzip file.zip
# 压缩(-r 表示递归,把文件夹里的东西都包进去)
zip -r mydata.zip ./mydata_folder
Crontab:不知疲倦的定时器
想每天凌晨 3 点自动备份数据库?或者每隔 10 分钟检查一下网站活没活着?crontab 是你最好的帮手。
基本操作:
# 编辑定时任务(第一次会让你选编辑器,选 vim 或 nano 均可)
crontab -e
# 查看当前有哪些任务
crontab -l
语法规则(分 时 日 月 周):
这五个星号 * * * * * 代表了时间规律。
# 示例:在文件末尾添加一行
# 每天凌晨 3:00 重启服务器(慎用!)
0 3 * * * /sbin/reboot
# 每隔 30 分钟执行一次 Python 脚本
*/30 * * * * /usr/bin/python3 /home/test/script.py >> /tmp/log.txt
# 每天早上 8:30 问个好
30 8 * * * echo "Good Morning" >> /home/test/greet.txt
运行结果:
保存退出后,系统会提示 crontab: installing new crontab,这就说明生效了。
进程管理:对卡死的程序说拜拜
有时候程序跑飞了,按 Ctrl+C 停不下来,或者它在后台偷偷占用了 100% CPU。这时候我们需要“追杀”它。
1. 查:找到进程 ID (PID)
假设我们要找一个叫 nginx 的程序:
# ps -ef 列出所有进程,grep 过滤关键词
ps -ef | grep nginx
运行结果:
root 1234 1 0 10:00 ? 00:00:00 nginx: master process
www-data 1235 1234 0 10:00 ? 00:00:00 nginx: worker process
test 1280 1100 0 10:05 pts/0 00:00:00 grep --color=auto nginx
注意第二列的数字(如 1234),那就是 PID(身份证号)。
2. 杀:终止进程
# 礼貌地请求停止(推荐)
kill 1234
# 强制杀死(如果上面那个不管用,就用这招,俗称“绝杀”)
kill -9 1234
SSH 别名:懒人改变世界
每次登录服务器都要打 ssh test_user@192.168.1.123 -p 1234,是不是很烦?
我们可以修改本机(是你自己的电脑,不是服务器)的配置文件来简化它。
操作步骤:
在你的电脑上(PowerShell 或 Mac 终端)编辑 `~/.ssh/config` 文件:
Host myvps
HostName 192.168.1.123
User test_user
Port 1234
IdentityFile ~/.ssh/id_rsa
神奇的效果:
配置好后,你只需要输入下面这个短命令,就能瞬间穿越:
ssh myvps
总结
至此,你已经掌握了 Linux 运维的几大核心技能:
1. 搬运工:用 tar 和 zip 管理文件包。
2. 时间管理大师:用 crontab 自动化任务。
3. 执法者:用 kill 清理卡死进程。
4. 偷懒专家:用 config 简化 SSH 登录。
这些命令在未来的折腾路上会陪伴你很久。记住,命令不用死记硬背,多敲几次,肌肉记忆自然就形成了。
把这些练熟了,你就从“被 Linux 玩”变成了“玩 Linux”。
下一篇,我们将进入更激动人心的环节:Docker 容器化部署。到时候你会发现,原来部署一个网站或应用,竟然可以如此优雅和简单。