两点王爷头像
关注

Linux 服务器常用实用命令大全

1. 引言

Linux 服务器在日常运维和开发部署中扮演着核心角色。掌握常用且实用的命令,能够显著提升工作效率,帮助快速定位问题、管理系统资源并完成自动化任务。本文整理了一份高频使用的 Linux 命令清单,覆盖文件操作、系统监控、网络排查、权限管理、进程控制等常见场景。

2. 文件与目录操作

文件操作是使用 Linux 服务器最基础也最频繁的工作,以下命令覆盖了查看、复制、移动、查找和压缩等核心需求。

  • ls:列出目录内容,常用参数 -l 显示详细信息,-a 显示隐藏文件,-h 以人类可读方式显示文件大小。
  • cd:切换工作目录,例如 cd /var/log 进入日志目录,cd .. 返回上级目录。
  • pwd:显示当前所在目录的完整路径。
  • cp:复制文件或目录,cp -r 递归复制目录,cp -p 保留文件属性。
  • mv:移动文件或重命名,例如 mv old.txt new.txt 实现重命名。
  • rm:删除文件或目录,rm -rf 强制递归删除,使用时需格外谨慎。
  • find:按名称、类型、大小等条件查找文件,例如 find /etc -name "*.conf" 查找所有配置文件。
  • tar:打包和解压文件,tar -czvf archive.tar.gz /path 压缩,tar -xzvf archive.tar.gz 解压。
  • du:统计目录或文件占用的磁盘空间,du -sh /var 查看目录总大小。

3. 系统信息与资源监控

服务器运行状态和资源使用情况是运维排查的重要依据,以下命令帮助快速掌握系统健康度。

  • top:实时显示进程和系统资源占用,按 P 按 CPU 排序,按 M 按内存排序。
  • free -h:以人类可读格式查看内存和交换分区使用情况。
  • df -h:查看磁盘分区使用率,及时发现磁盘空间不足。
  • uptime:显示系统运行时间、登录用户数和负载平均值。
  • uname -a:查看内核版本和系统架构信息。
  • cat /proc/cpuinfo:查看 CPU 详细信息,包括核心数和型号。
  • iostat:监控磁盘 I/O 读写负载,适合排查磁盘性能瓶颈。
  • vmstat:汇总进程、内存、分页和 CPU 活动情况。

检查整个机器磁盘根目录下面文件夹占用空间:

sudo du -xhd1 / 2>/dev/null | sort -hr

如果发现 /var 很大

这是 Linux 服务器磁盘爆满最常见的情况之一。

sudo du -xhd1 /var 2>/dev/null | sort -hr

重点检查 Docker

如果这是开发/生产服务器,我建议你优先检查 Docker

执行:

docker system df

以及:

docker system df -v

再看 Docker 实际目录:

sudo du -sh /var/lib/docker

如果这里达到几十 GB、几百 GB,就需要进一步检查。

1. 查看 Docker 容器

docker ps -a

2. 查看容器日志大小

这是非常常见的“隐形杀手”。

执行:

