Linux 生存指南:从"终端恐惧症"到"命令行老司机"
第一次打开终端的时候,我以为自己误入了某个黑客电影片场。黑底白字,光标一闪一闪,像在说:"来吧,输错一个字符,我就让你系统崩溃。"
序章:那个让我手心冒汗的黑色窗口
故事要从我第一次租服务器说起。
买了阿里云,SSH 连上去,屏幕上弹出一行字:
text
ruby
Welcome to Ubuntu 22.04 LTS
Last login: ...
root@iZbp1xxxxx:~#
我盯着那个 # 看了十秒,心里只有一个念头:"我现在该干什么?"
那时候的我,只会三件事:cd、ls、sudo reboot。每次操作都像在拆炸弹------输错一个字母,可能就把系统搞崩了。
但服务器不会因为你害怕就停止运行。于是,我开始了 Linux 的"被迫修行"。
第一章:Linux 是什么?------一个"没有桌面的世界"
Windows 和 macOS 是"装修好的房子"------有桌面、有图标、有开始菜单。
Linux 更像一个"毛坯房"------默认啥都没有,只有一个命令行。你想要什么,自己装。
这听起来很劝退,但也是 Linux 最大的魅力:一切皆可配置,一切皆可脚本化。
而且,Linux 不只是"一个系统",它是一个家族:
- Ubuntu:最流行的桌面发行版,新手友好。
- CentOS / Rocky Linux:服务器最爱,稳定。
- Debian:Ubuntu 的"爸爸",更纯粹。
- Arch Linux:硬核玩家的选择,一切从零开始。
- Alpine:容器里的常客,小到只有几 MB。
你用的服务器,90% 跑的都是 Linux。
第二章:文件系统------一棵倒着长的树
Linux 的文件系统,是一棵从 / 开始的树。
text
csharp
/
├── bin/ # 基本命令(ls、cp、mv)
├── etc/ # 配置文件
├── home/ # 用户目录
│ └── you/ # 你的家
├── var/ # 变化的数据(日志、缓存)
├── tmp/ # 临时文件
├── usr/ # 用户程序
└── root/ # root 用户的家
和 Windows 最大的区别是:Linux 没有"盘符"。
Windows 是 C:\Users\You\Documents,Linux 是 /home/you/documents。
一切都在一棵树下,没有 C 盘、D 盘之分。
三个你必须记住的符号
- /:根目录,也是路径分隔符。
- ~:你的家目录,等于 /home/你。
- .:当前目录。..:上一级目录。
- bash
bash
cd ~ # 回家
cd .. # 上一级
cd /etc # 去 etc 目录
记住:Linux 的路径是大小写敏感的。File 和 file 是两个不同的东西。
第三章:文件操作------五个命令走天下
Linux 的文件操作,核心就五个命令:
1. ls------看看这里有什么
bash
bash
ls # 列出文件
ls -l # 详细信息(权限、大小、时间)
ls -a # 包括隐藏文件(以 . 开头的)
ls -lh # 人类可读的大小(KB、MB)
ls -lh 是我最常用的,因为 -h 让文件大小从"1234567"变成"1.2M"。
2. cd------走到哪去
bash
bash
cd /var/log # 去日志目录
cd .. # 上一级
cd - # 回到上一个目录
cd ~ # 回家
cd - 是一个被低估的命令,它让你在两个目录之间来回跳。
3. cp、mv、rm------复制、移动、删除
bash
bash
cp file1 file2 # 复制文件
cp -r dir1 dir2 # 复制目录
mv file1 file2 # 重命名
mv file1 /tmp/ # 移动
rm file # 删除文件
rm -rf dir # 删除目录(危险!)
rm -rf 是 Linux 世界里最危险的命令。 它不会问你"确定吗",直接删,删完就没了。
我有个朋友(真的不是我),rm -rf / 跑了一半才反应过来,幸好权限不够。
4. cat、less、tail------看文件内容
bash
bash
cat file.txt # 输出全部内容
less file.txt # 分页查看(按 q 退出)
tail -f log.txt # 实时跟踪日志(超常用)
head -n 20 file.txt # 看前 20 行
tail -f 是排查问题的神器。 你改完代码,日志实时滚动,错在哪一目了然。
5. find 和 grep------找东西
bash
matlab
find / -name "*.log" # 找所有 .log 文件
find . -type f -size +100M # 找大于 100M 的文件
grep "error" log.txt # 在文件里搜 "error"
grep -r "TODO" . # 递归搜索目录
grep 是"文本搜索",find 是"文件搜索",两个配合用,效率翻倍。
第四章:权限------那个让人头秃的 rwx
Linux 的权限系统,是新手最容易懵的地方。
bash
bash
ls -l
-rw-r--r-- 1 root root 1234 Jan 1 00:00 file.txt
drwxr-xr-x 2 root root 4096 Jan 1 00:00 dir/
解读一下:
-
第一个字符:- 是文件,d 是目录。
-
接下来九个字符:三组权限,分别是所有者、组、其他人。
-
r = 读(4),w = 写(2),x = 执行(1)。
-
text
rwx r-x r-x
│ │ └── 其他人:读 + 执行
│ └────── 组:读 + 执行
└────────── 所有者:读 + 写 + 执行
数字表示法:
bash
bash
chmod 755 file # rwxr-xr-x
chmod 644 file # rw-r--r--
chmod 777 file # rwxrwxrwx(危险!谁都能改)
chmod +x script.sh 是给脚本加执行权限,这是最常用的。
chown user:group file 是改文件所有者,部署时经常用。
第五章:进程与服务------谁在跑,谁在睡
ps------看看有哪些进程
bash
perl
ps aux # 所有进程
ps aux | grep nginx # 找 nginx 进程
ps aux | grep xxx 是排查问题的标准姿势。 服务器卡了?先看看谁在吃 CPU。
top / htop------实时监控
bash
bash
top # 实时进程监控
htop # 更好看的 top(需要安装)
按 q 退出,按 P 按 CPU 排序,按 M 按内存排序。
kill------结束进程
bash
bash
kill PID # 温柔地结束
kill -9 PID # 强制结束
pkill nginx # 按名字结束
kill -9 是"核弹",不到万不得已别用。
systemctl------管理系统服务
bash
bash
systemctl start nginx # 启动
systemctl stop nginx # 停止
systemctl restart nginx # 重启
systemctl status nginx # 看状态
systemctl enable nginx # 开机自启
现代 Linux 都用 systemd,systemctl 是管理服务的标配。
第六章:网络------从"连不上"到"终于通了"
ping------通不通?
bash
r
ping google.com
ping -c 4 8.8.8.8 # 只 ping 4 次
ping 是最基础的网络诊断工具。 通不通,延迟多少,一目了然。
curl / wget------下载和调试
bash
bash
curl https://api.example.com # 发请求
curl -I https://example.com # 只看响应头
wget https://example.com/file.zip # 下载文件
curl 是调试 API 的利器,比 Postman 还快。
netstat / ss------看端口
bash
bash
netstat -tlnp # 看监听的端口
ss -tlnp # 更快的 netstat
lsof -i :8080 # 看谁占了 8080
"端口被占用"是常见问题,lsof -i :端口 一秒定位。
ssh / scp------远程连接和传文件
bash
ruby
ssh user@192.168.1.1 # 远程登录
ssh -i key.pem user@host # 用密钥登录
scp file.txt user@host:/tmp/ # 上传
scp user@host:/tmp/file.txt . # 下载
scp 是传文件的标配,但大文件推荐 rsync,支持断点续传。
第七章:软件管理------装什么,怎么装
Ubuntu / Debian:apt
bash
csharp
apt update # 更新软件列表
apt install nginx # 安装
apt remove nginx # 卸载
apt upgrade # 升级所有软件
CentOS / Rocky:yum / dnf
bash
yum install nginx
dnf install nginx
万能方法:编译安装
bash
go
./configure
make
make install
但除非必要,别编译安装。包管理器能解决 90% 的问题。
第八章:Shell 脚本------把重复的事自动化
Linux 最强大的地方,是你可以把一堆命令写进脚本,一键执行。
bash
bash
#!/bin/bash
# 备份脚本
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup/$DATE"
mkdir -p $BACKUP_DIR
cp -r /var/www $BACKUP_DIR
tar -czf $BACKUP_DIR.tar.gz $BACKUP_DIR
rm -rf $BACKUP_DIR
echo "备份完成:$BACKUP_DIR.tar.gz"
加上执行权限:
bash
bash
chmod +x backup.sh
./backup.sh
这就是"运维自动化"的起点。
第九章:那些年我踩过的坑
坑一:rm -rf 没有回收站
Linux 没有回收站。删了就是删了。 所以我现在用 rm 之前,都会先 ls 一下确认。
坑二:sudo 不是万能的
sudo 能让你以 root 身份执行命令,但别用 sudo 跑所有东西。权限给多了,风险也大。
坑三:chmod 777 是"万金油"也是"灾难"
777 意味着谁都能读写执行。 生产环境用 777,等于把门敞开。
坑四:日志文件把磁盘撑爆
/var/log 里的日志,如果不清理,能把磁盘占满。df -h 查看磁盘,du -sh * 查看目录大小。
坑五:crontab 的时间格式
text
bash
* * * * * command
│ │ │ │ │
│ │ │ │ └── 星期(0-7)
│ │ │ └──── 月(1-12)
│ │ └────── 日(1-31)
│ └──────── 时(0-23)
└────────── 分(0-59)
0 3 * * * 是每天凌晨 3 点。*/5 * * * * 是每 5 分钟。
终章:Linux 教会我的事
从"看到终端就手抖"到"能在服务器上从容操作",我花了大概半年。
Linux 教会我的,不只是命令,而是一种思维方式:
- 一切皆文件:设备、进程、网络,都能用文件的方式操作。
- 组合小工具:每个命令只做一件事,但组合起来能做任何事。
- 自动化:能写脚本的,绝不手动重复。
- 权限意识:谁能做什么,清清楚楚。
最重要的是:Linux 让我从"用户"变成了"掌控者"。
你不再是被动地使用一个系统,而是主动地配置它、调试它、改造它。
P.S. 写完这篇文章后,我又在服务器上跑了一次 rm -rf,然后心跳漏了一拍。看来,敬畏之心,永远要有。
P.P.S. 如果你也在学 Linux,记住一句话:别怕,服务器不会因为你输错命令就爆炸------除非你输的是 rm -rf /。