ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

场景化Linux命令实战:速查、删除、系统管理与加密指南

场景化Linux命令实战:速查、删除、系统管理与加密指南 我刚开始用Linux那会儿也跟大家一样搜“Linux命令大全”、“Linux必学的60个命令”然后复制粘贴一整页到笔记里背了两天就放弃了。原因很简单命令太多没有场景纯靠背根本记不住。后来我在服务器上踩了几次坑删错文件夹、装软件装到依赖崩溃、批量任务一条一条跑得想砸键盘才开始明白Linux命令学习的核心不是“背多少”而是“在什么场景下用哪一条用完之后怎么验证”。这篇内容不是一本完整的《Linux命令大全手册》而是把我实际用过的命令按场景重新组织了一遍删除文件夹、系统管理、装搜狗输入法、装sqlite、并行执行、文件夹加密以及一份我整理的高频命令速查表。你可以把它当成一份能直接照着操作的“速查指南”也可以当成一张查漏补缺的清单看看自己还有哪些常用操作不够熟练。1. 先想清楚再动手Linux命令的学习路径与查错思路网上能找到的命令列表动辄几百条但真实干活的时候你真正高频使用的可能不超过60个。与其死记硬背不如先掌握一套“命令学习法”遇到不认识的命令知道去哪里查执行结果不对知道怎么一步步排查。这套思路比命令本身更重要。1.1 拿到陌生命令的三步拆解法我第一次接触一个陌生命令比如journalctl时会按三步来先看man或者tldrman journalctl能看完整手册但内容太长更推荐先用tldr journalctl它是“太长不看版”直接给出常用示例。如果你的系统还没装 tldr用apt install tldr或yum install tldr装一下或者用cheat.sh在线查询curl cheat.sh/journalctl。再看命令本身属于哪一类Linux 命令通常围绕几个核心目标操作文件、管理系统、处理文本、控制权限、网络通信。把命令归类到“我要对资源做什么”记忆负担会小很多。比如rm、mv、cp都是对文件做“删除/移动/复制”我记的时候就把它们放一组。最后一定要跑一个“只读”试一下别直接上“写操作”。比如刚学find先find . -name *.log看看输出确认没问题了再考虑接-delete或-exec。只有先理解命令的输出格式才能真正用好它。1.2 命令输错后如何快速定位没有人能保证每条命令一次就对。我的习惯是命令报错之后先别急着改把错误信息拆成三部分命令名、参数、操作对象。最典型的例子是rm -rf /var/log / tmp如果你在/和tmp之间不小心多打了一个空格命令就变成了“删除 /var/log”和“删除 /tmp”而不是“删除 /var/log/tmp”。这种错误极其危险。所以当我执行包含路径的操作时会先用echo把路径打出来确认一遍或者先输入不带-rf的命令看看提示确认无误后再加参数。另外两个定位问题的常用命令type 命令名查看命令是内置命令、外部命令还是别名。比如我一直以为ls是系统程序结果type ls告诉我它其实是/usr/bin/ls而在某些系统上是alias lsls --colorauto。which 命令名找到可执行文件的位置。如果命令不存在which会返回空你就知道是没装还是环境变量没配好。history | grep 关键词查一下之前执行过的类似命令往往能快速找回正确写法。1.3 把常用命令变成你自己的“速查手册”传统做法是收藏一篇《Linux命令大全手册》但每个人的常用场景不一样。我自己的做法是建一个~/notes/linux-cheatsheet.md只记录我在真实项目中用过并且验证有效的命令每条都写好“什么时候用”和“为什么这么写”。比如我会记录这样的条目find . -type f -name *.tmp -delete场景清理当前目录下所有 .tmp 文件避免手动一个个删。注意先去掉 -delete 执行一遍确认文件列表再加 -delete。再配合 alias把易错操作变成安全操作alias rmrm -i # 删除前逐个确认这是我装完系统必改的 alias cpcp -i # 覆盖前确认 alias mvmv -i # 移动/覆盖前确认 alias grepgrep --colorauto # 输出带颜色定位更直观放到~/.bashrc或~/.zshrc里. ~/.bashrc生效。小小的几个 alias能挡住很多次手滑。2. 删除文件夹命令从 rm -rf 到安全删除的全套做法“Linux 删除文件夹命令”是搜索量最高的 Linux 话题之一。为什么因为删除这个动作不可逆一旦写错代价极大。我在生产服务器上见过有人执行rm -rf /home/user/* .bak原意是删掉.bak备份文件但*.bak前面漏了路径最后把所有用户目录全删了。所以这一节我不只给你命令还要给你一套安全删除的操作流程。2.1 删除文件夹的三种姿势及适用场景第一种只删空目录用rmdirrmdir empty-dirrmdir只能删除空目录里面有任何文件都会报错Directory not empty。好处是安全不会误删内容。适合清理空壳目录比如项目里遗留的无用空文件夹。第二种删非空目录用rm -rrm -r /path/to/dir-r表示递归处理会逐层进入目录并删除所有内容。如果你在交互式终端执行系统会逐个文件询问rm: remove regular file?太多文件时很烦。所以实际工作中更常用rm -rf。第三种强制递归删除用rm -rfrm -rf /path/to/dir-f表示强制不询问、不提示文件不存在也不报错。这是最危险的一档也是网上一搜“linux删除文件夹命令”排第一的答案。我的建议是只在确认路径绝对正确、且不需要找回时才用rm -rf平时写脚本优先用带-i或带回收站机制的方案。补充一个冷门但好用的用find按条件删除。find /app/logs -name *.log -type f -mtime 30 -delete这条命令会删除/app/logs下 30 天之前的所有.log文件适合做日志定期清理。注意-delete要放在条件最后先不带-delete跑一遍确认列出的文件没问题再补上。2.2 我踩过的 rm 误删坑与补救手段有次我清理服务器上的临时目录想删除/data/tmp/old_tmp结果手滑打成了rm -rf /data/tmp /old_tmp因为/old_tmp不存在-f让它安静地忽略错误真正的/data/tmp被删了而/data下还有别的东西。那一刻我连补救的念头都没有因为生产服务器没开快照。后来我总结出三个补救手段按优先级排序有备份就恢复备份。重要数据目录必须做定期备份这是唯一能100%恢复的办法。用 extundelete/testdisk 尝试找回。前提是文件系统是 ext3/ext4删除后尽快停止对磁盘的写入。命令示例extundelete /dev/sda1 --restore-directory /data/tmp。能不能找回取决于运气我成功率不高所以只能当最后一根稻草。从跑过的终端历史里找线索。如果误删的是脚本生成的临时文件也许可以用脚本重新生成。这个思路往往最有效但前提是你记得脚本在哪。所以真正能保护你的不是“删除后补救”而是“删除前确认”。我现在做任何批量删除都要求自己至少执行两步# 第一步只列出来不删 ls -la /data/tmp/ find /data/tmp -type f -name *.log -delete -exec echo {} \; # 第二步确认列表后再真正删除 find /data/tmp -type f -name *.log -delete2.3 给删除操作加一层保险trash-cli 与回收站思路如果你跟我一样在rm -rf面前手容易抖那可以装一个trash-cli把删除变成“挪进回收站”。# Debian/Ubuntu apt install trash-cli # CentOS/RHEL yum install trash-cli然后把它别名掉alias rmtrash-put之后再敲rm file文件不会被真正删除而是移动到回收站目录一般是~/.local/share/Trash万一删错了可以用trash-list看回收站用trash-restore恢复。trash-list trash-restore这个方案唯一的缺点是“不立刻释放磁盘空间”因为文件只是挪位置了。我通常只在个人电脑或测试服务器上用trash-cli生产环境还是老老实实用rm -rf但会配合“先列出再删除”的流程。3. 系统管理命令清单进程、服务、资源占用一网打尽日常维护 Linux 服务器来来回回就那么几件事看系统负载、看进程、管服务、查日志、看磁盘。这就是“linux系统管理命令”的核心内容。我整理了一套排查链路按顺序执行80% 的机器问题都能定位出来。3.1 排查“机器变卡”的标准命令组合当有人说“服务器卡死了”我登录后的第一组命令是固定的uptime先看负载load average是 0.5 表示近 1 分钟、5 分钟、15 分钟的平均负载。如果 5 分钟和 15 分钟都很高说明问题不是一时半会儿需要继续查。top再看整体资源占用。top上方是 CPU、内存、负载汇总下方是进程列表。按P按 CPU 排序按M按内存排序这是我在现场用得最多的两个键。如果你想看“哪个进程吃CPU”用ps结合排序ps aux --sort-%cpu | head -20 ps aux --sort-%mem | head -20这条命令会列出 CPU 或内存占用前 20 的进程。--sort-%cpu是按 CPU 降序排列head -20只取前 20 行避免刷屏。内存方面看free -hfree -h重点看available这一列它代表“还可用的内存”而不是看free列。因为 Linux 会把空闲内存用作缓存free数值低不代表内存不够available才是比较真实的可分配值。磁盘方面更简单df -h这条命令展示各挂载点的空间使用率。镜像站运维经常遇到某目录 100% 占满的情况用du -sh /*逐级往下查很快就能定位大文件du -sh /opt/* | sort -rh | headsort -rh表示按人类可读大小反向排序head取前几个是清理磁盘时最高效的命令。3.2 管理服务的 systemctl 常用姿势现在的主流发行版基本都用 systemd所以systemctl是系统管理命令里绕不开的。我最常用的几个systemctl status nginx # 查看服务运行状态和最近日志 systemctl start nginx # 启动服务 systemctl stop nginx # 停止服务 systemctl restart nginx # 重启服务 systemctl enable nginx # 设置开机自启 systemctl disable nginx # 取消开机自启 systemctl daemon-reload # 修改了 /etc/systemd/system/xxx.service 后重载配置如果你改了服务的配置文件只重启服务可能不生效正确顺序是systemctl daemon-reload systemctl restart nginxdaemon-reload会重新读取 systemd 的单元文件不加这一步有些新配置不会被应用而且你在排错时很难想到是这个问题。查看开机启动项别用chkconfig了用systemctl list-unit-files --typeservice | grep enabled3.3 日志查看与定时任务两个保命技能系统出问题第一件事永远是看日志。systemd 环境下统一用journalctljournalctl -u nginx --since 1 hour ago # 查看 nginx 服务最近 1 小时日志 journalctl -f # 实时跟踪日志类似 tail -f journalctl --disk-usage # 查看日志占用空间传统日志也不用放弃很多应用仍然往/var/log/下写文件tail -f /var/log/nginx/access.log grep ERROR /var/log/app.log | tail -30定时任务用cron管理方式是crontabcrontab -e # 编辑当前用户的定时任务 crontab -l # 查看当前用户的定时任务写定时任务的格式是“分 时 日 月 周 命令”。举个例子每天凌晨 3 点备份数据库放到脚本/opt/backup.sh0 3 * * * /opt/backup.sh注意 cron 环境变量和手动执行不一样脚本里如果要用到mysql等命令路径要写成绝对路径比如/usr/bin/mysql或者在脚本开头重新声明PATH/usr/bin:/bin:/usr/local/bin。这是我踩坑最多的地方手动执行脚本没问题cron 一执行就报“command not found”原因就在这里。4. 软件安装实战搜狗输入法的命令行安装全记录在 Linux 下装搜狗输入法是很多从 Windows 转过来的新用户遇到的第一道坎。因为搜狗输入法官方只提供.deb包主要支持 Ubuntu/Debian 系而且依赖 fcitx 输入法框架。如果你装完发现输入法切不出来八成不是安装包的问题而是输入法框架和配置没弄对。4.1 为什么输入法安装总出问题依赖与输入法框架先理清一个概念搜狗输入法是运行在fcitx框架上的。Linux 下和 fcitx 平级的还有ibus。如果你系统里默认是 ibus那拿搜狗的.deb包装了也很难正常调出中文输入。所以安装搜狗前基本步骤是“确保 fcitx 存在然后告诉系统使用 fcitx”。我之前在一台干净到不能再干净的 Debian 上装搜狗走了很多弯路最后沉淀出的完整命令序列如下供参考。4.2 搜狗输入法安装的完整命令序列以 Ubuntu/Debian 系为例先更新源然后安装 fcitx 基础组件sudo apt update sudo apt install -y fcitx fcitx-googlepinyin fcitx-config-gtk装完 fcitx 后从官网下载搜狗输入法 Linux 版.deb包。如果你使用国内镜像或者官方已经打成.deb拿到文件后执行sudo dpkg -i sogoupinyin_*.debdpkg -i安装.deb包时经常提示依赖缺失比如Errors were encountered while processing: sogoupinyin这时不要慌执行依赖修复sudo apt --fix-broken install -y这条命令会把 dpkg 记录缺失的依赖自动补上。补完之后再执行一遍dpkg -i或者直接apt install -f然后再重装一次输入法包sudo dpkg -i sogoupinyin_*.deb最后配置系统使用 fcitx。图形界面下可以用im-configim-config -n fcitx然后重启桌面或者注销重新登录。重启后打开fcitx-config-gtk3命令行输入即可在“输入法”列表里添加 Sogou Pinyin设置切换按键默认 CtrlSpace完成。如果你用的是 Arch 系还可以通过 AUR 安装yay -S fcitx5-sogoupinyin不过这个包是社区维护的版本更新可能跟不上官方能用但不保证 100% 同步。4.3 安装失败后的排查修复命令最磨人的不是安装而是装完调不出来。我遇到过三类问题对应三条排查命令第一类fcitx 进程起不来fcitx-diagnose这条命令会输出完整的诊断报告包括环境变量、字体、dbus 状态等。重点看有没有ERROR行如果有按提示修复。第二类输入框里没有搜狗选项打开终端检查fcitx-config-gtk3然后在“附加组件”里看是否启用了 Sogou 相关组件。有时候.deb包安装成功但组件没加载重启 fcitx 可以解决pkill fcitx fcitx -d /dev/null 21 第三类语言环境导致中文显示乱码检查 localelocale -a如果没有zh_CN.UTF-8需要先生成它。Ubuntu 系使用sudo locale-gen zh_CN.UTF-8生成后source /etc/default/locale或注销重登一般能解决。5. 开发环境工具sqlite3 的命令行安装与即时使用很多做数据分析或小项目的人会在 Linux 上装 SQLite。SQLite 是一个轻量级嵌入式数据库不需要独立服务进程一个文件就是一个数据库特别适合写脚本、存配置、做临时数据查询。所以“linux下sqlite安装命令”也常被搜索。这里给你一套完整的安装和上手用法。5.1 安装 sqlite 的三种方式与依赖选择SQLite 在 Linux 下一般分为sqlite3命令行工具和libsqlite3-dev开发库。如果你只是用命令行操作数据库装前者就够了如果要写 C 程序调用 SQLite才需要装开发包。Debian/Ubuntusudo apt update sudo apt install -y sqlite3 libsqlite3-devCentOS/RHELsudo yum install -y sqlite sqlite-devel如果系统版本较老官方源里的 SQLite 版本低比如 3.7 老版本而你想要新特性可以考虑编译安装。官方下载 SQLite 源码合并版amalgamation即 sqlite-src 或 autoconf 包步骤如下wget https://www.sqlite.org/2024/sqlite-autoconf-3450300.tar.gz tar zxvf sqlite-autoconf-3450300.tar.gz cd sqlite-autoconf-3450300/ ./configure --prefix/usr/local make -j$(nproc) sudo make install编译前确认系统有gcc和make否则第一步就过不去apt install -y build-essential装完验证版本sqlite3 --version输出类似3.45.3就说明成功了。5.2 sqlite3 命令行里的高频小操作进入一个数据库文件如果文件不存在sqlite3 会自动创建sqlite3 mydata.db进去之后你是处于 sqlite 的交互模式。先看有哪些表.tables创建一张报表CREATE TABLE user ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER );插入几条数据INSERT INTO user (name, age) VALUES (张三, 28); INSERT INTO user (name, age) VALUES (李四, 32);查询SELECT * FROM user;退出交互模式的命令是.quit或按 CtrlD。所有点开头的都是 sqlite 的元命令不是 SQL 语句。如果你不想进入交互模式可以一条命令搞定sqlite3 mydata.db select * from user;这在写脚本时非常方便。5.3 用 sqlite3 写一个自动导出的小脚本SQLite 命令行工具虽然简单但组合起来能完成不少自动化任务。比如我想把user表导出成 CSV可以这样sqlite3 mydata.db select id, name, age from user; user.csv这输出的其实不是标准 CSV字段之间默认用|分隔。想要真正的 CSV需要修改输出模式sqlite3 -header -csv mydata.db select * from user; user.csv-header输出列名-csv输出逗号分隔格式。之后cat user.csv就能看到 CSV 内容。再比如针对大量数据的分页查询SQLite 本身支持LIMIT和OFFSETsqlite3 mydata.db select * from user limit 20 offset 0;这些命令组合到脚本里就能做简单的数据导出和批量处理。6. 并行执行命令让 CPU 闲不下来的几种写法“并行执行 linux 命令”这个需求我最初是在批量压缩图片时遇到的。几千张图片一张一张convert处理CPU 只用满单核其他核闲着跑完要二十分钟。后来发现只需要加加wait或者用xargs -P十分钟就能跑完。这一节分享几种并行写法以及它们各自的适用边界。6.1 用和wait最简单的并行Shell 的表示把命令放到后台执行wait等待所有后台命令结束。示例sleep 3 sleep 3 wait这样两个sleep 3是同时执行的总耗时 3 秒而不是 6 秒。真实的批量任务可以这样做for file in /data/img/*.jpg; do convert $file -resize 50% resized_${file##*/} done wait注意后面不要跟空格再写命令否则会把整条命令丢到后台。这个写法最大的问题是如果不加wait脚本会立刻退出而后台命令还没跑完如果任务太多同时后台跑几百个convert内存会爆。所以我一般只在任务数可控比如 10 个以下时用wait。任务量大时用下面的xargs -P。6.2 xargs -P批量任务的并行利器xargs本身的作用是把标准输入转换成命令行参数-P指定最大并行进程数。比如我要并行压缩 100 张图片find /data/img -name *.jpg -print0 | xargs -0 -P 4 -I {} convert {} -resize 50% resized_{}解释一下-print0和-0以空字符\0分隔文件名避免文件名里有空格时出错。-P 4同时最多执行 4 个进程。-I {}用{}占位符接收每一行输入然后在命令里替换。-P 4是关键可以根据 CPU 核数调整。一般设-P $(nproc)就差不多了nproc返回 CPU 逻辑核数。但遇到 I/O 密集任务比如磁盘读写并行 4 个往往比 16 个更快因为磁盘瓶颈会卡住所有进程。我的经验是CPU 密集任务可以用nprocI/O 密集任务先用 2~4 试跑一次看耗时和系统压力再调。6.3 GNU parallel更优雅的并行方案GNU parallel 比xargs更强大支持进度条、日志、分发到远程机器等。安装apt install parallel基本用法和 xargs 类似find /data/img -name *.jpg | parallel -j 4 convert {} -resize 50% resized_{.}注意{.}表示去掉扩展名的文件名所以resized_{.}.jpg会变成resized_file.jpg这在xargs -I里做不到需要配合 shell 处理。GNU parallel 的优势是输出不混乱还能用--progress看实时进度find /data/img -name *.jpg | parallel --progress -j 4 convert {} -resize 50% resized_{.}.jpg如果任务本身是执行某个脚本也可以直接用 parallelcat task_list.txt | parallel -j 8 ./run_one.sh {}6.4 并行执行时的输出与错误处理并行很容易出现“输出互相穿插”的问题。比如多个进程同时echo屏幕上会乱成一团。解决办法有两个重定向到不同文件。每个进程的输出写到单独文件find /data/img -name *.jpg | parallel -j 4 convert {} -resize 50% resized_{.}.jpg 2 /tmp/err_{/}.log用 GNU parallel 的--ungroup或默认“组输出”特性GNU parallel 默认会等进程结束后一次性输出该进程的所有内容不乱序。xargs没有这个保证所以你如果特别在意日志顺序优先用 GNU parallel。还有一个容易被忽略的坑并行任务里不要让多个进程同时写同一个文件。比如两个进程都在压缩同一个图片并输出到resized.jpg最终结果是谁后写完谁覆盖谁而且文件可能损坏。必须保证每个任务的输出文件名都是唯一的。7. 文件夹加密的实用方案用 password 保护敏感资料搜索“linux password加密文件夹命令”的朋友多半是想保护一些私密配置、财务记录或者不想让别人直接打开的文件。Linux 下的文件夹加密方案不少我按“轻量/重量”和“易用性/安全性”两个维度做了对比下面这几种是我实际验证过、能直接照着做的。7.1 轻量方案zip 加密与 gpg 对称加密如果你只需要把某个目录打包后加密最简单的方案是使用带加密的压缩包。zip 命令支持-e参数设置密码并加密zip -re secret.zip /path/to/folder执行后会提示输入密码然后生成secret.zip。解压时输入密码unzip secret.zip这个方案的好处是“对方肯定能解压”缺点是 zip 的加密算法在旧版本下不够强容易被暴力破解工具攻破。如果资料敏感度不高只防“手滑点开的人”够用。想要更强的加密用gpg对称加密一个 tar 包tar czf - /path/to/folder | gpg -c folder.tar.gz.gpg这条命令先tar打包并压缩然后通过管道把数据交给gpg -cc 表示 symmetric对称加密加密过程会要求设置口令。解密时执行gpg -d folder.tar.gz.gpg | tar xzgpg -d解密并输出到标准输出管道后面的tar xz解压。这个方案比 zip 更可靠GnuPG 的加密强度完全够用。我把这类命令写进了一个脚本encrypt-folder.sh每次要加密资料直接调用不用记命令。7.2 整目录透明加密cryptsetup 与 LUKS如果你要加密的是一个持续使用、经常读写大量文件的目录而不是“打包归档私密资料”那就需要“透明加密”方案目录挂载后读写跟普通目录一样卸载后就打不开。最常用的是 LUKS ext4 回环设备。创建一个大文件作为加密容器比如 512MBdd if/dev/urandom of/tmp/private.img bs1M count512用cryptsetup初始化 LUKS 格式cryptsetup luksFormat /tmp/private.img这条命令会警告你“数据会被清除”输入YES然后设置加密口令。接着打开映射cryptsetup open /tmp/private.img secret-disk这里secret-disk是映射名打开成功后在/dev/mapper/secret-disk会得到一个块设备。创建文件系统并挂载mkfs.ext4 /dev/mapper/secret-disk mkdir -p /mnt/secret mount /dev/mapper/secret-disk /mnt/secret现在你可以往/mnt/secret里写任何文件卸载时umount /mnt/secret cryptsetup close secret-disk之后/tmp/private.img仍然是加密状态没有口令谁也读不出内容。下次使用cryptsetup open /tmp/private.img secret-disk mount /dev/mapper/secret-disk /mnt/secret这套方案的优势是加密强度高、使用体验接近原生目录劣势是“文件容量固定”。如果想动态扩容用 LVM 或者改用encfs这类文件级加密但性能和兼容性会有所取舍。7.3 加密方案对比与注意事项我把几种方案放在一起对比方便你按需选择方案加密强度使用方式适用场景zip -re弱防君子不防小人打包/解压临时传文件、低敏感备份gpg -c强打包/解压归档机密资料、发送给他人LUKS/cryptsetup强挂载/卸载长期使用的加密目录、外部移动盘encfs中挂载/卸载网盘同步前加密但兼容性注意注意事项我只说三点所有加密方案都依赖密码强度。gpg和 LUKS 本身很难破解但如果你用123456破解难度约等于零。建议用 12 位以上的随机口令或者直接使用密码管理器生成。忘记口令 数据永久丢失。加密数据没有任何后门没有恢复机制。我在实际操作中会把 gpg 恢复用的“撤销数据”gpg --gen-revoke生成的文件打印出来存好但 LUKS 和 zip 就没有这种后悔药。加密前先备份加密后验证。我每次加密完都会重新解压或挂载一次确认能读再删除原始明文文件夹。别等删完了才发现加密文件损坏。8. 高频命令速查Linux 必学的 60 个命令精简表最后这一部分给还没建立自己命令库的人一份基础清单。我按照“Linux必学的60个命令”这个大致的范围结合自己平时在服务器和个人电脑上真正高频使用的命令整理成四张表。每一条我只写最核心的用法和一句话记忆方便你快速对照。8.1 文件操作与文本处理命令常用示例用途/记忆点lsls -lah列出目录内容-h人类可读cdcd /var/log切换目录pwdpwd显示当前目录路径mkdirmkdir -p a/b/c创建目录-p自动创建父目录touchtouch a.txt创建空文件或更新时间戳cpcp -r src dst复制文件/目录-r递归mvmv old new移动/重命名rmrm -rf /tmp/t删除文件/目录高危操作catcat file查看整个文件内容lessless file分页查看大型文件空格翻页headhead -20 file查看文件开头 N 行tailtail -f file查看文件末尾-f实时跟踪grepgrep -rn error /log文本搜索-r递归目录sedsed -i s/old/new/g f文本替换-i直接修改文件awkawk {print $1} f按列处理文本提取第一列sortsort -rn f排序-r逆序-n按数字wcwc -l f统计行数/字数findfind /tmp -name *.log查找文件支持按名称/时间/大小8.2 系统信息与进程管理命令常用示例用途/记忆点uptimeuptime看负载均值toptop动态看进程与资源按 P/M 排序psps aux --sort-%cpu静态查看进程快照killkill -9 pid按 PID 杀进程-9强制killallkillall nginx按名称杀进程pkillpkill -f python app.py按进程名或完整命令行杀freefree -h看内存和交换分区dfdf -h查文件系统空间dudu -sh /tmp统计目录占用空间unameuname -a查内核版本/系统版本hostnamehostnamectl查看/修改主机名datedate -s查看/设置系统时间crontabcrontab -e管理定时任务systemctlsystemctl status nginx管理 systemd 服务journalctljournalctl -u nginx查看服务日志8.3 网络与远程操作命令常用示例用途/记忆点pingping -c4 baidu.com测试网络连通性curlcurl -I https://example.com发送 HTTP 请求-I只看响应头wgetwget https://example.com/f.zip下载文件sshssh userhost -p 22远程登录scpscp file userhost:/path远程复制文件rsyncrsync -avz src/ userhost:/dst/增量同步文件/目录ipip addr show查看网络接口/IP 地址ssss -tlnp查看监听端口和对应进程netstatnetstat -tlnp老牌端口查看工具telnettelnet host 80测试端口是否通新系统需自行安装nslookupnslookup example.comDNS 查询8.4 权限、压缩、软件管理与更多命令常用示例用途/记忆点chmodchmod 755 script.sh修改文件权限chownchown -R user:group /data修改文件属主/属组tartar zxvf f.tar.gz压缩/解压c创建x解压zgzipzip/unzipzip -r out.zip dirZIP 压缩/解压aptapt update apt install pkgDebian/Ubuntu 软件管理yumyum install pkgCentOS/RHEL 软件管理dnfdnf install pkg新版 CentOS/RHEL 包管理dpkgdpkg -i pkg.deb本地 deb 包安装rpmrpm -ivh pkg.rpm本地 rpm 包安装whichwhich python3查看命令路径whereiswhereis nginx查找二进制、源码、配置位置aliasalias llls -l设置命令别名exportexport PATH$PATH:/usr/local/bin设置环境变量envenv显示所有环境变量historyhistory查看命令历史manman ls查看命令手册tldrtldr tar查看命令精简示例需安装8.5 如何把这份清单变成“随身手册”上面四张表加起来已经超过 60 个命令了。但真正的“命令大全手册”不是让你背的而是让你知道“原来还有这个命令可以做到这件事”。我的建议是先把表里每条命令的“常用示例”拷贝到本地笔记每周挑 3 条你在真实任务中用到的命令自己敲一遍把报错和结果记录下来。遇到不熟悉的功能直接man或者tldr查不要靠猜。在 Linux 环境里man本身就是最权威的手册。把零散的命令按自己的项目场景串成脚本。比如我做定时备份就用targzipcrontab三个命令解决我做文件清理就用find-delete。当你发现一个任务可以用多个命令配合完成时你对命令的记忆会牢固很多。我自己到现在也没有哪个“命令大全”能背全但遇到新任务我知道该去哪里查、该用什么命令组合。这份速查指南的意义也不在于让你一次性全记住而是给你一个可以反复回来看的起点。最后一次维护这篇内容时我把它保存到了~/notes/linux-cheatsheet.md又加了两条 aliasalias cheatvim ~/notes/linux-cheatsheet.md、alias cheat2grep -i。每当有人跟我抱怨“Linux命令太多记不住”我就把这份文件甩过去然后补一句先跑起来错了再查查完再改这才是最快的上手路径。
返回列表