Linux常用命令速查表完整指南

导读:本文面向刚接触Linux的运维人员、开发者和学生,解决“记不住命令”和“遇到问题不知道用哪个命令”的痛点。文章整理了一份按功能分类的常用命令速查表,覆盖文件管理、文本处理、权限设置、进程与网络排查等高频场景。读完本文,你将能根据任务目标快速定位所需命令,并掌握几个关键命令的典型用法与排错思路。

Linux常用命令速查表完整指南
Linux常用命令速查表完整指南

\n\n

核心结论

\n

Linux常用命令并不需要全部背诵,关键在于理解命令的分类和核心参数。日常工作中最常使用的命令不超过30个,例如ls、cd、cp、mv、rm、grep、find、ps、netstat(或ss)、systemctl等。本文给出的速查表按功能分组,并标注了每个命令的常用参数和典型示例,你可以直接复制使用。对于不确定的行为(如rm删除不可恢复),文中会明确提醒。

\n\n

前置条件与适用环境

\n

    \n

  • 操作系统:适用于大多数主流Linux发行版,如Debian、Ubuntu、CentOS、Rocky Linux等。部分命令(如systemctl)仅适用于使用systemd的发行版;若使用SysVinit,命令会不同。
  • \n

  • 权限要求:涉及系统级修改(如安装软件、修改/etc目录文件、管理服务)需要root或sudo权限。普通用户只能操作自己拥有权限的文件和目录。
  • \n

  • 依赖要求:部分命令可能需要单独安装,例如lsof、htop、tree。在Debian/Ubuntu下用sudo apt install lsof安装;在CentOS/RHEL下用sudo yum install lsof
  • \n

  • 备份建议:执行rm、mv、cp等可能覆盖或删除数据的命令前,建议先备份重要文件。特别是rm -rf高风险操作,务必确认路径正确。
  • \n

  • 环境差异:不同发行版的包管理器不同(apt/yum/dnf/pacman),但常用文件操作命令(ls、cp等)行为一致。如果使用macOS,部分命令参数略有差异(如find的-exec语法),本文以Linux为准。
  • \n

\n\n

完整操作步骤

\n

以下步骤按任务分类,每步给出命令示例和预期输出说明。你可以根据当前需求跳转阅读。

\n\n

步骤1:文件与目录操作
目的:查看、创建、复制、移动、删除文件或目录。这是最基础的操作。

\n

pwd                          # 显示当前工作目录,例如 /home/user\nls -l                        # 列出当前目录文件详情,包括权限、属主、大小、修改时间\nls -a                        # 显示隐藏文件(以.开头的文件)\ncd /var/log                  # 切换到/var/log目录\ncp file1.txt /tmp/file1.bak  # 复制文件,目标存在时直接覆盖(无提示)\nmv file1.txt /tmp/           # 移动文件,如果目标路径相同则相当于重命名\nrm test.txt                  # 删除普通文件,不可恢复,请谨慎\nmkdir -p /tmp/a/b/c          # 递归创建多级目录,-p参数避免父目录不存在报错\nrmdir /tmp/empty_dir         # 删除空目录,非空目录会报错\n

\n

预期结果:命令执行后无输出通常表示成功。ls -l会列出详细信息,第一列如-rw-r–r–表示文件类型和权限。注意rm命令删除后无法恢复,生产环境建议先使用ls确认路径。

\n\n

步骤2:文本内容查看与搜索
目的:快速查看文件内容,或在大文件中查找关键字。

\n

cat /etc/hostname            # 一次性输出整个文件内容(适合小文件)\nless /var/log/syslog         # 分页查看大文件,按q退出,按/输入关键字搜索\nhead -n 20 /etc/passwd       # 查看前20行\n tail -n 50 /var/log/messages # 查看最后50行,常用于日志排查\ngrep \"error\" /var/log/syslog  # 在文件中搜索包含error的行,区分大小写\ngrep -i \"warning\" /var/log/syslog # -i忽略大小写\ngrep -r \"listen 80\" /etc/nginx/    # 递归搜索目录下所有文件\n

\n

预期结果:cat直接打印内容;less进入交互界面,可上下翻页;grep输出匹配的行,无匹配时无输出(但退出码为1)。注意grep默认使用基本正则表达式,若需扩展语法(如|或),使用grep -E

\n\n

步骤3:文件查找与定位
目的:根据名称、大小、修改时间等条件查找文件。

\n