sudo du -h /var/lib/docker/containers/*/*-json.log 2>/dev/null | sort -hr | head -20

如果出现:

100G /var/lib/docker/containers/xxx/xxx-json.log
80G  /var/lib/docker/containers/xxx/xxx-json.log
30G  /var/lib/docker/containers/xxx/xxx-json.log

基本可以确定是 Docker 容器日志没有限制大小

可以先安全地清空某个超大日志:

sudo truncate -s 0 /var/lib/docker/containers/容器ID/容器ID-json.log

例如:

sudo truncate -s 0 /var/lib/docker/containers/abc123/abc123-json.log

不建议直接 rm Docker 正在使用的日志文件。


检查 /var/log

如果 /var/log 很大:

sudo du -xhd1 /var/log 2>/dev/null | sort -hr

进一步:

sudo du -ah /var/log 2>/dev/null | sort -hr | head -30

重点关注:

/var/log/syslog
/var/log/messages
/var/log/auth.log
/var/log/kern.log
/var/log/journal

如果是 systemd journal:

journalctl --disk-usage

例如:

Archived and active journals take up 120.0G in the file system.

可以按照时间清理,例如只保留最近 7 天:

sudo journalctl --vacuum-time=7d

或者限制到 2G:

sudo journalctl --vacuum-size=2G

检查 /home

如果 /home 很大:

sudo du -xhd1 /home 2>/dev/null | sort -hr

例如:

300G /home/user

继续:

sudo du -xhd1 /home/user 2>/dev/null | sort -hr

重点关注:

~/.cache
~/.local
~/.npm
~/.m2
~/.gradle
~/.conda
~/.cache/pip

例如 Python:

du -sh ~/.cache/pip

可以清理:

pip cache purge

Node:

du -sh ~/.npm

Maven:

du -sh ~/.m2

Gradle:

du -sh ~/.gradle

检查 /opt

很多部署环境会把应用放在:

/opt

检查:

sudo du -xhd1 /opt 2>/dev/null | sort -hr

如果你的 Java、GIS、AI、Docker 部署项目比较多,这里尤其值得检查。

例如:

350G /opt/app

继续:

sudo du -xhd1 /opt/app 2>/dev/null | sort -hr

4. 进程管理

进程管理是服务器维护的核心技能,涉及查看、终止和后台运行等操作。

  • ps:查看当前进程快照,ps -ef 显示所有进程,ps aux 显示详细资源占用。
  • kill:终止指定进程,kill -9 PID 强制结束,kill -15 PID 优雅退出。
  • pkill:按名称批量终止进程,例如 pkill -f nginx 结束所有 nginx 相关进程。
  • jobs:查看当前终端后台运行的任务列表。
  • nohup:让命令在后台持续运行,即使终端关闭也不中断,例如 nohup java -jar app.jar &
  • systemctl:管理系统服务,systemctl start nginx 启动服务,systemctl enable nginx 设置开机自启。

5. 网络排查与连接

网络问题是服务器运维的高频场景,掌握常用网络命令可以快速定位连通性、端口和连接状态。

  • ping:测试目标主机连通性,例如 ping -c 4 baidu.com 发送 4 个探测包。
  • curl:发送 HTTP 请求测试接口,curl -I https://example.com 查看响应头,curl -X POST -d "key=value" URL 发送 POST 请求。
  • wget:下载远程文件,wget -c URL 支持断点续传。
  • ss:查看网络连接和监听端口,ss -tlnp 列出所有监听端口及对应进程。
  • netstat:传统网络统计工具,netstat -tulnp 查看端口占用情况。
  • traceroute:追踪数据包到达目标主机的路由路径,用于定位网络延迟节点。
  • ip addr:查看网卡 IP 地址和网络配置信息。

6. 权限与用户管理

多用户环境下的权限控制是 Linux 安全的基础,以下命令用于管理用户、组和文件权限。

  • chmod:修改文件权限,例如 chmod 755 script.sh 设置所有者可读写执行,其他用户可读执行。
  • chown:修改文件所有者和所属组,例如 chown root:root file.txt
  • useradd:创建新用户,useradd -m username 同时创建用户主目录。
  • passwd:设置或修改用户密码。
  • usermod:修改用户属性,例如 usermod -aG sudo username 将用户加入 sudo 组。
  • groupadd:创建新用户组。
  • sudo:以管理员权限执行命令,例如 sudo apt update

7. 日志查看与文本处理

日志分析和文本处理是排查问题的重要手段,结合管道和过滤命令可以高效提取关键信息。

  • tail:查看文件末尾内容,tail -f /var/log/syslog 实时跟踪日志输出。
  • head:查看文件开头内容,head -n 20 file.log 显示前 20 行。
  • grep:按关键字过滤文本,grep "ERROR" app.log 查找错误日志,grep -r "keyword" /etc 递归搜索目录。
  • awk:按列处理文本,例如 awk '{print $1}' file.txt 输出第一列。
  • sed:流式文本编辑,sed -i 's/old/new/g' file.txt 全局替换并写回文件。
  • less:分页查看大文件,支持上下翻页和关键字搜索。
  • wc -l:统计文件行数,常用于快速评估日志规模。

8. 软件包管理

不同发行版使用不同的包管理工具,掌握常用操作可以快速安装、更新和卸载软件。

  • apt:Debian 和 Ubuntu 系列,apt update 更新软件源,apt install nginx 安装软件,apt upgrade 升级所有软件包。
  • yum:CentOS 7 及以下版本,yum install -y httpd 安装软件,yum remove httpd 卸载软件。
  • dnf:CentOS 8 及以上版本,用法与 yum 类似,dnf install nginx
  • rpm:直接操作 RPM 包,rpm -ivh package.rpm 安装本地包,rpm -qa 列出已安装包。
  • dpkg:Debian 系底层包工具,dpkg -i package.deb 安装本地包。

9. 实用组合技巧

将多个命令通过管道组合,可以完成更复杂的运维任务,以下是一些高频实用组合。

# 查看占用 CPU 最高的前 5 个进程
ps aux --sort=-%cpu | head -6
统计日志中 ERROR 出现的次数
grep -c "ERROR" /var/log/app.log
查找并删除 30 天前的日志文件
find /var/log -name "*.log" -mtime +30 -exec rm {} ;
实时监控日志并过滤关键字
tail -f /var/log/syslog | grep "nginx"
查看某个端口被哪个进程占用
ss -tlnp | grep :8080
批量替换配置文件中的 IP 地址
sed -i 's/192.168.1.1/10.0.0.1/g' /etc/app/config.conf
查看内存占用最高的前 10 个进程
ps aux --sort=-%mem | head -11
统计当前目录下各子目录的磁盘占用并排序
du -sh */ | sort -hr
查看当前系统负载和运行时间
uptime && cat /proc/loadavg
查找最近 24 小时内修改过的文件
find /var/log -type f -mtime -1 -ls
统计访问量最高的前 10 个 IP(Nginx 日志)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
查看当前 TCP 连接状态统计
ss -s
批量杀掉包含某个关键字的进程
ps aux | grep "java" | grep -v grep | awk '{print $2}' | xargs kill -9
查看磁盘空间最大的前 10 个文件
find / -type f -size +100M -exec ls -lh {} ; 2>/dev/null | awk '{print $5, $9}' | sort -rh | head -10
实时查看系统资源占用最高的进程(每 2 秒刷新)
top -b -n 1 | head -20
统计日志中 5xx 错误码出现的次数
grep -E "HTTP/1.1" 5[0-9][0-9]" /var/log/nginx/access.log | wc -l
查看当前登录用户及其操作
who && w
批量压缩并备份指定目录(带时间戳)
tar -czvf /backup/etc_$(date +%Y%m%d).tar.gz /etc
查看系统所有监听端口及对应进程
netstat -tulnp | grep LISTEN
统计当前目录下文件数量
ls -l | grep "^-" | wc -l

