Linux常用命令有哪些完整指南

导读:本文面向刚接触Linux的运维人员、开发者和学生,系统梳理工作中最高频的Linux命令,覆盖文件管理、文本处理、权限设置、进程与系统状态查看等场景。阅读后你将掌握每个命令的核心用法、常用参数和典型示例,并了解如何规避误操作风险,能够独立完成日常服务器维护与排障任务。

Linux常用命令有哪些完整指南
Linux常用命令有哪些完整指南

核心结论

Linux常用命令并非越多越好,真正在生产环境中高频使用的命令大约有30到50个,集中在文件操作(ls、cd、cp、mv、rm、find)、文本处理(grep、sed、awk、cat、tail)、权限管理(chmod、chown、useradd)、进程管理(ps、top、kill)以及系统信息查看(df、free、uname、uptime)这几大类。掌握这些命令的常用参数和组合用法,足以应对绝大多数日常操作。本文不追求命令数量堆砌,而是按使用频率和实用性挑选核心命令,并给出可直接执行的示例。

前置条件与适用环境

  • 操作系统版本:本文命令适用于主流Linux发行版,包括CentOS 7/8、Ubuntu 20.04/22.04、Debian 11/12、Rocky Linux等。部分命令(如apt、yum)因发行版不同有所差异,文中会单独说明。
  • 权限要求:涉及系统配置、用户管理的命令(如useradd、chown、systemctl)需要root权限或sudo权限;普通文件操作命令无需特殊权限。
  • 依赖说明:grep、sed、awk、find等为Linux基础工具,默认已安装。若系统为精简安装,可使用发行版包管理器补充,例如CentOS执行yum install -y grep sed gawk findutils,Ubuntu/Debian执行apt install -y grep sed gawk findutils
  • 备份建议:执行rm、mv、cp等操作前,建议对重要数据先备份,尤其是使用rm -rf或覆盖式重定向(>)时。
  • 环境差异:部分命令在不同发行版中参数略有差异,例如ps aux在BusyBox环境中可能不支持,需使用ps -ef。文中会标注此类差异。

完整操作步骤

以下按使用场景分组介绍命令,每组先说明用途,再给出示例代码和预期结果。

一、文件与目录管理

这是最基础也最常用的命令组。以下示例演示如何查看目录内容、切换路径、复制与移动文件。

# 1. 查看当前目录下的所有文件(含隐藏文件),以列表形式显示详细信息
ls -la /home/user

# 预期输出:显示文件权限、属主、大小、修改时间和文件名,隐藏文件以点开头

# 2. 切换到指定目录并返回上一级
cd /var/log
cd ..

# 3. 复制文件并保留原文件属性
cp -p /etc/nginx/nginx.conf /root/nginx.conf.bak

# 4. 移动文件并重命名
mv /tmp/test.txt /home/user/documents/renamed.txt

# 5. 安全删除文件(避免误删,使用 -i 交互确认)
rm -i /home/user/oldfile.log

执行ls -la后,输出第一列的权限位(如-rw-r–r–)用于判断文件类型和权限。cp -p保留时间戳和属主信息,在备份场景中非常实用。rm -i会在删除前询问确认,降低误操作风险。

二、文本内容查看与处理

查看日志、过滤关键信息是日常运维最高频的操作。以下命令组合能解决大部分文本处理需求。

# 1. 实时查看日志文件尾部内容(常用于跟踪应用输出)
tail -f /var/log/messages

# 2. 查看文件前20行
head -n 20 /etc/passwd

# 3. 在文件中搜索包含“error”的行,并显示行号
grep -n \"error\" /var/log/nginx/error.log

# 4. 使用sed提取文件的第10到20行
sed -n '10,20p' /etc/nginx/nginx.conf

# 5. 使用awk按冒号分割,打印第一和第三列(例如/etc/passwd中的用户名和UID)
awk -F: '{print $1, $3}' /etc/passwd

tail -f会持续输出新增内容,按Ctrl+C退出。grep支持正则表达式,-i忽略大小写,-r递归搜索目录。sed和awk是文本处理利器,但语法较复杂,初学者可先掌握上述基础用法。

