对于刚接触 Linux 或希望提升运维效率的开发者而言,“Linux常用命令有哪些”是绕不开的第一道门槛。但仅仅背下几十个命令的名字毫无意义,真正需要的是理解每个命令在磁盘管理、进程调度、网络诊断、权限控制等真实场景中的组合用法与坑点。本文将从实战角度出发,手把手演示高频命令的配置技巧与优化思路,并针对常见报错给出可复制的排错代码片段,帮助你从“会敲命令”进阶到“会用命令解决问题”。
一、文件与目录操作:从查看到批量处理
文件操作是 Linux 使用频率最高的场景,但很多新手只停留在 ls、cd、cp 层面。真正高效的做法是组合使用通配符、管道与重定向。
1. 快速定位大文件与目录占用
# 查看当前目录下所有文件(含隐藏)并按大小排序
ls -lahS | head -20
# 递归统计当前目录每个子目录的磁盘占用(单位MB)
du -h --max-depth=1 . | sort -hr | head -10
# 找到大于500MB的文件并立即打印完整路径
find /var/log -type f -size +500M -exec ls -lh {} \;
优化点:如果磁盘告警,建议先用 du 定位目录层级,再用 find 精确到文件,避免全盘扫描拖慢 I/O。
2. 批量重命名与移动的陷阱
# 将当前目录所有 .txt 文件改为 .md(使用rename命令)
rename 's/\.txt$/\.md/' *.txt
# 安全移动:避免覆盖同名文件(加 -n 参数)
mv -n *.log /backup/archive_$(date +%Y%m%d)/
# 错误示例:直接 mv *.log 到已存在目录,可能因参数过多报错
# 解决方案:使用 find + xargs 分批处理
find . -maxdepth 1 -name "*.log" -print0 | xargs -0 -I {} mv {} /backup/
二、进程与系统资源优化:定位高负载真凶
系统响应缓慢时,top 只是第一步。你需要用组合命令快速锁定 CPU、内存、磁盘 I/O 的瓶颈。
1. 实时监控并过滤指定进程
# 动态查看 CPU 占用最高的前5个进程
top -b -n 1 | head -20 | grep -E "PID|USER|%CPU"
# 更精准:使用 ps 按 CPU 排序
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -6
# 查看某个服务的线程数(如 nginx)
pidof nginx | xargs -I {} ps -L -p {} | wc -l
2. 内存泄漏排查:从 swap 使用到缓存清理
# 查看 swap 占用最多的进程
for file in /proc/[0-9]*/status; do
awk '/Name|VmSwap/{printf "%s ", $2} END{print ""}' $file 2>/dev/null
done | sort -k2 -n -r | head -5
# 手动释放页缓存(生产环境慎用,建议先 sync)
sync && echo 3 > /proc/sys/vm/drop_caches
实战提示:如果 free -h 显示 cached 极高且 swap 使用率上升,大概率是程序频繁读写文件导致。此时应检查应用日志,而不是盲目清缓存。
三、网络诊断与配置:从连通性到端口占用
1. 快速定位端口被哪个进程占用
# 查看 8080 端口对应 PID 和程序名(ss 比 netstat 更快)
ss -tlnp | grep :8080
# 如果 ss 未安装,使用 fuser 直接杀掉占用进程
fuser -k 8080/tcp # 注意:会直接终止进程,谨慎使用
2. 网络延迟与丢包测试的进阶用法
# 连续 ping 10 次并输出统计
ping -c 10 -q baidu.com | tail -2
# 使用 mtr 结合 traceroute 与 ping(需安装 mtr)
mtr -rw --curses baidu.com
# 查看本机路由表判断默认网关
ip route show default
3. 常见报错:Connection refused 的排查链路
# 1. 先检查服务是否监听
ss -lnt | grep 3306 # 若没有输出,说明 MySQL 未启动
# 2. 检查防火墙是否拦截(CentOS/RHEL)
firewall-cmd --list-ports | grep 3306
# 3. 如果是云服务器,还需检查安全组规则
# 4. 最后查看服务日志(以 mysql 为例)
tail -50 /var/log/mysql/error.log | grep -i "port"
四、用户与权限管理:避免权限不足的窘境
1. 创建用户并赋予 sudo 权限
# 添加用户并指定家目录与 shell
useradd -m -s /bin/bash devops
# 设置密码
passwd devops
# 将用户加入 wheel 组(CentOS/RHEL)或 sudo 组(Ubuntu)
usermod -aG wheel devops # CentOS
usermod -aG sudo devops # Ubuntu
2. 修改文件属主与权限位的实战案例
# 将 /var/www 目录下所有文件属主改为 www-data,并保持目录权限
chown -R www-data:www-data /var/www
# 设置 setgid 位,使新创建的文件自动继承目录组
chmod g+s /var/www
# 查看特殊权限位(suid/sgid/sticky)
ls -l /tmp | grep "^d......t"
五、日志分析与追踪:用组合命令快速排错
1. 实时跟踪日志并过滤关键词
# 跟踪应用日志,只显示 ERROR 及后续 5 行
tail -f /app/logs/error.log | grep --line-buffered -A 5 "ERROR"
# 统计某个时间段内的 500 错误数量
awk '/2026-05-01 10:/{if($9==500) count++} END{print count}' access.log
2. 日志文件过大导致磁盘满的清理方案
# 查找大于 2GB 的日志文件并截断(保留文件句柄)
find /var/log -name "*.log" -size +2G -exec truncate -s 0 {} \;
# 配置 logrotate 按天轮转并压缩(示例配置)
cat > /etc/logrotate.d/myapp <<EOF
/app/logs/*.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
EOF
六、系统优化与内核参数调整
当你需要应对高并发或特殊工作负载时,调整内核参数往往比升级硬件更有效。但务必先备份原配置。
1. 文件描述符限制调整
# 查看当前限制
ulimit -n
# 临时提高(重启失效)
ulimit -n 65535
# 永久生效:编辑 /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
2. TCP 连接优化(适用于高并发 Web 服务)
# 开启 TCP 快速复用(需谨慎测试)
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_fin_timeout=15
# 永久生效
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_fin_timeout = 15" >> /etc/sysctl.conf
sysctl -p
提醒:修改内核参数前建议先阅读官方文档,部分参数(如 tcp_tw_recycle)在 NAT 环境下会引发严重问题,已被新内核弃用。
七、与站内其他实战指南的关联
如果你正在使用桌面发行版,建议参考 手把手带你配置与优化:linux mint 实战指南,其中关于软件源更换与显卡驱动安装的命令组合能显著提升日常使用体验。若你常遇到关机异常或挂起问题,请阅读 为什么都在关注 linux关机命令?核心原理解析与落地秘籍,理解 systemctl 与 shutdown 的底层差异。对于 Ubuntu 用户,ubuntu24.04 到底怎么用?高阶开发者的配置心得分享 中提到的 snap 管理命令与 apt 排错技巧,能帮你规避 20% 的常见报错。而 2026最新 ubuntu怎么读 完整搭建教程与常见报错排查 则适合初学者快速建立环境。最后,如果希望系统化掌握内核与文件系统知识,ubuntu系统 核心要点汇总:一文彻底搞懂底层逻辑 提供了从 fstab 到 cgroup 的完整链路。
八、总结:命令只是起点,组合才是核心
“Linux常用命令有哪些”这个问题的答案并不固定,因为不同场景需要不同的命令组合。本文展示的每个示例都经过实际验证,建议你复制到终端中逐步执行,观察输出差异。遇到报错时,优先使用 man 命令名 或 命令名 --help 查看参数含义,再结合 strace 或 dmesg 定位底层原因。只有当你能够将文件操作、进程管理、网络诊断串联起来解决一个完整问题,才算真正掌握了这些常用命令的实战价值。