Linux 生存指南:从"终端恐惧症"到"命令行老司机"

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 /。

相关推荐
XIAEE1 小时前
实战教程:手机端死活调不出摄像头?聊聊安全上下文(Secure Context)
java·spring
程序员清风1 小时前
堆与优先队列:从 Top K 到任务调度
java·数据结构·算法
XIAEE1 小时前
ES6 与 Node.js 群侠传:那些年我们追过的语法,和那些年把我们追杀的 API
java·spring
XIAEE1 小时前
WebRTC 探险记:我是如何让两个浏览器"看对眼"的
java·spring
XIAEE1 小时前
UniApp 本地打包通关记:Android 是地狱难度,iOS 是隐藏 BOSS
java·spring
高晶1 小时前
Android 物联网组网实战:NFC 从零到落地
android·java
Dreamboat-L2 小时前
日志级别基础 + Spring Boot 日志实践指南
java·服务器·数据库·java-ee·springboot
啵啵啵鱼2 小时前
第二章 线性表
java·数据结构·算法
深入云栈2 小时前
Netty 4.2.x 源码深度解析 (十九):ChannelPool 连接池 —— 连接复用与资源管理
java·后端·架构