Interview AiBoxInterview AiBox 实时 AI 助手,让你自信应答每一场面试
请列举并解释你在日常工作中常用的Linux命令及其用途。
题型摘要
Linux命令是运维工程师日常工作的基础工具。本文按功能分类介绍了常用Linux命令及其用途,包括:1)文件和目录操作(ls, cd, pwd, mkdir, rm, cp, mv, find);2)文本处理(cat, less/more, head/tail, grep, sed, awk);3)系统监控(top/htop, ps, df, du, free);4)网络工具(ping, netstat/ss, ifconfig/ip, traceroute, nslookup/dig, curl/wget, ssh);5)用户和权限管理(chmod, chown, passwd, su/sudo);6)压缩解压(tar, gzip/gunzip, zip/unzip);7)系统服务管理(systemctl, service);8)磁盘管理(fdisk, mount/umount);9)其他实用命令(history, crontab, nohup, screen/tmux, watch)。每个命令都有其特定用途和常用参数,理解这些命令的功能和适用场景,能帮助运维工程师更高效地完成系统管理和故障排查工作。
常用Linux命令及其用途详解
作为一名运维工程师,Linux命令是日常工作的基础工具。下面我将按功能分类列举并解释日常工作中最常用的Linux命令及其用途。
1. 文件和目录操作命令
ls - 列出目录内容
ls命令用于列出目录内容,是最常用的命令之一。
# 列出当前目录内容
ls
# 列出详细信息,包括权限、所有者、大小和修改时间
ls -l
# 列出所有文件,包括隐藏文件
ls -a
# 以人类可读格式显示文件大小
ls -h
# 按修改时间排序,最新的在前
ls -t
cd - 切换目录
cd命令用于切换当前工作目录。
# 切换到用户主目录
cd ~
# 切换到上一级目录
cd ..
# 切换到之前的目录
cd -
pwd - 显示当前工作目录
pwd命令用于显示当前工作目录的完整路径。
# 显示当前工作目录
pwd
mkdir - 创建目录
mkdir命令用于创建新目录。
# 创建单个目录
mkdir new_directory
# 创建多级目录
mkdir -p path/to/new_directory
rm - 删除文件或目录
rm命令用于删除文件或目录。
# 删除文件
rm file.txt
# 删除目录及其内容
rm -r directory
# 强制删除,不提示确认
rm -f file.txt
# 强制递归删除目录及其内容
rm -rf directory
cp - 复制文件或目录
cp命令用于复制文件或目录。
# 复制文件
cp source.txt destination.txt
# 复制目录
cp -r source_directory destination_directory
# 保留文件属性复制
cp -p source.txt destination.txt
mv - 移动或重命名文件或目录
mv命令用于移动文件或目录,也可用于重命名。
# 重命名文件
mv old_name.txt new_name.txt
# 移动文件到目录
mv file.txt directory/
find - 查找文件
find命令用于在目录树中查找文件。
# 按名称查找文件
find . -name "*.log"
# 查找大于100MB的文件
find . -type f -size +100M
# 查找并删除文件
find . -name "*.tmp" -delete
# 查找并执行命令
find . -name "*.sh" -exec chmod +x {} \;
2. 文本处理命令
cat - 查看文件内容
cat命令用于查看文件内容,也可用于合并文件。
# 查看文件内容
cat file.txt
# 显示行号
cat -n file.txt
# 合并多个文件
cat file1.txt file2.txt > combined.txt
less/more - 分页查看文件内容
less和more命令用于分页查看文件内容,less功能更强大。
# 分页查看文件
less large_file.log
# 查看时搜索文本
less large_file.log
# 然后输入 /search_term 搜索
head/tail - 查看文件开头/结尾部分
head和tail命令用于查看文件的开头和结尾部分。
# 查看文件前10行
head file.txt
# 查看文件后10行
tail file.txt
# 查看文件前20行
head -n 20 file.txt
# 实时查看文件更新(常用于日志监控)
tail -f application.log
grep - 文本搜索
grep命令用于文本搜索,支持正则表达式。
# 在文件中搜索文本
grep "error" log.txt
# 显示匹配行及其行号
grep -n "error" log.txt
# 递归搜索目录中的文件
grep -r "error" /var/log/
# 显示不匹配的行
grep -v "debug" log.txt
# 使用正则表达式搜索
grep -E "^ERROR|WARNING" log.txt
sed - 流编辑器
sed命令用于文本过滤和转换。
# 替换文本并输出结果(不修改原文件)
sed 's/old/new/g' file.txt
# 直接修改文件
sed -i 's/old/new/g' file.txt
# 删除特定行
sed '3d' file.txt # 删除第3行
sed '/error/d' file.txt # 删除包含error的行
awk - 文本处理工具
awk是一个强大的文本处理工具,特别适合处理表格数据。
# 打印文件的第二列
awk '{print $2}' file.txt
# 使用逗号作为分隔符,打印第一列
awk -F',' '{print $1}' csv_file.csv
# 计算某列的总和
awk '{sum+=$3} END {print sum}' file.txt
# 筛选符合条件的行
awk '$3 > 100 {print $1, $3}' file.txt
3. 系统监控和性能分析命令
top - 实时显示系统进程和资源使用情况
top命令用于实时显示系统进程和资源使用情况。
# 启动top
top
# 按CPU使用率排序(在top运行时按P)
# 按内存使用率排序(在top运行时按M)
# 显示特定用户的进程(在top运行时按u)
htop - top的增强版
htop是top的增强版,界面更友好,功能更强大。
# 启动htop
htop
# htop支持鼠标操作,颜色显示,更直观的进程树等
ps - 显示当前进程
ps命令用于显示当前进程。
# 显示所有进程
ps aux
# 显示所有进程,以完整格式显示
ps -ef
# 显示特定用户的进程
ps -u username
# 显示进程树
ps auxf
# 查找特定进程
ps aux | grep nginx
df - 显示磁盘空间使用情况
df命令用于显示磁盘空间使用情况。
# 显示磁盘空间使用情况
df
# 以人类可读格式显示
df -h
# 显示特定文件系统的信息
df -h /dev/sda1
# 显示inode使用情况
df -i
du - 显示目录或文件的磁盘使用情况
du命令用于显示目录或文件的磁盘使用情况。
# 显示当前目录的磁盘使用情况
du
# 以人类可读格式显示
du -h
# 显示总计
du -sh
# 显示指定目录的磁盘使用情况
du -sh /var/log
# 按大小排序显示最大的目录
du -h /var | sort -hr | head -10
free - 显示内存使用情况
free命令用于显示内存使用情况。
# 显示内存使用情况
free
# 以人类可读格式显示
free -h
# 以MB为单位显示
free -m
# 定期更新显示
free -h -s 1
4. 网络相关命令
ping - 测试网络连通性
ping命令用于测试网络连通性。
# ping目标主机
ping google.com
# 指定ping次数
ping -c 4 google.com
# 持续ping并显示时间戳
ping -D google.com
netstat - 显示网络连接、路由表、接口统计等
netstat命令用于显示网络连接、路由表、接口统计等。
# 显示所有连接
netstat -a
# 显示TCP连接
netstat -t
# 显示监听端口
netstat -l
# 显示进程ID和名称
netstat -p
# 显示数字格式的地址和端口
netstat -n
# 显示路由表
netstat -r
ss - 显示套接字统计信息
ss是netstat的替代品,速度更快,信息更详细。
# 显示所有连接
ss -a
# 显示TCP连接
ss -t
# 显示监听端口
ss -l
# 显示进程信息
ss -p
# 显示摘要信息
ss -s
ifconfig/ip - 配置网络接口
ifconfig和ip命令用于配置网络接口,ip是新一代工具。
# 显示所有网络接口
ifconfig -a
# 或
ip addr show
# 显示特定接口信息
ifconfig eth0
# 或
ip addr show eth0
# 启用/禁用接口
ifconfig eth0 up
ifconfig eth0 down
# 或
ip link set eth0 up
ip link set eth0 down
traceroute/tracert - 显示数据包到目标主机的路径
traceroute(Linux)和tracert(Windows)命令用于显示数据包到目标主机的路径。
# 追踪到目标主机的路由
traceroute google.com
# 使用ICMP协议进行追踪
traceroute -I google.com
# 指定最大跳数
traceroute -m 20 google.com
nslookup/dig - DNS查询工具
nslookup和dig命令用于DNS查询,dig提供更详细的信息。
# 查询域名的IP地址
nslookup google.com
# 或
dig google.com
# 查询特定类型的DNS记录
nslookup -type=MX google.com
# 或
dig google.com MX
# 反向DNS查询
nslookup 8.8.8.8
# 或
dig -x 8.8.8.8
curl/wget - 下载文件或测试URL
curl和wget命令用于下载文件或测试URL。
# 下载文件
curl -O https://example.com/file.txt
wget https://example.com/file.txt
# 显示HTTP响应头
curl -I https://example.com
# 发送POST请求
curl -X POST -d "param1=value1¶m2=value2" https://example.com/api
# 递归下载网站内容
wget -r https://example.com
ssh - 安全远程登录
ssh命令用于安全远程登录。
# 远程登录服务器
ssh username@hostname
# 指定端口登录
ssh -p 2222 username@hostname
# 使用密钥认证登录
ssh -i /path/to/private_key username@hostname
# 执行远程命令
ssh username@hostname "command"
# 端口转发
ssh -L 8080:localhost:80 username@hostname
5. 用户和权限管理命令
chmod - 修改文件权限
chmod命令用于修改文件权限。
# 使用数字模式设置权限
chmod 755 script.sh
# 使用符号模式设置权限
chmod u+x script.sh # 给所有者添加执行权限
chmod go-w file.txt # 移除组和其他用户的写权限
# 递归设置目录权限
chmod -R 755 directory/
chown - 修改文件所有者
chown命令用于修改文件所有者。
# 修改文件所有者
chown user file.txt
# 同时修改所有者和组
chown user:group file.txt
# 只修改组
chown :group file.txt
# 递归修改目录所有者
chown -R user:group directory/
passwd - 修改用户密码
passwd命令用于修改用户密码。
# 修改当前用户密码
passwd
# 修改指定用户密码(需要root权限)
passwd username
# 锁定/解锁用户账户
passwd -l username
passwd -u username
su - 切换用户
su命令用于切换用户。
# 切换到root用户
su -
# 切换到指定用户
su - username
# 执行命令后返回原用户
su - username -c "command"
sudo - 以其他用户身份执行命令
sudo命令用于以其他用户身份执行命令,通常用于执行需要root权限的命令。
# 以root权限执行命令
sudo command
# 以指定用户身份执行命令
sudo -u username command
# 编辑需要root权限的文件
sudo vi /etc/hosts
# 切换到root用户环境
sudo -i
6. 压缩和解压命令
tar - 打包和解包文件
tar命令用于打包和解包文件。
# 打包文件
tar -cvf archive.tar file1 file2 directory/
# 解包文件
tar -xvf archive.tar
# 打包并压缩(gzip)
tar -czvf archive.tar.gz file1 file2 directory/
# 解压并解包(gzip)
tar -xzvf archive.tar.gz
# 打包并压缩(bzip2)
tar -cjvf archive.tar.bz2 file1 file2 directory/
# 解压并解包(bzip2)
tar -xjvf archive.tar.bz2
# 查看压缩包内容
tar -tzvf archive.tar.gz
gzip/gunzip - 压缩和解压.gz文件
gzip和gunzip命令用于压缩和解压.gz文件。
# 压缩文件
gzip file.txt
# 解压文件
gunzip file.txt.gz
# 或
gzip -d file.txt.gz
# 显示压缩文件内容
gzip -c file.txt.gz | gunzip
# 压缩并保留原文件
gzip -k file.txt
zip/unzip - 压缩和解压.zip文件
zip和unzip命令用于压缩和解压.zip文件。
# 压缩文件
zip archive.zip file1.txt file2.txt
# 递归压缩目录
zip -r archive.zip directory/
# 解压文件
unzip archive.zip
# 解压到指定目录
unzip archive.zip -d destination/
# 列出压缩文件内容
unzip -l archive.zip
7. 系统服务管理命令
systemctl - 系统服务管理器
systemctl命令用于管理系统服务(systemd系统)。
# 启动服务
systemctl start nginx
# 停止服务
systemctl stop nginx
# 重启服务
systemctl restart nginx
# 重新加载服务配置
systemctl reload nginx
# 启用服务开机自启
systemctl enable nginx
# 禁用服务开机自启
systemctl disable nginx
# 查看服务状态
systemctl status nginx
# 查看所有服务状态
systemctl list-units --type=service
# 查看服务日志
journalctl -u nginx
service - 系统服务管理
service命令用于管理系统服务(SysV init系统)。
# 启动服务
service nginx start
# 停止服务
service nginx stop
# 重启服务
service nginx restart
# 查看服务状态
service nginx status
# 列出所有服务
service --status-all
8. 磁盘和文件系统管理命令
fdisk - 磁盘分区工具
fdisk命令用于磁盘分区管理。
# 列出所有磁盘分区
fdisk -l
# 对指定磁盘进行分区操作
fdisk /dev/sdb
# 在fdisk交互界面中常用命令:
# m - 显示帮助
# p - 显示分区表
# n - 创建新分区
# d - 删除分区
# w - 保存更改并退出
# q - 不保存更改退出
mount/umount - 挂载/卸载文件系统
mount和umount命令用于挂载和卸载文件系统。
# 挂载文件系统
mount /dev/sdb1 /mnt/data
# 挂载ISO文件
mount -o loop disk.iso /mnt/iso
# 挂载NFS共享
mount -t nfs nfs-server:/share /mnt/nfs
# 卸载文件系统
umount /mnt/data
# 卸载所有文件系统
umount -a
df - 显示磁盘空间使用情况
df命令已在前面系统监控部分介绍过,这里强调其在磁盘管理中的用途。
# 显示所有文件系统的磁盘使用情况
df -h
# 显示特定类型的文件系统
df -ht ext4
9. 其他实用命令
history - 显示命令历史
history命令用于显示命令历史。
# 显示命令历史
history
# 显示最近的10条命令
history 10
# 清除命令历史
history -c
# 执行历史命令中的第n条命令
!n
# 执行上一条命令
!!
# 搜索历史命令
ctrl+r
crontab - 定时任务管理
crontab命令用于管理定时任务。
# 编辑当前用户的定时任务
crontab -e
# 列出当前用户的定时任务
crontab -l
# 删除当前用户的定时任务
crontab -r
# 编辑指定用户的定时任务(需要root权限)
crontab -e -u username
# crontab格式:分 时 日 月 周 命令
# 示例:每天凌晨2点执行备份
0 2 * * * /path/to/backup.sh
nohup - 在后台运行命令,不受终端关闭影响
nohup命令用于在后台运行命令,不受终端关闭影响。
# 在后台运行命令,输出重定向到nohup.out
nohup command &
# 在后台运行命令,输出重定向到指定文件
nohup command > output.log 2>&1 &
# 在后台运行命令,丢弃所有输出
nohup command > /dev/null 2>&1 &
screen/tmux - 终端复用器
screen和tmux是终端复用器,允许在一个终端中创建多个会话。
# 创建新的screen会话
screen -S session_name
# 列出所有screen会话
screen -ls
# 重新连接到指定会话
screen -r session_name
# 创建新的tmux会话
tmux new -s session_name
# 列出所有tmux会话
tmux ls
# 重新连接到指定会话
tmux attach -t session_name
watch - 定期执行命令并显示结果
watch命令用于定期执行命令并显示结果。
# 每2秒执行一次命令
watch df -h
# 指定执行间隔(秒)
watch -n 5 df -h
# 高亮显示变化部分
watch -d df -h
Linux命令使用场景流程图
常用Linux命令分类表
| 类别 | 命令 | 主要用途 | 常用参数 |
|---|---|---|---|
| 文件操作 | ls | 列出目录内容 | -l(详细信息), -a(所有文件), -h(人类可读) |
| 文件操作 | cd | 切换目录 | ~(主目录), ..(上级目录), -(之前的目录) |
| 文件操作 | pwd | 显示当前目录 | -P(显示物理路径) |
| 文件操作 | mkdir | 创建目录 | -p(创建多级目录) |
| 文件操作 | rm | 删除文件/目录 | -r(递归), -f(强制), -rf(强制递归) |
| 文件操作 | cp | 复制文件/目录 | -r(递归), -p(保留属性) |
| 文件操作 | mv | 移动/重命名 | -f(强制覆盖) |
| 文本处理 | cat | 查看文件内容 | -n(显示行号) |
| 文本处理 | less/more | 分页查看 | -N(显示行号), -S(不换行) |
| 文本处理 | head/tail | 查看文件首尾 | -n(指定行数), -f(实时更新) |
| 文本处理 | grep | 文本搜索 | -i(忽略大小写), -r(递归), -v(反向匹配) |
| 文本处理 | sed | 流编辑器 | -i(直接修改), s/old/new/g(替换) |
| 文本处理 | awk | 文本处理 | -F(指定分隔符), '{print $1}'(打印列) |
| 系统监控 | top/htop | 进程监控 | -p(指定进程), -d(刷新间隔) |
| 系统监控 | ps | 显示进程 | aux(所有进程), -ef(完整格式) |
| 系统监控 | df | 磁盘使用情况 | -h(人类可读), -T(显示文件系统类型) |
| 系统监控 | du | 目录大小 | -h(人类可读), -s(总计) |
| 系统监控 | free | 内存使用情况 | -h(人类可读), -m(MB单位) |
| 网络工具 | ping | 测试连通性 | -c(次数), -i(间隔), -s(包大小) |
| 网络工具 | netstat/ss | 网络连接 | -a(所有), -t(TCP), -u(UDP), -l(监听) |
| 网络工具 | ifconfig/ip | 网络接口 | -a(所有接口), up/down(启用/禁用) |
| 网络工具 | traceroute | 路由追踪 | -I(ICMP), -n(数字格式) |
| 网络工具 | nslookup/dig | DNS查询 | -type=查询类型, -x(反向查询) |
| 网络工具 | curl/wget | 下载/测试 | -O(下载), -I(头信息), -X(请求方法) |
| 权限管理 | chmod | 修改权限 | u/g/o/a(用户/组/其他/所有), +/-/=(增/删/设) |
| 权限管理 | chown | 修改所有者 | user:group(用户和组), -R(递归) |
| 权限管理 | passwd | 修改密码 | -l(锁定), -u(解锁) |
| 权限管理 | su/sudo | 切换用户 | -(切换环境), -c(执行命令) |
| 压缩解压 | tar | 打包/解包 | -c(创建), -x(解包), -z(gzip), -j(bzip2) |
| 压缩解压 | gzip/gunzip | 压缩/解压 | -d(解压), -k(保留原文件) |
| 压缩解压 | zip/unzip | 压缩/解压 | -r(递归), -d(解压到目录) |
| 服务管理 | systemctl | 系统服务 | start/stop/restart, enable/disable, status |
| 服务管理 | service | 系统服务 | start/stop/restart, status |
| 磁盘管理 | fdisk | 磁盘分区 | -l(列出分区) |
| 磁盘管理 | mount/umount | 挂载/卸载 | -t(指定类型), -o(选项) |
| 其他 | history | 命令历史 | -c(清除), -d(删除) |
| 其他 | crontab | 定时任务 | -e(编辑), -l(列出), -r(删除) |
| 其他 | nohup | 后台运行 | &(后台执行), >输出重定向 |
| 其他 | screen/tmux | 终端复用 | -S(命名会话), -r(重连) |
| 其他 | watch | 定期执行 | -n(间隔), -d(高亮变化) |
总结
Linux命令是运维工程师日常工作的基础工具,熟练掌握这些命令对于高效完成工作至关重要。本文按功能分类介绍了日常工作中最常用的Linux命令及其用途,包括文件和目录操作、文本处理、系统监控、网络工具、用户和权限管理、压缩解压、系统服务管理、磁盘管理以及其他实用命令。
每个命令都有其特定的用途和常用参数,理解这些命令的功能和适用场景,能够帮助我们更高效地完成系统管理和故障排查工作。在实际工作中,我们常常需要组合使用多个命令来完成复杂的任务,例如使用ps和grep组合查找特定进程,使用find和exec组合批量处理文件等。
通过不断实践和积累经验,我们可以更加熟练地运用这些Linux命令,提高工作效率,成为一名优秀的运维工程师。
参考资料
思维导图
Interview AiBoxInterview AiBox — 面试搭档
不只是准备,更是实时陪练
Interview AiBox 在面试过程中提供实时屏幕提示、AI 模拟面试和智能复盘,让你每一次回答都更有信心。
AI 助读
一键发送到常用 AI
Linux命令是运维工程师日常工作的基础工具。本文按功能分类介绍了常用Linux命令及其用途,包括:1)文件和目录操作(ls, cd, pwd, mkdir, rm, cp, mv, find);2)文本处理(cat, less/more, head/tail, grep, sed, awk);3)系统监控(top/htop, ps, df, du, free);4)网络工具(ping, netstat/ss, ifconfig/ip, traceroute, nslookup/dig, curl/wget, ssh);5)用户和权限管理(chmod, chown, passwd, su/sudo);6)压缩解压(tar, gzip/gunzip, zip/unzip);7)系统服务管理(systemctl, service);8)磁盘管理(fdisk, mount/umount);9)其他实用命令(history, crontab, nohup, screen/tmux, watch)。每个命令都有其特定用途和常用参数,理解这些命令的功能和适用场景,能帮助运维工程师更高效地完成系统管理和故障排查工作。
智能总结
深度解读
考点定位
思路启发
相关题目
请做一个自我介绍
自我介绍是面试的开场环节,需简洁有力地展示个人背景、技能经验与岗位匹配度。有效结构包括:开场问候、核心经历、技能展示、成就亮点、岗位认知、职业规划、公司了解和得体收尾。针对运维岗位,应突出Linux管理、网络配置、自动化部署等技术能力,并结合具体案例和量化成果。表达要真诚自然,时间控制在2-3分钟,展现自信和对公司的了解。
请详细介绍一下你参与的项目
项目经验介绍应包括项目背景、个人角色、技术栈、工作内容、挑战与解决方案、成果收获以及与岗位的关联。通过具体案例展示技术能力和问题解决能力,突出与运维岗位相关的经验和技能,如系统部署、监控、故障排查、自动化运维等。同时体现团队协作和持续学习的态度。
请介绍一下你的项目经验
在面试中介绍项目经验时,应选择与运维岗位最相关的项目,按"项目背景→个人职责→技术栈→难点与解决方案→项目成果"的结构进行介绍。重点突出自己在项目中的技术贡献、解决问题的能力以及与运维岗位相关的经验。通过具体案例展示自己的技术实力、学习能力和团队协作精神,并将项目经验与应聘岗位联系起来,展示自己的匹配度和价值。
请进行自我介绍并详细介绍你参与过的项目
自我介绍和项目经验是面试的重要环节。优秀的自我介绍应简洁明了地展示个人背景、专业技能和职业规划;项目经验介绍则应选择与岗位相关的项目,详细说明项目背景、个人职责、使用技术、解决方案和项目成果。回答时应突出与岗位相关的技能和经验,展现专业能力和解决问题的能力,同时保持自信和真诚的态度。
请详细介绍你简历中提到的项目,包括实现细节和遇到的问题
面试中介绍项目经验时,应选择与运维岗位最相关的项目,按照"项目背景-个人职责-技术实现-遇到问题-解决方案-项目成果"的结构进行介绍。重点突出个人贡献、技术细节和解决问题的能力,用数据量化项目成果。示例包括校园服务器集群自动化运维平台和基于Kubernetes的微服务部署与运维两个项目,展示了监控模块设计、CI/CD流水线构建、故障排查等运维核心能力。