运维工作涉及系统的日常监控、故障排查、性能优化、安全防护等多个方面,熟练使用常用命令是运维工程师的核心技能之一,以下从系统监控、文件管理、进程管理、网络诊断、日志分析、用户与权限管理、软件安装与配置七个维度,详细梳理运维常用的命令及其使用场景。

系统监控命令
系统监控是运维的基础工作,需实时掌握服务器资源使用情况。
- top:动态监控系统进程资源占用,包括CPU、内存、进程状态等,常用参数如
-d
(刷新间隔)、-p
(指定进程PID)。 - htop:
top
的增强版,支持彩色显示、进程树可视化、鼠标操作等,交互性更强。 - free:查看内存使用情况,
-h
参数以人类可读格式(如GB、MB)显示数据。 - df -h:检查磁盘空间使用率,
-h
参数同样用于格式化输出,-i
可查看inode使用情况。 - vmstat:报告虚拟内存统计信息,包括进程、内存、I/O、CPU等,
1
参数可每秒刷新一次,实时监控性能瓶颈。 - sar:系统活动报告工具,需安装
sysstat
包,可通过sar -u
查看CPU利用率,-r
查看内存使用,-b
查看I/O性能。
文件管理命令
服务器上的文件操作是日常运维的高频场景,需熟练掌握文本处理和目录管理命令。
- ls -la:列出文件及目录详细信息,包括权限、所有者、大小、修改时间等,
-a
显示隐藏文件。 - cp/rm/mv:基础文件操作命令,
cp -r
递归复制目录,rm -rf
强制删除目录(需谨慎使用),mv
可重命名或移动文件。 - find:按条件查找文件,如
find /var -name "*.log" -mtime +7
查找/var
目录下7天前修改的.log
文件。 - grep:文本搜索工具,
grep "error" /var/log/nginx/error.log
在日志中搜索包含"error"的行,-i
忽略大小写,-v
取反。 - awk:文本处理工具,支持列提取和计算,如
awk '{print $1, $NF}' /var/log/access.log
打印每行的第一列和最后一列。 - sed:流编辑器,用于文本替换,如
sed -i 's/old/new/g' file.txt
直接在文件中替换所有"old"为"new"。
进程管理命令
进程管理涉及服务启停、异常进程处理等,需精准控制进程状态。
- ps -ef:查看当前系统进程,
-e
显示所有进程,-f
显示完整格式,结合grep
可筛选特定进程,如ps -ef | grep nginx
。 - kill/killall:终止进程,
kill -9
强制杀死进程,killall nginx
通过进程名批量终止。 - nohup:让进程在后台持续运行,如
nohup python app.py &
,输出默认重定向到nohup.out
。 - jobs:查看后台任务,
bg
将前台任务转后台,fg
将后台任务调至前台。 - systemctl:管理系统服务,
systemctl start nginx
启动服务,status
查看状态,enable
设置开机自启,restart
重启服务。
网络诊断命令
网络问题排查需定位链路、端口、服务异常,常用命令如下:

- ping:测试网络连通性,
ping -c 4 www.baidu.com
发送4个数据包。 - telnet/nc:检查端口是否可达,
telnet 192.168.1.1 80
或nc -zv 192.168.1.1 80
测试80端口。 - netstat/ss:查看网络连接状态,
netstat -tuln
显示监听端口,ss -tuln
为netstat
的替代工具,速度更快。 - traceroute/mtr:跟踪网络路由路径,
traceroute www.baidu.com
显示经过的节点,mtr www.baidu.com
持续跟踪并丢包统计。 - curl/wget:下载网页或测试HTTP服务,
curl -I http://www.baidu.com
查看HTTP响应头,wget -O file.html http://www.baidu.com
下载网页。
日志分析命令
日志是排查故障的关键,需高效过滤和分析日志内容。
- tail -f:实时跟踪日志文件变化,
tail -f /var/log/messages
实时查看系统日志。 - cat/less:查看日志内容,
less /var/log/nginx/access.log
支持分页和关键词搜索(通过)。 - journalctl:查看系统日志(systemd系统),
journalctl -u nginx.service
查看nginx服务日志,-f
实时跟踪,-n 100
显示最后100行。 - sort/uniq:日志去重和排序,
sort file.log | uniq -c
统计每行出现次数,sort -n
按数字排序。
用户与权限管理
权限管理是系统安全的重点,需严格控制用户操作权限。
- useradd/userdel:创建/删除用户,
useradd -m testuser
创建用户并创建家目录,userdel -r testuser
删除用户及家目录。 - passwd/sudo:修改用户密码或授权sudo权限,
sudo visudo
编辑/etc/sudoers
文件,添加testuser ALL=(ALL) ALL
赋予所有权限。 - chmod/chown:修改文件权限和所有者,
chmod 755 file.sh
设置所有者可读写执行、组和其他用户可读执行,chown testuser:testgroup file.txt
修改文件所有者和所属组。 - su/sudo -i:切换用户,
su - testuser
切换至testuser用户并加载其环境变量,sudo -i
以root身份登录。
软件安装与配置
不同系统的软件管理命令存在差异,需掌握主流工具。
- Linux包管理:
- RedHat/CentOS:
yum install nginx
安装软件,yum update
更新系统,yum clean all
清理缓存。 - Debian/Ubuntu:
apt install nginx
安装软件,apt update
更新软件列表,apt upgrade
升级软件包。
- RedHat/CentOS:
- 源码编译安装:通过
./configure
、make
、make install
三步编译安装软件,需依赖编译工具(如gcc
、make
)。 - 服务配置:编辑配置文件(如
/etc/nginx/nginx.conf
)后,通过nginx -t
检查配置语法,systemctl reload nginx
重载配置。
以下为部分命令的参数总结表:

命令 | 常用参数 | 功能说明 |
---|---|---|
top | -d 1 , -p 1234 |
实时监控进程资源 |
grep | -i , -v , -n |
文本搜索,忽略大小写/取反/显示行号 |
find | -name , -mtime , -type |
按名称/修改时间/文件类型查找 |
netstat | -tuln , -anp |
显示监听端口/所有连接及PID |
systemctl | start , status , enable |
管理服务状态及开机自启 |
相关问答FAQs
Q1: 如何快速定位高CPU占用率的进程?
A1: 可通过以下步骤定位:
- 使用
top
命令按P
键(大写)按CPU占用率排序,找到占用率最高的进程PID。 - 若
top
信息不足,使用ps -p <PID> -o pid,ppid,cmd,%cpu,%mem
查看进程详细信息。 - 若为Java进程,可结合
jstack <PID> > jstack.log
生成线程堆栈,分析具体线程问题。
Q2: 日志文件过大导致磁盘空间不足,如何高效清理?
A2: 清理大日志文件需谨慎,避免丢失重要数据,推荐以下方法:
- 日志轮转:配置
logrotate
工具(如/etc/logrotate.d/nginx
),自动按日期分割并压缩日志,保留最近N天。 - 手动清理:对于无需保留的日志,可直接
> /var/log/big.log
清空文件(不删除文件本身,避免进程无法写入),或mv /var/log/big.log /var/log/big.log.bak
后重启服务(新日志会自动生成)。 - 按需过滤:使用
grep
提取关键日志后保存,再删除原文件,如grep "error" /var/log/app.log > error.log && > /var/log/app.log
。
掌握以上命令及使用场景,可大幅提升运维效率,但需注意操作前备份数据,尤其在涉及rm -rf
、chmod 777
等高危命令时,务必确认操作目标,避免误操作导致系统故障。