1. 文档目标
这份文档面向零基础,目标是让你可以:
- 理解 Linux 基本概念和目录结构。
- 熟练使用常见命令完成日常操作。
- 独立进行文件、权限、进程、网络排查。
- 会安装软件、管理服务、查看日志。
- 能写简单 Shell 脚本自动化重复工作。
2. Linux 是什么
Linux 是一种操作系统,常用于:
- 服务器(网站、数据库、API 服务)。
- 开发环境(后端、DevOps、容器)。
- 云计算和大数据平台。
- 嵌入式设备和物联网设备。
你需要先记住:
- Linux 对大小写敏感。
- 绝大多数操作可通过命令行完成。
- "一切皆文件"是 Linux 的核心思想之一。
3. 目录结构(先看懂)
常见目录:
/:根目录。/home:普通用户目录。/root:root 用户家目录。/etc:系统配置文件。/var:日志、缓存、变化数据。/usr:系统应用和库。/bin、/sbin:基础命令。/tmp:临时文件。/opt:第三方软件目录。/dev:设备文件。/proc:内核和进程信息。
4. 终端基础操作(第一天必会)
4.1 查看当前位置和内容
bash
pwd
ls
ls -la
4.2 切换目录
bash
cd /etc
cd ~
cd ..
cd -
说明:
~代表当前用户家目录。..代表上一级目录。-代表上一次所在目录。
4.3 创建与删除
bash
mkdir demo
mkdir -p demo/a/b/c
touch demo/readme.txt
rm demo/readme.txt
rmdir demo/a/b/c
5. 文件与目录操作(高频)
5.1 复制、移动、重命名
bash
cp a.txt b.txt
cp -r src_dir dst_dir
mv old.txt new.txt
mv file.txt /tmp/
5.2 查看文件内容
bash
cat file.txt
less file.txt
head -n 20 file.txt
tail -n 20 file.txt
tail -f app.log
5.3 查找文件
bash
find /etc -name "*.conf"
find . -type f -size +10M
5.4 查找文本
bash
grep "error" app.log
grep -R "db_host" .
grep -n "timeout" config.yml
6. 编辑文件(vim/nano 入门)
6.1 使用 nano(新手友好)
bash
nano test.txt
基本步骤:
- 打开后直接编辑。
Ctrl+O保存。Ctrl+X退出。
6.2 使用 vim(常用)
bash
vim test.txt
基本步骤:
- 按
i进入插入模式。 - 编辑内容。
- 按
Esc退出插入模式。 - 输入
:wq保存并退出。 - 输入
:q!不保存退出。
7. 权限与用户(必须掌握)
7.1 查看权限
bash
ls -l
例如:
-rw-r--r-- 1 user user 1234 file.txt
含义:
- 第一位
-是文件类型(d是目录)。 - 后面 9 位是权限:
r读、w写、x执行。 - 分三组:所有者、用户组、其他人。
7.2 修改权限
bash
chmod 644 file.txt
chmod 755 script.sh
chmod +x run.sh
常用数字:
7 = rwx6 = rw-5 = r-x4 = r--
7.3 修改属主属组
bash
chown user:user file.txt
chown -R user:user /opt/app
chgrp devops file.txt
7.4 sudo 与 root
bash
sudo command
sudo -i
whoami
注意:
- 优先用
sudo执行单条命令。 - 少长期停留在 root 下操作。
8. 压缩与解压
8.1 tar.gz
bash
tar -czvf backup.tar.gz /opt/app
tar -xzvf backup.tar.gz
tar -xzvf backup.tar.gz -C /tmp
8.2 zip/unzip
bash
zip -r project.zip project/
unzip project.zip -d /tmp/project
9. 软件安装与包管理
不同发行版命令不同。
9.1 Debian/Ubuntu(apt)
bash
sudo apt update
sudo apt install -y curl git
sudo apt remove -y nginx
sudo apt upgrade -y
9.2 CentOS/RHEL(yum/dnf)
bash
sudo yum install -y curl git
sudo yum remove -y nginx
sudo dnf install -y htop
10. 进程管理
10.1 查看进程
bash
ps -ef
ps -ef | grep nginx
top
10.2 结束进程
bash
kill 12345
kill -9 12345
pkill nginx
说明:
- 先用
kill(正常终止)。 - 不响应再用
kill -9(强制终止)。
11. 服务管理(systemd)
11.1 常用操作
bash
sudo systemctl status nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl enable nginx
sudo systemctl disable nginx
11.2 查看启动日志
bash
journalctl -u nginx -n 100 --no-pager
journalctl -u nginx -f
12. 磁盘与内存
12.1 查看磁盘空间
bash
df -h
du -sh /var/log
du -h --max-depth=1 /opt
12.2 查看内存与负载
bash
free -h
uptime
vmstat 1 5
13. 网络常用排查
13.1 查看网络信息
bash
ip a
ip route
hostname -I
13.2 连通性测试
bash
ping -c 4 8.8.8.8
curl -I https://example.com
13.3 端口检查
bash
ss -tulnp
ss -tulnp | grep 80
13.4 DNS 问题排查
bash
nslookup example.com
dig example.com
14. 日志查看与排错流程
标准排查步骤:
- 先看服务状态:
systemctl status 服务名。 - 再看实时日志:
journalctl -u 服务名 -f。 - 查应用日志:
tail -f /var/log/xxx.log。 - 查端口占用:
ss -tulnp。 - 查资源瓶颈:
top、free -h、df -h。
15. 环境变量与配置
15.1 临时变量
bash
export APP_ENV=dev
echo $APP_ENV
15.2 永久变量
写入 ~/.bashrc:
bash
echo 'export APP_ENV=dev' >> ~/.bashrc
source ~/.bashrc
16. Shell 脚本入门(自动化基础)
16.1 第一个脚本
新建 backup.sh:
bash
#!/usr/bin/env bash
set -euo pipefail
DATE=$(date +%F_%H-%M-%S)
SRC_DIR="/opt/app"
DST_DIR="/tmp/backups"
mkdir -p "$DST_DIR"
tar -czf "$DST_DIR/app_$DATE.tar.gz" "$SRC_DIR"
echo "backup done: $DST_DIR/app_$DATE.tar.gz"
执行:
bash
chmod +x backup.sh
./backup.sh
16.2 定时任务(crontab)
编辑任务:
bash
crontab -e
每天凌晨 2 点执行:
cron
0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
查看任务:
bash
crontab -l
17. 常规运维操作清单(可直接照做)
17.1 部署前
- 拉代码或同步发布包。
- 备份当前配置和数据。
- 检查磁盘空间。
- 检查依赖服务状态(DB、Redis、MQ)。
17.2 部署中
- 停服务(按需)。
- 替换文件或更新版本。
- 重启服务。
- 验证端口、日志、健康检查。
17.3 部署后
- 核查核心功能。
- 观察 15-30 分钟日志。
- 记录变更时间、版本、执行人。
18. 新手高频错误与避免方式
-
在错误目录执行删除命令。
避免:先
pwd,再执行删除。 -
误用
rm -rf。避免:先
ls预览目标,再删除。 -
不看日志直接重启。
避免:先定位原因,再操作。
-
权限乱改
chmod 777。避免:最小权限原则,按需授权。
-
直接在生产环境调试。
避免:先在测试环境复现验证。
19. Linux 命令速查(一页)
bash
# 目录与文件
pwd
ls -la
cd /path
cp -r a b
mv a b
rm -rf dir
# 查看内容
cat file
less file
tail -f app.log
# 查找
find . -name "*.log"
grep -R "error" .
# 权限
chmod 755 run.sh
chown -R user:user /opt/app
# 进程与服务
ps -ef | grep app
top
systemctl status nginx
journalctl -u nginx -f
# 网络
ip a
ss -tulnp
curl -I http://localhost:8080
# 资源
df -h
du -sh /var/log
free -h