服务器维护是确保系统稳定、安全、高效运行的核心工作,而熟练掌握常用命令则是运维工程师的基本功,这些命令覆盖了系统监控、进程管理、磁盘操作、网络诊断、日志分析等多个维度,能够帮助运维人员快速定位问题、优化性能、完成日常维护任务,以下从不同场景出发,详细介绍服务器维护中常用的命令及其使用方法。

在系统监控方面,top 和 htop 是实时查看系统资源占用情况的利器。top 命令默认以动态刷新的方式显示进程的CPU、内存使用率,以及系统的负载平均值(load average),通过按M可按内存占用排序,按P按CPU占用排序,而 htop 作为 top 的增强版,提供了更直观的界面,支持鼠标操作、进程树状图显示,还能直接杀死进程,使用体验更佳,若需查看系统整体的资源使用统计,vmstat 命令非常实用,其输出包含进程数、内存使用、 swapping、磁盘IO、系统中断等信息,vmstat 1 可每秒刷新一次数据,便于观察短期资源波动,对于磁盘空间监控,df -h 命令以人类可读格式(如GB、MB)显示各文件系统的磁盘使用量,-h 参数让输出更易理解;而 du -sh * 则用于查看当前目录下各文件及子目录的大小,-s 表示汇总,-h 同样是人性化显示,结合 sort -rh 可快速定位占用空间最大的文件或目录。
进程管理是服务器日常维护的核心任务之一。ps 命令用于查看当前运行的进程,ps -ef 显示所有进程的详细信息(包括UID、PID、PPID、C、STIME、TTY、TIME、CMD),而 ps aux 则以BSD格式输出,包含CPU和内存使用率,若需筛选特定进程,可结合 grep,ps -ef | grep nginx 查找所有nginx相关进程,对于已停止或异常的进程,kill 命令可终止进程,kill [PID] 发送SIGTERM信号(正常终止),kill -9 [PID] 强制发送SIGKILL信号(立即终止,不推荐轻易使用);若需批量管理进程,pkill 命令更高效,pkill -f "nginx worker" 可终止所有包含"nginx worker"的进程,后台进程管理方面,nohup command & 可让命令在后台运行且忽略挂断信号,输出默认写入nohup.out,适合执行耗时较长的任务;jobs 命令查看后台任务列表,bg %jobnumber 将暂停的任务转为后台运行,fg %jobnumber 将后台任务调至前台。
磁盘与文件系统维护中,lsblk 和 fdisk 是查看和管理磁盘分区的常用工具。lsblk 以树状图显示块设备信息,包括设备名、大小、挂载点等,而 fdisk -l 列出所有磁盘分区表信息,fdisk /dev/sdb 可进入交互式界面对指定磁盘进行分区操作,文件系统检查方面,fsck 命令用于修复文件系统错误,fsck /dev/sda1 检查并修复sda1分区,但需在卸载分区后执行,否则可能导致数据损坏,对于挂载操作,mount 命令可临时挂载文件系统,如 mount /dev/sdb1 /mnt/data 将sdb1挂载到/mnt/data目录;umount 用于卸载,umount /mnt/data 或 umount /dev/sdb1 均可,若设备正被占用,可结合 lsof | grep /mnt/data 查找占用进程,权限管理上,chmod 修改文件权限,chmod 755 file 设置所有者可读写执行、组用户和其他用户可读执行;chown 修改所有者,chown user:group file 将文件所有者设为user、所属组设为group,-R 参数可递归修改目录及其内容的权限和所有者。
网络诊断与维护命令是排查网络问题的关键。ping 命令测试网络连通性,ping -c 4 www.baidu.com 发送4个包后退出,-i 参数可调整发送间隔;traceroute 或 traceroute -n(禁用DNS解析)跟踪数据包到达目标主机的路径,定位网络延迟或中断节点,网络配置方面,ifconfig(传统工具)或 ip addr(推荐)查看和配置网络接口信息,ip addr show eth0 显示eth0接口的IP、子网掩码等,ip addr add 192.168.1.100/24 dev eth0 为eth0添加临时IP地址,端口监控中,netstat -tuln 显示所有监听的TCP和UDP端口及其状态,-t TCP、-u UDP、-l 只显示监听端口、-n 禁用DNS解析;ss -tuln 是 netstat 的替代工具,速度更快,输出更清晰,ss -tulpn | grep :80 查看80端口被哪个进程占用,数据传输测试时,scp 用于 secure copy,scp -r /local/path user@remote:/remote/path 递归复制本地目录到远程服务器;wget 或 curl 用于下载文件,wget https://example.com/file.zip 或 curl -O https://example.com/file.zip,curl 还支持发送HTTP请求,适合测试API接口。

日志分析是定位系统和服务问题的核心手段。tail -f /var/log/nginx/access.log 实时查看nginx访问日志的末尾内容,-f 参数持续跟踪文件变化;grep "error" /var/log/syslog 从系统日志中筛选包含"error"的行,-i 参数忽略大小写,若需分析日志的时间范围,sed -n '2023-10-01 10:00,2023-10-01 11:00p' /var/log/auth.log 提取指定时间段的日志,或结合 awk 处理结构化日志,awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr 统计访问量最高的IP地址,日志轮转配置方面,logrotate 是常用的日志管理工具,通过配置文件(如 /etc/logrotate.d/nginx)实现日志按大小或时间轮转、压缩和删除,避免单个日志文件过大。
以下是相关问答FAQs:
Q1: 使用 kill -9 强制终止进程有什么风险?
A: kill -9 发送的是SIGKILL信号,该信号无法被进程捕获或忽略,会立即终止进程,但若进程正在执行关键操作(如写入文件),强制终止可能导致数据损坏、文件系统不一致或服务状态异常,建议优先使用 kill(SIGTERM信号)让进程正常退出,仅在进程无响应时再使用 kill -9,并确保已保存相关数据。
Q2: 如何通过命令快速定位占用磁盘空间最大的文件或目录?
A: 可结合 du 和 sort 命令实现,在当前目录下执行 du -sh * | sort -rh | head -n 10,du -sh * 计算每个文件和子目录的大小并汇总,sort -rh 按数值降序排序(-r 降序、-h 人类可读格式),head -n 10 显示前10个最大的文件或目录,若需递归搜索整个系统,可使用 sudo du -sh /path/to/dir/* 2>/dev/null | sort -rh | head -n 10,注意添加 2>/dev/null 忽略无权限目录的错误信息。


 
                             
         
         
         
         
         
         
         
         
         
        