1. Linux运维工程师的必备武器:核心基础命令解析
作为在Linux系统上摸爬滚打多年的老运维,我深知命令行操作是每个运维人员的立身之本。不同于图形界面,命令行提供了更高效、更灵活的系统管理方式。当服务器出现问题时,往往一个简单的命令就能快速定位问题根源。本文将重点介绍那些每天都会用到的核心基础命令,以及它们在实际运维工作中的典型应用场景。
Linux命令通常由三部分组成:命令本身、选项和参数。选项通常以"-"或"--"开头,用于修改命令的行为;参数则是命令操作的对象。例如在ls -l /home这个命令中,ls是命令本身,-l是选项,/home是参数。理解这个基本结构对后续学习各种命令非常重要。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件与目录操作命令
2.1 导航与查看:ls、pwd、cd
ls命令可能是使用频率最高的命令之一。它用于列出目录内容,但它的强大之处在于各种选项:
bash复制ls -l # 长格式显示,包含权限、所有者、大小等信息
ls -a # 显示所有文件,包括隐藏文件(以.开头)
ls -lh # 人类可读的文件大小显示(如K、M、G)
ls -t # 按修改时间排序
ls -R # 递归显示子目录内容
pwd(Print Working Directory)命令简单但实用,它能显示当前所在目录的完整路径。在复杂的目录结构中工作时,这个命令能帮你确认自己的位置。
cd命令用于切换目录,有几个特殊用法值得记住:
bash复制cd ~ # 切换到当前用户的家目录
cd - # 切换到上一个工作目录
cd .. # 切换到上级目录
2.2 文件操作:cp、mv、rm、touch
cp命令用于复制文件或目录:
bash复制cp file1 file2 # 复制文件
cp -r dir1 dir2 # 递归复制目录
cp -p file1 file2 # 保留原文件属性(权限、时间戳等)
cp -u source dest # 只复制更新的文件
mv命令既可移动文件也可重命名文件:
bash复制mv oldname newname # 重命名文件
mv file /path/to/dir/ # 移动文件到指定目录
rm命令用于删除文件,使用时需特别小心:
bash复制rm file # 删除文件
rm -r dir # 递归删除目录
rm -f file # 强制删除,不提示
警告:
rm -rf /这样的命令会强制删除系统所有文件,务必避免使用!
touch命令主要有两个用途:创建空文件和更新文件时间戳:
bash复制touch newfile # 创建新空文件
touch existing_file # 更新文件访问和修改时间为当前时间
3. 文件内容查看与处理
3.1 查看文件内容:cat、less、head、tail
cat命令是最简单的文件内容查看工具:
bash复制cat file # 显示整个文件内容
cat file1 file2 > combined # 合并多个文件
cat > newfile # 从标准输入创建新文件(Ctrl+D结束)
less命令更适合查看大文件,支持搜索和翻页:
bash复制less large_file.log # 分页查看文件
# 在less中:/搜索词(向下搜索),?搜索词(向上搜索),q退出
head和tail分别显示文件开头和结尾部分:
bash复制head -n 20 file # 显示文件前20行
tail -n 30 file # 显示文件最后30行
tail -f logfile # 实时追踪日志文件变化(Ctrl+C退出)
3.2 文本处理:grep、awk、sed
grep是强大的文本搜索工具:
bash复制grep "error" logfile # 搜索包含"error"的行
grep -i "warning" file # 忽略大小写搜索
grep -v "success" file # 显示不匹配的行
grep -r "function" /path/to/dir # 递归搜索目录中的文件
awk是一个完整的编程语言,特别适合处理结构化文本:
bash复制awk '{print $1}' file # 打印每行第一个字段
awk -F: '{print $1}' /etc/passwd # 以:为分隔符打印第一列
awk '$3 > 100 {print $0}' file # 打印第三列大于100的行
sed是流编辑器,适合批量替换文本:
bash复制sed 's/old/new/g' file # 替换文件中所有old为new
sed -i.bak 's/foo/bar/g' file # 直接修改文件(保留备份)
sed '/pattern/d' file # 删除匹配的行
4. 系统监控与管理命令
4.1 进程管理:ps、top、kill
ps命令显示当前进程状态:
bash复制ps aux # 显示所有用户的所有进程详细信息
ps -ef # 另一种格式显示进程信息
ps -u username # 显示特定用户的进程
top命令实时显示系统进程和资源使用情况:
bash复制top # 启动动态进程查看器
# 在top中:M按内存排序,P按CPU排序,q退出
kill命令用于终止进程:
bash复制kill -9 PID # 强制终止指定PID的进程
killall process_name # 终止所有同名进程
pkill -u username # 终止某用户的所有进程
4.2 系统资源监控:free、df、du
free命令显示内存使用情况:
bash复制free -h # 以人类可读格式显示内存信息(GB/MB)
free -m # 以MB为单位显示
df命令显示磁盘空间使用情况:
bash复制df -h # 人类可读格式显示磁盘空间
df -i # 显示inode使用情况
du命令查看目录或文件占用的磁盘空间:
bash复制du -sh /path/to/dir # 显示目录总大小
du -ah --max-depth=1 /path # 显示目录下各文件/子目录大小
5. 网络相关命令
5.1 网络配置与诊断:ifconfig、ip、ping、netstat
ifconfig(较老)和ip(推荐)用于网络接口配置:
bash复制ifconfig # 显示网络接口信息(需要root权限)
ip addr show # 显示IP地址信息(新推荐方式)
ip route show # 显示路由表
ping命令测试网络连通性:
bash复制ping example.com # 测试到example.com的连通性
ping -c 4 8.8.8.8 # 发送4个ping包后停止
netstat命令显示网络连接和统计信息:
bash复制netstat -tulnp # 显示所有监听端口及相关进程
netstat -rn # 显示路由表
5.2 网络数据传输:curl、wget、scp
curl是强大的URL传输工具:
bash复制curl http://example.com # 获取网页内容
curl -o file.txt http://example.com # 下载文件保存为file.txt
curl -I http://example.com # 只显示HTTP头信息
wget是另一个常用的下载工具:
bash复制wget http://example.com/file.zip # 下载文件
wget -c http://example.com/bigfile.iso # 断点续传
wget -r -np http://example.com/path/ # 递归下载网站
scp用于在本地和远程系统间安全传输文件:
bash复制scp file user@remote:/path/ # 上传文件到远程服务器
scp user@remote:/path/file local_dir # 从远程下载文件
scp -r dir user@remote:/path/ # 递归传输整个目录
6. 权限与用户管理
6.1 文件权限:chmod、chown
chmod修改文件权限:
bash复制chmod 755 script.sh # 设置权限为rwxr-xr-x
chmod +x file # 添加可执行权限
chmod -R 644 /path/to/dir # 递归修改目录下所有文件权限
chown修改文件所有者和组:
bash复制chown user:group file # 修改文件所有者和组
chown -R user:group dir # 递归修改目录下所有文件
6.2 用户与组管理:useradd、passwd、usermod
useradd创建新用户:
bash复制useradd -m -s /bin/bash username # 创建用户并创建家目录,设置shell为bash
passwd设置或修改用户密码:
bash复制passwd username # 修改某用户密码(需要root权限)
usermod修改用户属性:
bash复制usermod -aG sudo username # 将用户添加到sudo组
usermod -s /bin/bash username # 修改用户默认shell
7. 实用技巧与高级用法
7.1 命令组合与管道
Linux命令的强大之处在于可以通过管道(|)将多个命令组合使用:
bash复制ps aux | grep python # 查找所有Python进程
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr # 统计日志中访问量最大的IP
find /var/log -name "*.log" -type f -mtime +30 -exec rm {} \; # 删除30天前的日志文件
7.2 后台运行与作业控制
在运维工作中,经常需要让命令在后台运行:
bash复制long_running_command & # 在后台运行命令
jobs # 查看后台作业
fg %1 # 将作业1调回前台
bg %2 # 将作业2放到后台继续运行
nohup command & # 退出终端后命令继续运行
7.3 命令历史与别名
提高效率的小技巧:
bash复制history # 查看命令历史
!100 # 执行历史记录中第100条命令
!! # 执行上一条命令
alias ll='ls -alF' # 创建命令别名
8. 常见问题排查技巧
8.1 磁盘空间不足
当系统提示磁盘空间不足时,可以按以下步骤排查:
bash复制df -h # 查看哪个分区空间不足
du -sh /* # 查看根目录下各目录大小
du -ah /path | sort -rh | head -n 20 # 找出指定路径下最大的20个文件
8.2 内存不足问题
内存问题排查方法:
bash复制free -h # 查看内存使用情况
top # 查看哪些进程占用内存多
ps aux --sort=-%mem | head -n 10 # 显示内存占用最高的10个进程
8.3 网络连接问题
网络故障排查流程:
bash复制ping google.com # 测试基本连通性
traceroute google.com # 追踪路由路径
netstat -tulnp # 检查服务监听端口
telnet host port # 测试特定端口是否开放
9. 自动化运维中的命令应用
在现代运维工作中,这些基础命令常常被用于自动化脚本中。例如,一个简单的监控脚本可能包含:
bash复制#!/bin/bash
# 监控CPU使用率
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
# 监控内存使用率
MEM_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
# 监控磁盘空间
DISK_USAGE=$(df / | grep / | awk '{print $5}' | sed 's/%//g')
# 发送告警
if (( $(echo "$CPU_USAGE > 90" | bc -l) )); then
echo "High CPU usage: $CPU_USAGE%" | mail -s "CPU Alert" admin@example.com
fi
这个简单的脚本展示了如何将多个基础命令组合使用来实现系统监控功能。在实际工作中,类似的脚本可以扩展为完整的监控解决方案。
掌握这些Linux核心基础命令是每个运维人员的基本功。虽然现在有很多自动化工具和图形界面,但在关键时刻,命令行仍然是最可靠、最高效的解决方案。建议新手从这些基础命令开始,逐步构建自己的知识体系,并通过实际工作不断积累经验。记住,熟练使用这些命令的关键在于实践——多动手操作,多解决实际问题,才能真正掌握Linux运维的精髓。