除了上述基础组合,下面再补充一批更贴近真实运维场景的高频用法,覆盖磁盘清理、服务排查、批量操作和性能分析等方向。

# 找出并清理超过 1G 的日志文件(先列出再确认删除)
find /var/log -type f -size +1G -exec ls -lh {} \;
# 查看系统启动耗时最长的服务(systemd 分析)
systemd-analyze blame | head -10
# 查看某个服务的详细状态和最近日志
systemctl status nginx && journalctl -u nginx --no-pager -n 50
# 批量将当前目录下所有 .log 文件压缩归档
find . -name "*.log" -exec gzip {} \;
# 统计每个用户占用的磁盘空间并排序
sudo du -sh /home/* 2>/dev/null | sort -hr
# 查看网络连接中处于 TIME_WAIT 状态的连接数
ss -s | grep -i timewait
# 实时查看某个进程的 CPU 和内存占用
top -p $(pgrep -d, -f java)
# 统计日志中访问量最高的前 10 个 URL(Nginx 日志)
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# 批量修改文件权限(将当前目录下所有 .sh 设为可执行)
find . -name "*.sh" -exec chmod +x {} \;
# 查看系统最近一次重启的原因和时间
last reboot | head -3
# 统计当前目录下各文件类型数量
find . -type f | awk -F. '{print $NF}' | sort | uniq -c | sort -rn | head -10
# 查看内存和交换分区使用情况(每秒刷新一次,共 5 次)
free -h -s 1 -c 5
# 批量删除 7 天前的临时文件
find /tmp -type f -mtime +7 -delete
# 查看某个 IP 的访问次数(Nginx 日志)
grep "192.168.1.100" /var/log/nginx/access.log | wc -l
# 查看当前系统打开的文件数
lsof | wc -l
# 查看磁盘 I/O 最高的进程
iotop -o -n 1 -b | head -15
# 批量重命名文件(将 .txt 改为 .md)
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
# 查看系统所有定时任务
crontab -l && ls /etc/cron.d/
# 统计日志中 ERROR 和 WARN 的数量对比
grep -c "ERROR" /var/log/app.log && grep -c "WARN" /var/log/app.log
# 查看当前系统架构和内核信息
uname -a && cat /etc/os-release | head -2

这些组合命令覆盖了磁盘清理、服务排查、日志分析、批量操作和性能监控等高频场景。建议在实际使用前先用 man 查看各命令的参数说明,并根据自身环境调整路径和关键字,避免误操作。

10. 总结

本文整理了 Linux 服务器运维中高频使用的命令,涵盖文件操作、系统监控、进程管理、网络排查、权限控制、日志分析和软件包管理等方面。实际工作中建议结合 man 命令查看每个工具的详细参数说明,并根据具体场景灵活组合使用。熟练掌握这些命令,能够显著提升服务器管理和问题排查的效率。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/qq_43544074/article/details/165844009

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--