find /var -name \"*.log\" -type f    # 在/var下查找所有.log结尾的普通文件\nfind /home -size +100M              # 查找大于100MB的文件\nfind /etc -mtime -7                 # 查找7天内修改过的文件\nwhich nginx                         # 查找命令所在路径(在PATH中搜索)\nwhereis nginx                       # 查找命令、源码、man手册的位置\nlocate nginx.conf                   # 基于数据库快速查找(需先执行updatedb更新数据库)\n

\n

预期结果:find直接输出符合条件的文件路径;which输出如/usr/sbin/nginx。注意locate依赖数据库,新创建的文件可能查不到,需要先运行sudo updatedb

\n\n

步骤4:权限与用户管理
目的:修改文件权限、属主,添加或删除用户。

\n

chmod 755 script.sh          # 设置权限:属主读写执行,组和其他用户读执行\nchmod u+x script.sh          # 给属主增加执行权限\nchown user:group file.txt    # 修改文件属主和属组,需要root权限\nuseradd -m newuser           # 创建用户并自动创建家目录\npasswd newuser               # 设置或修改用户密码\nusermod -aG sudo newuser     # 将用户加入sudo组(Debian/Ubuntu环境)\nuserdel -r olduser           # 删除用户并删除其家目录\n\n

\n

预期结果:chmod无输出;chown无输出;useradd无输出但可用id newuser验证。注意chmod的数字模式中,r=4,w=2,x=1,755表示属主7(rwx),组和其他5(r-x)。

\n\n

步骤5:进程与服务管理
目的:查看进程状态、终止异常进程、管理系统服务。

\n

ps aux | grep nginx         # 查看所有进程中包含nginx的条目\nps -ef                       # 显示所有进程的完整信息\nkill -9 1234                 # 强制终止PID为1234的进程(-9不可捕获)\nkill -15 1234                # 优雅终止,默认发送SIGTERM\nsystemctl status nginx       # 查看服务状态(systemd系统)\nsystemctl start nginx        # 启动服务\nsystemctl enable nginx       # 设置开机自启\nsystemctl restart nginx      # 重启服务\n

\n

预期结果:ps输出进程列表,PID列用于kill。systemctl status会显示Active: active (running)或inactive (dead)。注意kill -9可能造成数据丢失,优先使用kill -15。若系统使用SysVinit(较老发行版),用service nginx start替代。

\n\n

步骤6:网络排查命令
目的:检查网络连通性、端口监听和连接状态。

\n

ping -c 4 8.8.8.8           # 发送4个ICMP包测试连通性\nifconfig                     # 查看网卡IP(部分系统需先安装net-tools)\nip addr                      # 现代命令,查看IP地址\nss -tlnp                     # 查看监听端口和对应进程(-t TCP,-l监听,-n不解析,-p进程)\nnetstat -tulnp               # 旧命令,功能类似ss,部分系统需安装\ncurl -I http://localhost:8080 # 发送HEAD请求查看HTTP响应头,用于测试Web服务\n

\n

预期结果:ping显示响应时间;ss输出LISTEN状态的端口列表;curl -I输出HTTP状态码(如200 OK)。注意ifconfig在新发行版中可能未预装,推荐使用ip命令。若端口不通,检查防火墙规则(firewalld或ufw)。

\n\n

步骤7:磁盘与存储
目的:查看磁盘使用情况、挂载和卸载设备。

\n

df -h                        # 查看文件系统使用情况,-h以人类可读格式显示\n du -sh /var/log             # 统计目录总大小(-s汇总,-h可读)\nlsblk                        # 列出块设备(硬盘、分区)\nmount /dev/sdb1 /mnt/data    # 挂载分区到/mnt/data\numount /mnt/data             # 卸载分区,必须先退出该目录\nfdisk -l                     # 查看磁盘分区表(需要root)\n

\n

预期结果:df输出如/dev/sda1 100G 30G 70G 30% /;du输出目录总大小。注意umount时若提示“target is busy”,说明有进程占用,用lsof /mnt/data找出进程并终止。

\n\n

常见报错与解决方法

\n

报错现象1:command not found

\n

原因:命令未安装,或命令不在PATH环境变量中。例如输入ifconfig提示not found。
检查命令:echo $PATH查看PATH;which ifconfig确认是否存在。
修复方法:使用包管理器安装,如sudo apt install net-tools(Debian/Ubuntu)或sudo yum install net-tools(CentOS)。如果是自己编译的软件,需将可执行文件路径加入PATH,例如export PATH=/usr/local/bin:$PATH

\n\n

报错现象2:Permission denied

\n

原因:当前用户没有权限读取或执行目标文件。例如尝试读取/etc/shadow会报此错。
检查命令:ls -l /etc/shadow查看属主和权限。
修复方法:使用sudo执行,如sudo cat /etc/shadow;或者修改文件权限(不推荐对系统文件随意修改)。若需要长期以管理员身份操作,用sudo -i切换到root shell,但需谨慎。

