导读:本文面向刚接触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,命令会不同。
- 权限要求:涉及系统级修改(如安装软件、修改/etc目录文件、管理服务)需要root或sudo权限。普通用户只能操作自己拥有权限的文件和目录。
- 依赖要求:部分命令可能需要单独安装,例如lsof、htop、tree。在Debian/Ubuntu下用
sudo apt install lsof安装;在CentOS/RHEL下用sudo yum install lsof。 - 备份建议:执行rm、mv、cp等可能覆盖或删除数据的命令前,建议先备份重要文件。特别是rm -rf高风险操作,务必确认路径正确。
- 环境差异:不同发行版的包管理器不同(apt/yum/dnf/pacman),但常用文件操作命令(ls、cp等)行为一致。如果使用macOS,部分命令参数略有差异(如find的-exec语法),本文以Linux为准。
\n
\n
\n
\n
\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),避免手误导致根目录被删。 - 使用grep时注意转义:搜索特殊字符(如点号、星号)时,用
grep -F(固定字符串)或转义。例如查找“a.b”文本,用grep -F 'a.b'避免被解释为正则表达式。 - ssh连接超时问题:若经常遇到ssh断开,可在客户端配置
ssh -o ServerAliveInterval=60,每60秒发送心跳包。服务端可在/etc/ssh/sshd_config中设置ClientAliveInterval 60。 - 历史命令安全:不要在命令行直接输入密码(如
mysql -p密码),会记录在~/.bash_history中。建议使用mysql -p然后交互输入,或使用环境变量。 - 回滚策略:修改系统配置前,先备份原文件,例如
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak。修改后测试配置,如nginx -t,再重启服务。 - 性能排查技巧:使用
top或htop查看CPU和内存占用;使用iostat -x 1查看磁盘I/O;使用vmstat 1查看系统整体负载。不要盲目重启服务,先定位瓶颈。
\n
\n
\n
\n
\n
\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
- \n
- 确认ls、cd、cp、mv、rm等基础命令能正确执行,且路径无误。
- 验证grep、find能搜索到预期内容,注意区分大小写和正则语法。
\n
\n