Linux 命令知识总结与面试题
Linux 常用命令的分类速查手册,涵盖文件与目录操作、用户权限、进程管理、网络排查、文本处理与系统监控,每条命令附典型用法,适合作为服务器日常运维的案头参考。
一、Linux 基础概念
1. 什么是 Linux?
- 开源的类 Unix 操作系统内核
- 由 Linus Torvalds 于 1991 年创建
- 广泛应用于服务器、嵌入式系统、超级计算机
2. Linux 文件系统结构
/ # 根目录├── bin/ # 基本命令二进制文件├── etc/ # 系统配置文件├── home/ # 用户主目录├── lib/ # 共享库文件├── proc/ # 虚拟文件系统,存储进程信息├── root/ # root 用户主目录├── sbin/ # 系统管理命令├── tmp/ # 临时文件├── usr/ # 用户程序和数据└── var/ # 可变数据(日志、缓存等)3. 命令格式
command [options] [arguments]二、文件与目录操作
1. 目录操作命令
| 命令 | 功能 | 示例 |
|---|---|---|
pwd |
显示当前目录 | pwd |
cd |
切换目录 | cd /home/user |
ls |
列出目录内容 | ls -l(详细信息) |
mkdir |
创建目录 | mkdir -p dir1/dir2(递归创建) |
rmdir |
删除空目录 | rmdir dir |
2. 文件操作命令
| 命令 | 功能 | 示例 |
|---|---|---|
touch |
创建空文件 | touch file.txt |
cp |
复制文件/目录 | cp -r src dest |
mv |
移动/重命名 | mv old.txt new.txt |
rm |
删除文件/目录 | rm -rf dir(强制递归删除) |
ln |
创建链接 | ln -s target link(软链接) |
3. 文件查看命令
| 命令 | 功能 | 示例 |
|---|---|---|
cat |
查看文件内容 | cat file.txt |
more |
分页查看 | more file.txt |
less |
交互式分页查看 | less file.txt |
head |
查看文件头部 | head -n 10 file.txt |
tail |
查看文件尾部 | tail -n 10 file.txt |
tail -f |
实时查看日志 | tail -f /var/log/messages |
三、用户与权限管理
1. 用户管理命令
| 命令 | 功能 | 示例 |
|---|---|---|
useradd |
创建用户 | useradd -m user |
userdel |
删除用户 | userdel -r user |
usermod |
修改用户 | usermod -g group user |
passwd |
设置密码 | passwd user |
su |
切换用户 | su - root |
whoami |
显示当前用户 | whoami |
id |
显示用户信息 | id user |
2. 组管理命令
| 命令 | 功能 | 示例 |
|---|---|---|
groupadd |
创建组 | groupadd group |
groupdel |
删除组 | groupdel group |
groupmod |
修改组 | groupmod -n newname oldname |
3. 权限管理
权限表示法
-rwxr-xr-- 1 user group 1024 Jun 1 10:00 file.txt└─┬─┴─┬─┴─┬─┘ │ │ └─ 其他用户权限 │ └─ 组用户权限 └─ 文件所有者权限权限数字表示
| 权限 | 数字 | 说明 |
|---|---|---|
| r(读) | 4 | 读取文件内容 |
| w(写) | 2 | 修改文件内容 |
| x(执行) | 1 | 执行文件 |
权限命令
| 命令 | 功能 | 示例 |
|---|---|---|
chmod |
修改权限 | chmod 755 file.txt |
chown |
修改所有者 | chown user:group file.txt |
chgrp |
修改组 | chgrp group file.txt |
四、进程管理
1. 进程查看命令
| 命令 | 功能 | 示例 |
|---|---|---|
ps |
查看进程快照 | ps aux |
top |
实时查看进程 | top |
htop |
交互式进程查看 | htop |
pgrep |
根据名称查找进程 | pgrep nginx |
2. 进程控制命令
| 命令 | 功能 | 示例 |
|---|---|---|
kill |
终止进程 | kill -9 pid |
killall |
终止同名进程 | killall nginx |
pkill |
根据条件终止进程 | pkill -f nginx |
nohup |
后台运行命令 | nohup command & |
jobs |
查看后台任务 | jobs |
fg |
后台任务调前台 | fg %1 |
bg |
前台任务调后台 | bg %1 |
五、网络管理
1. 网络配置命令
| 命令 | 功能 | 示例 |
|---|---|---|
ifconfig |
查看/配置网络接口 | ifconfig eth0 |
ip |
查看/配置网络接口 | ip addr show |
ping |
测试网络连通性 | ping example.com |
traceroute |
追踪路由 | traceroute example.com |
netstat |
查看网络连接 | netstat -tuln |
ss |
查看网络连接(替代 netstat) | ss -tuln |
curl |
HTTP 请求 | curl http://example.com |
wget |
下载文件 | wget http://example.com/file.tar.gz |
2. 端口扫描
# 查看端口占用lsof -i :80netstat -tuln | grep 80# 扫描端口nmap example.com六、文本处理
1. 文本搜索命令
| 命令 | 功能 | 示例 |
|---|---|---|
grep |
文本搜索 | grep "pattern" file.txt |
grep -r |
递归搜索 | grep -r "pattern" /path |
grep -v |
反向匹配 | grep -v "pattern" file.txt |
grep -i |
忽略大小写 | grep -i "pattern" file.txt |
2. 文本处理命令
| 命令 | 功能 | 示例 |
|---|---|---|
sed |
流式编辑 | sed 's/old/new/g' file.txt |
awk |
文本分析 | awk '{print $1}' file.txt |
cut |
截取字段 | cut -d: -f1 /etc/passwd |
sort |
排序 | sort -n file.txt |
uniq |
去重 | `sort file.txt |
wc |
统计行数/字数 | wc -l file.txt |
3. 正则表达式基础
| 元字符 | 含义 |
|---|---|
. |
匹配任意单个字符 |
* |
匹配前面字符零次或多次 |
+ |
匹配前面字符一次或多次 |
? |
匹配前面字符零次或一次 |
^ |
匹配行首 |
$ |
匹配行尾 |
[] |
匹配括号内任意字符 |
[^] |
匹配不在括号内的字符 |
七、系统管理
1. 系统信息命令
| 命令 | 功能 | 示例 |
|---|---|---|
uname |
查看系统信息 | uname -a |
hostname |
查看主机名 | hostname |
date |
显示日期时间 | date |
cal |
显示日历 | cal |
uptime |
显示系统运行时间 | uptime |
free |
查看内存使用 | free -h |
df |
查看磁盘使用 | df -h |
du |
查看目录大小 | du -sh /path |
2. 系统日志
# 查看系统日志cat /var/log/messagescat /var/log/syslog# 查看认证日志cat /var/log/auth.log# 查看最近日志tail -f /var/log/messages3. 压缩与解压
| 命令 | 功能 | 示例 |
|---|---|---|
tar |
打包/压缩 | tar -czvf file.tar.gz /path |
tar -x |
解压 | tar -xzvf file.tar.gz |
zip |
ZIP 压缩 | zip file.zip /path |
unzip |
ZIP 解压 | unzip file.zip |
gzip |
GZIP 压缩 | gzip file.txt |
gunzip |
GZIP 解压 | gunzip file.txt.gz |
八、文件查找
1. find 命令
# 查找文件find /path -name "*.txt"# 根据大小查找find /path -size +100M# 根据修改时间查找find /path -mtime -7# 查找并执行命令find /path -name "*.log" -exec rm {} \;2. locate 命令
# 更新数据库updatedb# 查找文件locate file.txt九、Shell 基础
1. Shell 类型
- Bash:默认 shell
- Zsh:功能更强大的 shell
- Fish:友好的交互式 shell
2. 环境变量
# 查看环境变量echo $PATHenv# 设置环境变量export PATH=$PATH:/new/path# 永久设置(写入 ~/.bashrc)echo 'export PATH=$PATH:/new/path' >> ~/.bashrcsource ~/.bashrc3. 命令别名
# 设置别名alias ll='ls -la'# 永久设置(写入 ~/.bashrc)echo 'alias ll="ls -la"' >> ~/.bashrc十、常见面试题
基础概念
Q1:Linux 和 Windows 的主要区别?
- Linux 是开源的,Windows 是闭源的
- Linux 主要用于服务器,Windows 主要用于桌面
- Linux 文件系统是树形结构,Windows 有驱动器概念
- Linux 使用命令行管理,Windows 以图形界面为主
Q2:什么是 Shell?常见的 Shell 有哪些?
- Shell 是用户与 Linux 内核交互的接口
- 常见:Bash、Zsh、Fish、Sh
Q3:Linux 文件权限有哪几种?如何表示?
- 三种权限:读(r)、写(w)、执行(x)
- 数字表示:r=4, w=2, x=1
- 示例:755 = rwxr-xr-x
文件操作
Q4:如何查看文件内容?有哪些命令?
cat:直接显示less:分页查看head/tail:查看头部/尾部more:分页查看
Q5:如何查找文件?
find:实时查找,功能强大locate:基于数据库,速度快
Q6:软链接和硬链接的区别?
- 软链接:指向原文件的路径,类似快捷方式
- 硬链接:指向原文件的 inode,删除原文件仍可访问
- 软链接可以跨文件系统,硬链接不可以
用户与权限
Q7:如何创建用户?如何设置密码?
useradd创建用户passwd设置密码
Q8:什么是 SUID、SGID、Sticky Bit?
- SUID:执行时获得文件所有者权限
- SGID:执行时获得文件组权限
- Sticky Bit:只有所有者可以删除文件
进程管理
Q9:如何查看进程?
ps:静态查看top:实时查看htop:交互式查看
Q10:如何终止进程?
kill pid:终止指定进程kill -9 pid:强制终止killall:终止同名进程
网络管理
Q11:如何查看网络连接?
netstat -tuln:查看监听端口ss -tuln:更高效的替代
Q12:如何测试网络连通性?
ping:测试基本连通性traceroute:追踪路由curl:测试 HTTP 服务
文本处理
Q13:如何统计文件行数?
wc -l file.txt
Q14:如何在文件中查找包含特定字符串的行?
grep "pattern" file.txt
Q15:如何替换文件中的字符串?
sed 's/old/new/g' file.txt
系统管理
Q16:如何查看磁盘使用情况?
df -h:查看磁盘分区du -sh:查看目录大小
Q17:如何查看内存使用情况?
free -h
Q18:如何压缩和解压文件?
tar -czvf压缩tar -xzvf解压
进阶问题
Q19:什么是管道(Pipe)?如何使用?
- 将一个命令的输出作为另一个命令的输入
- 示例:
cat file.txt | grep "pattern" | sort
Q20:什么是重定向?有哪些类型?
>:覆盖输出>>:追加输出<:输入重定向2>:错误输出重定向
十一、常用快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl+C |
终止当前命令 |
Ctrl+D |
退出当前 shell |
Ctrl+Z |
暂停当前命令 |
Ctrl+A |
移动到行首 |
Ctrl+E |
移动到行尾 |
Ctrl+L |
清屏 |
Tab |
自动补全 |
↑/↓ |
历史命令 |
十二、总结
Linux 是服务器运维和开发的必备技能,掌握常用命令、文件系统、权限管理、进程管理和网络管理是基础。通过实践和积累,可以高效地管理 Linux 系统。