Linux 学习历程(五):Linux基础命令

前言:

在上一篇中,我们给 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 命令行里,我们主要跟 tarzip 打交道。记住这几个万能公式,走遍天下都不怕。

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. 搬运工:用 tarzip 管理文件包。

2. 时间管理大师:用 crontab 自动化任务。

3. 执法者:用 kill 清理卡死进程。

4. 偷懒专家:用 config 简化 SSH 登录。

这些命令在未来的折腾路上会陪伴你很久。记住,命令不用死记硬背,多敲几次,肌肉记忆自然就形成了。

把这些练熟了,你就从“被 Linux 玩”变成了“玩 Linux”。

下一篇,我们将进入更激动人心的环节:Docker 容器化部署。到时候你会发现,原来部署一个网站或应用,竟然可以如此优雅和简单。

博客内容均系原创,未经允许严禁转载!
您可以通过 RSS 订阅本站文章更新,订阅地址:https://blog.abco.fun
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