\n\n

报错现象3:No space left on device

\n

原因:磁盘分区已满。
检查命令:df -h查看哪个分区使用率100%。
修复方法:清理临时文件,如rm -rf /tmp/*;清理日志,如journalctl --vacuum-time=7d(systemd系统);查找大文件du -sh /var/* | sort -h定位占用高的目录。注意不要随意删除正在使用的文件,可能导致进程异常。

\n\n

报错现象4:Unable to locate package

\n

原因:软件源列表未更新或包名错误。
检查命令:sudo apt update(Debian/Ubuntu)或sudo yum makecache(CentOS)。
修复方法:先更新源,再安装。若仍找不到,检查包名是否正确(例如apt search nginx搜索)。对于第三方软件源,需手动添加官方仓库。

\n\n

生产环境配置与避坑建议

\n

在生产环境中,命令的使用习惯直接影响系统稳定性。以下建议来自实际运维经验,供参考。

\n

    \n

  • rm命令的防护:建议执行rm前先使用ls -l确认路径,或使用mv到/tmp目录作为软删除。若必须使用rm -rf,务必先cd到目标目录的父目录,然后用相对路径(如rm -rf ./data),避免手误导致根目录被删。
  • \n

  • 使用grep时注意转义:搜索特殊字符(如点号、星号)时,用grep -F(固定字符串)或转义。例如查找“a.b”文本,用grep -F 'a.b'避免被解释为正则表达式。
  • \n

  • ssh连接超时问题:若经常遇到ssh断开,可在客户端配置ssh -o ServerAliveInterval=60,每60秒发送心跳包。服务端可在/etc/ssh/sshd_config中设置ClientAliveInterval 60
  • \n

  • 历史命令安全:不要在命令行直接输入密码(如mysql -p密码),会记录在~/.bash_history中。建议使用mysql -p然后交互输入,或使用环境变量。
  • \n

  • 回滚策略:修改系统配置前,先备份原文件,例如cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak。修改后测试配置,如nginx -t,再重启服务。
  • \n

  • 性能排查技巧:使用tophtop查看CPU和内存占用;使用iostat -x 1查看磁盘I/O;使用vmstat 1查看系统整体负载。不要盲目重启服务,先定位瓶颈。
  • \n

\n\n

常见问题 FAQ

\n

如何快速查找并杀死一个进程?

\n

先用ps aux | grep 进程名找到PID,然后kill -15 PID尝试优雅终止;若无效,用kill -9 PID强制终止。也可以使用pkill -f 进程名直接按名称杀死,但注意pkill可能误杀包含相同字符串的进程,建议使用精确匹配。

\n\n

rm -rf删除了重要文件,还能恢复吗?

\n

如果文件被进程占用,可以通过lsof | grep deleted找到进程并尝试从/proc/PID/fd恢复;否则,在普通文件系统(ext4、xfs)上删除后通常无法恢复。建议备份或使用文件系统快照(如zfs、btrfs)。生产环境应定期备份。

\n\n

netstat和ss有什么区别?我应该用哪个?

\n

ss是netstat的现代替代品,性能更好,显示信息更准确,且在大多数新发行版中预装。netstat属于net-tools包,部分系统需额外安装。建议优先使用ss,例如ss -tlnp。但netstat在某些脚本中仍被依赖,两者参数类似。

\n\n

如何查看Linux系统版本和内核信息?

\n

使用uname -a查看内核版本;使用cat /etc/os-release查看发行版名称和版本号(如Debian GNU/Linux 12 (bookworm))。hostnamectl也能显示操作系统和内核信息,适用于systemd系统。

\n\n

为什么find命令查找文件很慢?如何优化?

\n

find会遍历指定目录下的所有文件,目录越大越慢。优化方法:缩小搜索范围(如指定/var/log而不是/);使用-maxdepth 1限制深度;排除无关目录(如-path /proc -prune -o);如果经常搜索,使用locate(基于数据库,速度快但实时性差)。

\n\n

tar命令如何打包并压缩?

\n

常用组合:tar -czvf archive.tar.gz /path/to/dir(-c创建,-z gzip压缩,-v显示过程,-f指定文件名)。解压用tar -xzvf archive.tar.gz。如果使用bzip2,将-z换成-j;使用xz,换成-J。注意解压时建议先查看内容tar -tzvf archive.tar.gz,避免覆盖现有文件。

\n\n

总结与检查清单

\n

发表评论