三、权限与用户管理

多用户环境下,权限管理直接关系系统安全。以下命令用于修改权限和创建用户。

# 1. 将脚本设置为可执行权限
chmod +x /home/user/deploy.sh

# 2. 递归修改目录权限为755,文件权限为644
chmod -R 755 /var/www/html
find /var/www/html -type f -exec chmod 644 {} \;

# 3. 修改文件属主和属组
chown root:root /etc/nginx/nginx.conf

# 4. 创建新用户并设置家目录和shell
useradd -m -s /bin/bash devops
passwd devops

chmod的755表示属主可读写执行,属组和其他用户可读执行,适用于网站目录。chown修改属主时需注意权限,避免普通用户无法访问。useradd -m自动创建家目录,-s指定登录shell。

四、进程与系统资源查看

定位系统瓶颈或异常进程时,以下命令能快速提供信息。

# 1. 查看当前所有进程,以CPU占用率排序(动态更新)
top

# 2. 静态查看进程列表,显示完整命令行参数
ps -ef | grep java

# 3. 终止指定PID的进程(先确认PID,再执行kill)
kill -9 12345

# 4. 查看磁盘空间使用情况
df -h

# 5. 查看内存使用情况
free -h

top界面中按P键按CPU排序,按M键按内存排序,按q退出。ps -ef配合grep可精确查找特定程序。kill -9为强制终止,可能造成数据丢失,建议先尝试kill(默认发送TERM信号)。df -h以人类可读格式显示,free -h显示内存总量、已用和缓存。

五、网络与连接排查

服务器网络异常时,这些命令能帮助定位问题。

# 1. 测试与目标主机的连通性
ping -c 4 8.8.8.8

# 2. 查看本机监听端口和对应进程
ss -tlnp

# 3. 查看路由表
ip route show

# 4. 使用curl测试HTTP接口响应
curl -I https://example.com

ss命令替代了旧的netstat,-t显示TCP,-l显示监听,-n显示数字端口,-p显示进程信息。ip route show查看默认网关。curl -I仅获取响应头,用于快速判断服务是否正常。

常见报错与解决方法

报错一:bash: command not found

原因:命令未安装或PATH环境变量未包含命令所在目录。

检查方法:执行echo $PATH查看路径,执行which 命令名确认命令是否存在。

修复方法:若命令确实未安装,用包管理器安装。CentOS使用yum install -y 包名,Ubuntu/Debian使用apt install -y 包名。若命令已安装但不在PATH中,可临时使用全路径执行,例如/usr/sbin/ifconfig

报错二:Permission denied

原因:当前用户对目标文件或目录没有相应权限。

检查方法:执行ls -l 文件名查看权限位,执行id查看当前用户和所属组。

修复方法:若确认需要访问,使用sudo提升权限,例如sudo cat /etc/shadow。修改文件权限可使用chmod,但需谨慎,避免过度开放权限造成安全隐患。

报错三:No space left on device

原因:磁盘分区已满。

