服务器常用命令大全:Linux与Windows服务器管理命令速查表

无论是刚接触服务器的新手,还是经验丰富的运维工程师,掌握服务器常用命令都是做好日常管理工作的基础。Linux和Windows作为两大主流服务器操作系统,在命令行管理方式上有很大差异,但核心运维场景却是相通的——查看系统状态、管理进程、配置网络、监控磁盘、操作文件、管理用户与权限、控制服务启停、排查日志故障。
本文将以对照表的形式,系统梳理Linux与Windows两大平台下的服务器管理命令,并针对每个场景给出详细的中文解释、典型使用场景和最佳实践建议。你可以把这篇文章当作案头速查手册,遇到具体问题时快速定位对应命令。
一、系统信息查看命令
拿到一台新服务器,第一步永远是摸清它的"家底":操作系统版本、内核版本、CPU架构与核心数、内存容量、磁盘配置、主机名以及已运行时间。这些信息决定了后续能装什么软件、能承载多大负载,也是性能调优和故障排查的基础依据。
在Linux系统中,系统信息分散在/proc目录和各类专用命令中;而在Windows中,主要通过systeminfo和WMI(Windows Management Instrumentation)查询。下表列出了两个平台下最常用的系统信息查看命令。
| 用途 | Linux命令 | Windows命令 |
|---|---|---|
| 查看系统发行版 | cat /etc/os-release | systeminfo |
| 查看内核版本 | uname -a / uname -r | ver |
| 查看CPU信息 | lscpu / cat /proc/cpuinfo | wmic cpu get name,numberofcores |
| 查看内存信息 | free -h / cat /proc/meminfo | wmic memorychip get capacity |
| 查看磁盘硬件 | lsblk / fdisk -l | wmic diskdrive get model,size |
| 查看运行时间与负载 | uptime | systeminfo | findstr "启动" |
| 查看主机名 | hostname / hostnamectl | hostname |
使用场景说明:当服务器性能下降时,首先要用uptime查看系统负载平均值(load average),如果三个数值(1分钟、5分钟、15分钟)持续高于CPU核心数,说明系统已经过载。用free -h查看内存时,要重点关注"available"列而非"free"列,因为Linux会把空闲内存用作文件缓存,available才是实际可用内存。
# Linux查看系统核心信息
cat /etc/os-release
uname -r
lscpu
free -h
uptime
# Windows查看系统核心信息
systeminfo
wmic cpu get name,numberofcores
wmic memorychip get capacity
二、进程管理命令
进程管理是服务器运维中最核心的能力之一。服务卡死、CPU飙高、内存泄漏、僵尸进程堆积——这些问题都需要通过进程管理命令来发现和解决。掌握服务器常用命令中的进程管理部分,能让你在面对生产故障时快速定位"是谁在捣乱"。
Linux用ps查看进程快照、用top或htop实时监控、用kill发送信号终止进程;Windows则用tasklist查看、用任务管理器或taskkill终止。两者的思路一致,只是命令名称和参数不同。
| 用途 | Linux命令 | Windows命令 |
|---|---|---|
| 查看进程列表 | ps -ef / ps aux | tasklist |
| 实时监控进程 | top / htop | taskmgr(任务管理器) |
| 按名称查找进程 | ps -ef | grep 名称 | tasklist | findstr 名称 |
| 结束指定进程 | kill PID / kill -9 PID | taskkill /PID PID /F |
| 按名称结束进程 | pkill 名称 / killall 名称 | taskkill /IM 名称.exe /F |
| 后台运行进程 | nohup 命令 & | start /b 命令 |
| 查看进程资源占用 | top -p PID / pidstat -p PID | tasklist /fi "PID eq PID" |
最佳实践建议:kill -9是强制杀进程(SIGKILL信号),进程无法做清理工作就直接终止,可能导致数据损坏或临时文件残留,应作为最后手段,优先用kill PID(默认发送SIGTERM)让进程优雅退出。在Windows下同理,taskkill /F也是强制终止,非必要不使用。
另一个常见场景是排查CPU占用过高的问题。在Linux下可以先用top找到占用最高的进程PID,再用top -Hp PID查看该进程下哪个线程占用最高,最后用printf "%x\n" 线程ID转为十六进制,到Java应用的jstack日志中定位具体代码行。这是排查Java应用CPU飙高的标准流程。
# Linux查找并结束占用高的Java进程
ps -ef | grep java
top -Hp 12345
kill -9 12345
# Windows查找并结束进程
tasklist | findstr java
taskkill /PID 12345 /F
三、网络配置与管理命令
网络是服务器的命脉。无论是配置IP地址、测试连通性、排查端口占用,还是分析网络延迟,都需要用到网络管理命令。掌握这些服务器管理命令,能帮你快速回答"网络通不通""端口开没开""DNS解析对不对"这几个核心问题。
Linux的网络命令工具非常丰富,从传统的ifconfig、netstat到现代的ip、ss,功能越来越强大。Windows则主要依赖ipconfig、netstat和ping等命令。
| 用途 | Linux命令 | Windows命令 |
|---|---|---|
| 查看IP地址 | ip addr / ifconfig | ipconfig / ipconfig /all |
| 测试网络连通性 | ping 地址 | ping 地址 |
| 追踪路由路径 | traceroute 地址 / mtr 地址 | tracert 地址 |
| 查看端口监听 | ss -tlnp / netstat -tlnp | netstat -ano |
| 测试端口连通性 | nc -vz IP 端口 | telnet IP 端口 |
| 查看DNS解析 | nslookup 域名 / dig 域名 | nslookup 域名 |
| 查看路由表 | ip route / route -n | route print |
| 网络抓包分析 | tcpdump -i eth0 | (需安装Wireshark等工具) |
使用场景说明:当应用无法启动并报"端口被占用"时,在Linux下用ss -tlnp | grep 端口号可以快速找到占用端口的进程PID;在Windows下用netstat -ano | findstr 端口号找到PID后,再用tasklist | findstr PID确认进程名称。
排查网络不通的问题时,建议按"由近及远"的顺序排查:先ping 127.0.0.1测试本机协议栈,再ping 本机IP测试网卡,然后ping 网关测试内网,接着ping 8.8.8.8测试外网连通,最后nslookup 域名测试DNS解析。这样可以精确定位问题出在哪一环。
# Linux查看端口监听与占用进程
ss -tlnp | grep 8080
# 测试端口连通性
nc -vz 192.168.1.100 3306
# 查看DNS解析
dig example.com
# Windows查看端口占用
netstat -ano | findstr 8080
tasklist | findstr 12345
# 测试端口连通性
telnet 192.168.1.100 3306
四、磁盘空间管理命令
磁盘空间不足是服务器最常见的故障之一,轻则应用无法写入日志和数据,重则导致数据库崩溃、系统无法启动。定期监控磁盘使用率、及时清理无用文件、合理规划分区,是每个运维人员必须养成的好习惯。
Linux用df查看整体磁盘空间、用du统计目录占用大小、用lsblk查看块设备布局;Windows主要通过wmic或磁盘管理界面查看。
| 用途 | Linux命令 | Windows命令 |
|---|---|---|
| 查看磁盘空间使用 | df -h | wmic logicaldisk get size,freespace |
| 查看目录占用大小 | du -sh 目录 / du -h --max-depth=1 | (需第三方工具如TreeSize) |
| 查看inode使用率 | df -i | — |
| 查看块设备 | lsblk | diskpart / list disk |
| 查看分区信息 | fdisk -l / parted -l | diskpart / list partition |
| 挂载磁盘 | mount /dev/sdb1 /mnt | (磁盘管理界面分配盘符) |
| 格式化分区 | mkfs.ext4 /dev/sdb1 | format D: /fs:ntfs |
最佳实践建议:磁盘空间排查的标准流程是:先用df -h找到哪个分区快满了,再用du -h --max-depth=1 /挂载点 | sort -rh | head -20逐层定位大目录,最终找到大文件并判断是否可以删除。特别注意/var/log(日志)、/tmp(临时文件)、/var/lib/docker(Docker数据)这三个目录是磁盘占用的"重灾区"。
另一个容易忽视的问题是inode耗尽。当磁盘空间还有剩余但系统报"No space left on device"时,很可能是inode用完了(小文件过多),用df -i即可确认。这种情况常见于邮件队列目录或大量碎片化小文件的场景。
# Linux排查磁盘空间
df -h
du -h --max-depth=1 /var | sort -rh | head -20
# 查找大于100M的文件
find / -type f -size +100M -exec ls -lh {} \;
五、文件操作与压缩命令
文件操作是最基础也是最频繁使用的服务器常用命令。从查看目录内容、复制移动文件,到搜索定位文件、打包压缩备份,这些操作贯穿在日常运维的方方面面。熟练掌握文件操作命令能大幅提升工作效率。
Linux的文件命令功能强大且参数丰富,一条命令配合管道就能完成复杂操作;Windows的命令相对简单,但在PowerShell下也能实现类似功能。
| 用途 | Linux命令 | Windows命令 |
|---|---|---|
| 列出文件列表 | ls -lh / ls -la | dir / dir /a |
| 复制文件或目录 | cp 源 目标 / cp -r 目录 目标 | copy 源 目标 / xcopy /e |
| 移动或重命名 | mv 源 目标 | move 源 目标 / ren 旧名 新名 |
| 删除文件或目录 | rm 文件 / rm -rf 目录 | del 文件 / rmdir /s /q 目录 |
| 查找文件 | find / -name 文件名 | where /r C:\ 文件名 |
| 查看文件内容 | cat / less / head / tail | type 文件 / more 文件 |
| 打包压缩 | tar -czvf 包名.tar.gz 目录 | (用7-Zip或PowerShell命令) |
| 解压解包 | tar -xzvf 包名.tar.gz | (用7-Zip或Expand-Archive) |
使用场景说明:备份网站目录是常见需求,用tar -czvf backup.tar.gz /var/www/html可以将整个网站打包压缩,-c表示创建新包,-z表示用gzip压缩,-v显示过程,-f指定文件名。解压时把-c换成-x即可。
安全提醒:rm -rf是Linux下最危险的命令之一,没有确认提示且不可恢复。操作前务必用pwd确认当前目录,用ls确认要删除的内容,绝对不要在根目录/下执行rm -rf。建议在脚本中使用时加上--preserve-root参数防止误删根目录。
# Linux打包压缩与解压
tar -czvf www_backup.tar.gz /var/www/html
tar -xzvf www_backup.tar.gz -C /restore/
# 查找并删除7天前的日志
find /var/log -name "*.log" -mtime +7 -delete
六、用户与权限管理命令
服务器的安全性很大程度上取决于用户和权限管理是否到位。每个应该有独立账号、最小权限原则要严格执行、敏感操作要通过sudo授权而非直接用root——这些都是基本的安全规范。掌握用户管理相关的服务器管理命令,是保障服务器安全的重要一环。
Linux采用完善的用户/组/权限模型,命令丰富;Windows则通过用户账户和用户组来管理,命令相对直观。
| 用途 | Linux命令 | Windows命令 |
|---|---|---|
| 创建用户 | useradd 用户名 / adduser 用户名 | net user 用户名 密码 /add |
| 删除用户 | userdel -r 用户名 | net user 用户名 /delete |
| 修改密码 | passwd 用户名 | net user 用户名 新密码 |
| 查看当前用户 | whoami / id | whoami |
| 切换用户 | su - 用户名 / sudo -i | runas /user:用户名 命令 |
| 修改文件权限 | chmod 755 文件 | icacls 文件 /grant 用户:权限 |
| 修改文件属主 | chown 用户:组 文件 | (通过文件属性界面) |
| 加入用户组 | usermod -aG 组名 用户名 | net localgroup 组名 用户名 /add |
最佳实践建议:生产服务器应禁用root直接登录,改为使用普通账号配合sudo执行特权操作。在/etc/sudoers中精细化配置每个用户能执行的命令,避免给ALL=(ALL) ALL的全权限。SSH配置中设置PermitRootLogin no和PasswordAuthentication no(改用密钥登录),能大幅提升安全性。
文件权限方面,Web目录通常设为755(目录)和644(文件),上传目录设为777时要注意安全风险。使用chown -R www:www /var/www将网站文件属主设为Web服务器运行用户,可以避免权限不足导致的访问错误。
# Linux创建用户并授权sudo
useradd -m -s /bin/bash deploy
passwd deploy
usermod -aG sudo deploy
# 修改网站目录权限
chmod -R 755 /var/www/html
chown -R www-data:www-data /var/www/html
# Windows创建用户并加入管理员组
net user deploy P@ssw0rd /add
net localgroup administrators deploy /add
七、服务管理命令
服务器上运行着各种服务:Web服务器(Nginx/Apache/IIS)、数据库(MySQL/SQL Server)、缓存(Redis)等。服务的启动、停止、重启、设置开机自启、查看运行状态,是日常运维中最高频的操作之一。熟悉服务管理相关的服务器常用命令,能让你在服务异常时快速恢复业务。
现代Linux发行版(CentOS 7+、Ubuntu 16.04+)统一使用systemd作为服务管理器,通过systemctl命令管理服务;旧版本则使用service或/etc/init.d/脚本。Windows通过sc命令或net start/stop管理服务。
| 用途 | Linux命令(systemd) | Windows命令 |
|---|---|---|
| 启动服务 | systemctl start 服务名 | net start 服务名 / sc start 服务名 |
| 停止服务 | systemctl stop 服务名 | net stop 服务名 / sc stop 服务名 |
| 重启服务 | systemctl restart 服务名 | sc stop 服务名 && sc start 服务名 |
| 查看服务状态 | systemctl status 服务名 | sc query 服务名 |
| 设置开机自启 | systemctl enable 服务名 | sc config 服务名 start= auto |
| 禁止开机自启 | systemctl disable 服务名 | sc config 服务名 start= demand |
| 查看所有服务 | systemctl list-units --type=service | sc query state= all |
| 重新加载配置 | systemctl reload 服务名 | sc config 服务名 |
使用场景说明:修改Nginx配置文件后,推荐用systemctl reload nginx而非restart。reload会平滑重新加载配置而不中断现有连接,对线上业务零影响;restart则会断开所有连接再重新启动。但如果是配置有严重错误导致服务无法运行,就只能用restart了。
另一个常见需求是排查"服务为什么启动失败"。用systemctl status 服务名可以看到服务的简要状态和最近的日志输出;如果信息不够,用journalctl -u 服务名 -e查看该服务的完整systemd日志,通常能找到失败原因(如端口冲突、配置语法错误、权限不足等)。
# Linux管理Nginx服务
systemctl status nginx
systemctl reload nginx
systemctl enable nginx
# 查看服务启动失败原因
journalctl -u nginx -e --no-pager
# Windows管理IIS服务
sc query W3SVC
net start W3SVC
sc config W3SVC start= auto
八、日志查看与分析命令
日志是排查服务器问题的"黑匣子记录仪"。当服务异常、性能下降或遭受攻击时,日志往往是最重要的线索来源。学会高效地查看、搜索和分析日志,是运维工程师从新手走向高手的关键技能。
Linux的系统日志通常位于/var/log目录下,应用日志则由各应用自行管理;Windows通过事件查看器(Event Viewer)和Get-EventLog命令查看系统日志。
| 用途 | Linux命令 | Windows命令 |
|---|---|---|
| 实时查看日志末尾 | tail -f 日志文件 | Get-Content 文件 -Wait |
| 查看日志最后N行 | tail -n 100 日志文件 | Get-Content 文件 -Tail 100 |
| 搜索日志关键词 | grep "关键词" 日志文件 | findstr "关键词" 文件 |
| 忽略大小写搜索 | grep -i "error" 日志文件 | findstr /i "error" 文件 |
| 查看系统日志 | journalctl -xe | Get-EventLog -LogName System |
| 按时间范围过滤 | journalctl --since "1 hour ago" | Get-EventLog -After (Get-Date).AddHours(-1) |
| 统计关键词出现次数 | grep -c "error" 日志文件 | (findstr "error" 文件).Count |
| 查看带行号 | grep -n "关键词" 日志文件 | findstr /n "关键词" 文件 |
使用场景说明:线上排障时,最常用的组合是tail -f /var/log/xxx.log | grep "error"——实时查看日志的同时过滤出错误信息。如果要分析某个时段的访问量,可以用awk '{print $4}' access.log | cut -c 2-12 | sort | uniq -c统计每小时的请求量。
对于大型应用,日志文件可能高达数十GB,直接cat会卡死终端。这时应该用less分页查看,或用tail只看末尾,或用grep先过滤再查看。建议配合logrotate做日志轮转,避免单个日志文件无限增长。
# Linux实时查看并过滤Nginx错误日志
tail -f /var/log/nginx/error.log | grep -i "error"
# 统计今天每个小时的访问量
grep "$(date +%d/%b/%Y)" /var/log/nginx/access.log | awk '{print $4}' | cut -c 2-15 | sort | uniq -c
# 查看系统启动后的错误日志
journalctl -p err --since today
# Windows PowerShell查看日志
Get-Content C:\logs\app.log -Tail 100 -Wait
Get-EventLog -LogName System -EntryType Error -Newest 20
九、服务器管理命令使用最佳实践
掌握了各种服务器管理命令之后,如何安全、高效地使用它们同样重要。以下总结几条经过实践验证的最佳实践建议:
- 先确认再执行:所有破坏性操作(删除、格式化、重启服务)执行前必须二次确认路径和对象,养成"看清楚再回车"的习惯。
- 善用帮助命令:Linux下用
man 命令查看完整手册,命令 --help查看简要用法;Windows下用命令 /?查看帮助。遇到不熟悉的参数先查文档再使用。 - 操作留痕:重要操作建议用
script命令(Linux)录制操作过程,或开启终端日志记录,方便事后追溯和审计。 - 定期巡检:把
df -h、free -h、uptime等检查命令写成脚本定期执行,配合告警系统在指标异常时及时通知。 - 最小权限原则:日常操作用普通用户登录,需要特权时用sudo临时提权,避免长期以root/Administrator身份操作。
- 备份优先:修改配置文件前先备份(
cp config.conf config.conf.bak),删除数据前先确认有可恢复的备份。 - 利用Tab补全:Linux终端的Tab键自动补全不仅能提高效率,还能避免因路径输入错误导致的误操作。
- 使用history回顾:用
history(Linux)或doskey /history(Windows)查看历史命令,!序号可快速重复执行,也方便排查"刚才执行了什么导致出了问题"。
日常运维中,进程管理、磁盘管理、网络管理、日志查看这四大类服务器常用命令使用频率最高,基本能覆盖80%以上的故障排查场景。建议将本文加入收藏,遇到问题时快速查阅对照表,能显著提升排障效率。
