面向刚开始接触服务器的读者。本文不追求“背完所有命令”,而是建立一条从查看环境、操作文件,到排查服务的基本路线。示例主要适用于 Ubuntu、Debian、CentOS、Rocky Linux、AlmaLinux 等常见发行版。

一、先理解命令长什么样
Linux 命令通常由三部分组成:
命令 选项 参数
ls -lah /var/log
ls:要执行的命令;-lah:控制命令行为的选项,多个短选项可以写在一起;/var/log:要操作的对象,也就是参数。
Linux 区分大小写,File.txt 和 file.txt 是两个不同的文件。命令中的空格、斜杠和引号也有意义,复制命令前要看清楚。
遇到不熟悉的命令,先看帮助:
ls --help
man ls
在 man 手册里按 / 可以搜索,按 n 跳到下一个结果,按 q 退出。
二、确认“我是谁、我在哪、这是什么系统”
登录服务器后,不要急着修改配置。先确认当前身份和环境:
whoami
pwd
hostname
date
cat /etc/os-release
uname -r
| 命令 | 作用 | 常见用途 |
|---|---|---|
whoami |
查看当前用户 | 防止误以为自己是 root |
pwd |
显示当前目录的绝对路径 | 操作文件前确认位置 |
hostname |
查看主机名 | 多台服务器之间避免登错机器 |
date |
查看系统时间 | 排查日志时间是否对应 |
cat /etc/os-release |
查看发行版与版本 | 判断应该使用 apt 还是 dnf |
uname -r |
查看内核版本 | 排查驱动、容器和内核功能问题 |
如果刚登录一台陌生服务器,建议至少执行 whoami、hostname 和 pwd。
三、目录切换与文件操作
1. 查看和切换目录
ls
ls -lah
cd /var/log
cd ..
cd -
cd ~
ls -l:显示权限、所有者、大小和修改时间;ls -a:显示以.开头的隐藏文件;ls -h:把字节显示成 KB、MB、GB 等易读单位;cd ..:进入上一级目录;cd -:返回刚才所在的目录;cd ~:回到当前用户的家目录。
2. 创建、复制、移动和删除
mkdir -p ~/linux-lab/logs
touch ~/linux-lab/app.conf
cp ~/linux-lab/app.conf ~/linux-lab/app.conf.bak
mv ~/linux-lab/app.conf.bak ~/linux-lab/logs/
rm -i ~/linux-lab/logs/app.conf.bak
几个重要习惯:
mkdir -p可以一次创建多层目录;- 修改配置前先用
cp -a备份,-a会尽量保留原有属性; mv既能移动文件,也能重命名文件;- 新手删除文件时使用
rm -i,系统会先询问; - 不要在不理解路径和通配符时使用
rm -rf。
备份配置文件的常见写法:
sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
四、查看文本和跟踪日志
服务器上的配置、日志大多是文本文件。应根据文件大小选择查看方式。
cat /etc/hostname
less /var/log/syslog
head -n 20 /var/log/syslog
tail -n 50 /var/log/syslog
tail -f /var/log/syslog
wc -l /var/log/syslog
file /var/log/syslog
cat适合内容很短的文件;大文件不要直接cat;less可以上下翻页和搜索,按q退出;head看开头,tail看结尾;tail -f会持续等待新日志,按Ctrl+C停止;wc -l统计行数;file判断文件类型,遇到“乱码”或二进制文件时很有用。
例如,只看 Nginx 最近 100 行错误日志:
sudo tail -n 100 /var/log/nginx/error.log
五、搜索文件与过滤内容
1. 用 find 找文件
find /etc -type f -name '*.conf' 2>/dev/null
find /var/log -type f -mtime -1 2>/dev/null
find . -type f -size +100M
含义分别是:
- 在
/etc中查找扩展名为.conf的普通文件; - 查找
/var/log下最近一天修改过的文件; - 在当前目录查找大于 100 MB 的文件。
2>/dev/null 会隐藏无权访问产生的错误信息。它只适合让结果更清爽,不代表问题已经解决。
2. 用 grep 找内容
grep -n 'error' app.log
grep -ni 'error' app.log
grep -Rni --include='*.conf' 'listen' /etc/nginx
-n显示行号;-i忽略大小写;-R递归搜索子目录;--include限制文件类型。
3. 用管道组合命令
管道符 | 会把左侧命令的输出交给右侧继续处理:
ps aux | grep '[n]ginx'
grep -i 'failed' auth.log | tail -n 20
cut -d: -f1 /etc/passwd | sort | head
它是 Linux 命令行最重要的思想之一:每个命令只做一件事,再把它们组合起来。
六、理解文件权限
执行 ls -l 可能看到:
-rw-r----- 1 app app 1280 Oct 29 10:20 app.conf
开头的权限可以分为三组:文件所有者、所属组、其他用户。r 表示读取,w 表示写入,x 表示执行。
chmod u+x deploy.sh
chmod 640 app.conf
sudo chown app:app app.conf
chmod u+x deploy.sh:给文件所有者增加执行权限;chmod 640 app.conf:所有者可读写,所属组只读,其他人无权限;chown app:app app.conf:把所有者和所属组都改为app。
常见数字权限:
| 权限 | 常见用途 |
|---|---|
644 |
普通配置文件:所有者可写,其他人只读 |
600 |
私钥、密码文件:只有所有者可读写 |
755 |
目录或公开脚本:所有者可写,其他人可读和执行 |
750 |
只允许所有者和同组用户访问的目录 |
不要把 chmod 777 当作通用修复方案。它会让所有用户都能修改文件,经常只是掩盖“用户、用户组或路径设置错误”的真正原因。
七、检查磁盘、内存和负载
df -h
df -i
du -sh /var/log
du -xh --max-depth=1 /var | sort -h
free -h
uptime
这些命令回答的是不同问题:
df -h:文件系统还剩多少空间;df -i:inode 是否耗尽。小文件过多时,空间没满也可能无法创建文件;du -sh:某个目录实际占了多少空间;free -h:内存与 Swap 使用情况;uptime:运行时间和平均负载。
排查磁盘满时,先定位大目录,不要直接删除不认识的文件:
sudo du -xh --max-depth=1 /var | sort -h
sudo du -xh --max-depth=1 /var/log | sort -h
八、查看进程和管理服务
1. 进程命令
ps aux
ps aux --sort=-%mem | head
pgrep -af nginx
top
ps aux查看进程快照;--sort=-%mem按内存使用率从高到低排序;pgrep -af按名称查找,并显示完整启动命令;top动态观察 CPU、内存和进程。
停止进程时,先发送正常退出信号:
kill -TERM 1234
等待并确认进程无法正常退出后,才考虑:
kill -KILL 1234
KILL 不给程序清理文件、连接和临时数据的机会,不应作为第一选择。
2. systemd 服务命令
多数现代 Linux 发行版使用 systemd:
systemctl status nginx --no-pager
sudo systemctl restart nginx
sudo systemctl enable nginx
journalctl -u nginx -n 100 --no-pager
journalctl -u nginx -f
推荐顺序是:先看 status 和日志,确认原因后再改配置或重启。反复重启可能让关键错误信息滚出日志,也不能解决配置错误。
修改 Nginx 配置后的安全做法:
sudo nginx -t
sudo systemctl reload nginx
先验证配置,再平滑加载,比直接重启更稳妥。
九、检查网络和端口
ip -br address
ip route
ss -lntp
ping -c 4 192.0.2.10
curl -I http://127.0.0.1:8080
curl -v http://127.0.0.1:8080
ip -br address:简洁显示网卡和 IP;ip route:查看路由和默认网关;ss -lntp:查看正在监听的 TCP 端口及进程;ping:检查 ICMP 是否可达,但禁 Ping 不代表业务一定不可达;curl -I:只查看 HTTP 响应头;curl -v:显示连接和请求细节。
检查域名解析可以使用:
getent hosts example.com
如果安装了 dig,还可以查看更详细的 DNS 响应:
dig example.com
十、压缩与解压
tar -czf app-backup.tar.gz app/
tar -tzf app-backup.tar.gz
mkdir -p restore
tar -xzf app-backup.tar.gz -C restore/
-c创建归档;-t只查看归档内容;-x解压;-z使用 gzip;-f后面紧跟归档文件名;-C指定解压目录。
解压来源不明的归档前,先用 tar -tzf 查看内部路径,避免文件覆盖到意外位置。
十一、安装软件包
Debian、Ubuntu 常用:
sudo apt update
sudo apt install curl
RHEL、Rocky Linux、AlmaLinux 常用:
sudo dnf install curl
安装前先确认操作系统版本,不要把不同发行版的包管理命令混用。生产服务器安装新软件还应遵守变更流程。
十二、一个完整排查示例:网站访问不了
假设用户反馈“网页打不开”,不要上来就重启服务器,可以按下面的顺序缩小范围。
第 1 步:确认主机和时间
hostname
date
先排除登错服务器、日志时间不对应的问题。
第 2 步:确认服务状态
systemctl status nginx --no-pager
重点看 Active 状态和最近几行错误。
第 3 步:查看服务日志
journalctl -u nginx -n 100 --no-pager
如果日志指出配置错误,先检查配置,不要连续重启。
第 4 步:检查端口是否监听
sudo ss -lntp | grep ':80 '
没有结果通常说明服务没有监听 80 端口,或监听了其他地址、端口。
第 5 步:在服务器本机测试
curl -I http://127.0.0.1
本机成功、外部失败,排查重点应转向监听地址、防火墙、安全组、负载均衡或网络路径。
第 6 步:检查资源
df -h
free -h
确认磁盘没有写满、系统没有明显内存压力。这样得到的是证据链,而不是“重启后似乎好了”。
十三、效率快捷键
| 操作 | 作用 |
|---|---|
Tab |
自动补全命令或路径 |
↑ / ↓ |
浏览历史命令 |
Ctrl+R |
反向搜索历史命令 |
Ctrl+C |
中止当前前台命令 |
Ctrl+L |
清理终端显示,效果类似 clear |
Ctrl+A / Ctrl+E |
跳到命令行开头 / 结尾 |
可以用 history 查看历史命令,但不要在命令行直接输入明文密码、令牌等敏感信息,因为它们可能被记录。
十四、新手最需要记住的安全原则
- 执行前先确认服务器、用户和当前目录。
- 修改配置前备份,并记录改了什么。
- 删除前先用
ls或find确认目标范围。 - 能用普通用户完成,就不要一直使用 root。
- 先查看状态和日志,再决定是否重启。
- 不用
chmod 777、关闭防火墙等方式掩盖真实问题。 - 命令执行后要验证结果,不能只看“没有报错”。
总结
Linux 命令不需要一次背完。初学阶段先掌握四条主线:
- 用
pwd、ls、cd管理位置; - 用
less、tail、grep获取信息; - 用
df、free、ps、systemctl判断系统和服务状态; - 用
ip、ss、curl缩小网络问题范围。
真正重要的不是命令数量,而是形成“确认环境 → 收集证据 → 缩小范围 → 谨慎修改 → 验证结果”的习惯。掌握这条路线,面对陌生服务器时就不会只剩下重启这一种办法。