检查方法:执行df -h查看各分区使用率,执行du -sh /var/log/*定位大文件。

修复方法:清理无用日志或临时文件,例如find /var/log -type f -name \"*.log\" -size +100M -exec truncate -s 0 {} \;。若分区确实不足,考虑扩容或迁移数据。

报错四:grep: 无法识别参数

原因:搜索内容以-开头时被误认为选项,或正则表达式未正确转义。

修复方法:在搜索模式前加--,例如grep -- \"-error\" file.log,或使用grep -e \"-error\" file.log

生产环境配置与避坑建议

  • 使用绝对路径执行脚本:在cron定时任务或systemd服务中,务必使用绝对路径,例如/usr/bin/find /var/log -name \"*.log\" -mtime +7 -delete,避免因PATH不同导致命令找不到。
  • rm -rf 慎用:生产环境中建议先执行ls -la确认路径,再使用rm -rf /path/to/dir。更安全的做法是使用mv将目录移动到/tmp下,确认无误后再删除。
  • 重定向覆盖有风险:echo \"new content\" > config.conf会直接覆盖原文件。如需追加,使用>>。若不确定原文件内容,先执行cp config.conf config.conf.bak
  • 权限最小化原则:不要随意使用chmod 777。对于Web目录,建议目录755、文件644,属主设为运行Web服务的用户。使用find批量修改时,先用find /path -type f | head预览结果。
  • kill -9 是最后手段:先尝试kill PID发送TERM信号让进程优雅退出。若进程无响应,再使用-9。强制杀死数据库或应用进程可能导致数据损坏。
  • 日志文件定期清理:使用logrotate管理日志轮转,避免单个日志文件无限增长占满磁盘。配置示例:/etc/logrotate.d/nginx中设置daily轮转、保留7份、压缩。
  • 回滚方案:修改系统配置文件前,先备份原文件,例如cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.$(date +%Y%m%d)。若修改后服务异常,可快速恢复。

常见问题 FAQ

问题1:Linux中查看文件内容除了cat还有哪些命令?

cat适合查看小文件全文。查看大文件时建议使用less分页浏览,支持上下翻页和搜索(按/输入关键词)。查看文件尾部用tail,头部用head。实时跟踪日志用tail -f。若需查看二进制文件,可使用xxdod

问题2:grep和find有什么区别?

find用于按文件名、类型、大小、时间等属性在文件系统中查找文件。grep用于在文件内容中搜索匹配的文本行。例如find /etc -name \"*.conf\"查找所有.conf文件,grep -r \"listen\" /etc/nginx/在nginx配置目录中搜索包含listen的行。两者可组合使用,但需注意管道符传递的是文件名而非内容。

问题3:如何查看Linux系统版本和内核信息?

查看发行版信息使用cat /etc/os-release(适用于几乎所有现代发行版)。查看内核版本使用uname -r。查看完整内核信息用uname -a。若系统有lsb_release命令,也可使用lsb_release -a,但部分精简系统未安装该工具。

问题4:chmod中的数字权限644和755分别代表什么?

数字权限由三位八进制数组成,分别对应属主、属组、其他用户的权限。读(r)=4,写(w)=2,执行(x)=1,权限值相加。644表示属主可读写(4+2=6),属组和其他用户只读(4)。755表示属主可读写执行(4+2+1=7),属组和其他用户可读执行(4+1=5)。目录默认权限通常为755,文件默认644。

问题5:为什么ps -ef和ps aux输出结果不同?

ps -ef和ps aux是两种不同的输出格式。ps -ef是System V风格,显示UID、PID、PPID、C、STIME、TTY、TIME、CMD。ps aux是BSD风格,显示USER、PID、%CPU、%MEM、VSZ、RSS、TTY、STAT、START、TIME、COMMAND。两者包含的进程信息基本相同,只是列名和排序不同。在脚本中建议统一使用一种格式,推荐ps -ef因其列名更直观。

问题6:如何安全地终止一个无响应的进程?

首先使用ps -ef | grep 进程名找到PID。先执行kill PID发送TERM信号,等待几秒。若进程仍存在,再执行kill -9 PID强制终止。对于Java应用,可先尝试kill -3 PID生成线程转储,用于诊断后再终止。若进程属于系统服务,使用systemctl stop 服务名更规范。

总结与检查清单

  • 执行ls -la确认文件权限和属主符合预期,特别是Web目录和脚本文件。
  • 使用df -hfree -h确认磁盘和内存资源充足,避免因资源不足导致服务异常。
  • 修改配置文件前已备份,备份文件命名包含日期,便于回滚。
  • 使用ps -ef | grep 服务名确认目标进程已启动或已终止,不要只凭命令执行结果判断。
  • 测试网络连通性使用pingcurl,确保服务端口可访问。
  • 检查日志文件是否有新增错误,例如tail -n 50 /var/log/messages
  • 若使用了chmod或chown,重新登录或切换用户验证权限是否生效。
  • 对于cron任务,手动执行一次脚本确认无报错,再写入crontab。

发表评论