Linux常用命令实战整理:按场景分类,拒绝死记硬背

最近后台收到不少读者私信,说网上的“Linux 命令大全”太多,动不动就是几百条,看着压力很大,真到用的时候还是想不起来。我自己也经历过这个阶段,刚接触 Linux 那会儿,收藏夹里塞满了“XX 条常用命令整理”,结果打开编辑器和服务器,大脑一片空白。后来才慢慢意识到,Linux 常用指令这东西,靠背是背不下来的,它必须在具体场景里反复用,才能变成自己的肌肉记忆。

这篇博文就是我现阶段整理的 Linux 常用指令汇总,标题写着“正在整理”,是因为我还在持续往里面补充自己的使用心得和踩坑记录,并不会把它写成一本字典。我按实际工作中最常遇到的场景来做分类,而不是按字母表硬排,每一类里面我会标出哪些是“必须熟练”,哪些是“知道有这个东西、用的时候能查就行”。如果你是刚接触服务器的新手,或者准备运维、后端岗位面试,又或者只是想把日常操作从“能跑”提升到“顺手”的程度,这份汇总应该能帮你省下不少绕弯路的功夫。

1. 这份指令整理,不是命令大全,而是一套排障习惯

先聊聊我为什么拒绝“命令大全”这种形式。早些年我也尝试过把网上流传的几百条命令整理成表格,一列是命令,一列是解释,最后发现根本记不住,因为脱离了场景的命令就是一堆符号。后来我把思路反过来,不再问“有哪些命令”,而是问“我遇到一个问题时,先用哪条命令、再看什么输出、然后再执行什么”,整理出来以后好用得多。

1.1 为什么要“按场景”而不是“按字母表”整理

举个例子,“查看磁盘占用”这件事,新手可能会去搜“linux 查看磁盘命令”,搜出来 df、du、fdisk、lsblk 一堆结果,不知道用哪个。如果按场景来组织,你会这样记录:

  • 只看磁盘容量和挂载点:df -h
  • 想确认某个目录到底占了多少空间:du -sh 目录名
  • 想看这个目录下面哪个子目录最占空间:du -h --max-depth=1 目录名 | sort -hr
  • 想给新硬盘分区、格式化:才会用到 fdisk 或 parted

我把这些归到“磁盘排查”场景下,以后遇到“磁盘满了”的问题,直接走这套流程就行,不需要现场纠结。这篇博文整理的也是这个逻辑,每一类就是一类真实问题,指令只是解决这个问题的工具。

1.2 我的指令分档标准:必会、高频、了解

我在整理时给每条指令打了标签,这个习惯推荐大家也试试:

  • 必会:几乎天天用,写脚本、排查问题绕不开,记不住自己都难受。例如 ls、cd、grep、tail、ps、df。
  • 高频:每周都会用几次,平时可以查,但最好熟练。例如 find、sed、awk、scp、systemctl。
  • 了解:特定场景才用到,知道“有这个东西”即可,遇到再查 man 或 --help。例如 fdisk、parted、tcpdump。

这个分档标准很重要,因为它能帮你把精力花在刀刃上。很多人学 Linux 学得很累,就是因为他试图把“了解”级别的命令背到“必会”,把精力耗在了十年都用不上一次的冷门参数上。我的建议是,先抓住“必会”和“高频”,剩下的交给搜索引擎和 man 手册。

另外,任何一条命令的细节你都可以通过 man 命令名 查看完整手册,大部分 GNU 工具也支持 命令名 --help 快速查看参数摘要。这不是废话,我见过太多人卡在“记不住参数”上,而实际上参数根本不需要记,能进到正确的场景里用 --help 查就足够了。

需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。

2. 文件与目录:先把手上的操作练顺

文件操作是 Linux 的日常,同时它也是新手最容易犯“致命错误”的重灾区。这里说的不是使用频率最高的 ls、cd 这些基础中的基础,而是“你以为你会了,但实际上没完全会”的细节。

2.1 路径与跳转:pwd、cd、ls 里容易忽略的小技巧

刚上手时,我习惯在终端里敲一下 pwd 确认自己当前在哪个目录,这个习惯到现在都保留着。cd 有几个非常实用的变体:

  • cd ~:回到当前用户的家目录,等价于直接敲 cd 不带参数。
  • cd -:回到上一次所在的目录。这个在两边目录来回切换时特别好用,不用重复敲长路径。
  • cd .. 和 cd ../..:回到上级和上上级目录,这个不难,但很多人不知道可以连续跳多层。

ls 也不是只有 ls 和 ls -l。我最常用的组合是:

  • ls -l:查看权限、属主、大小、修改时间。
  • ls -a:显示隐藏文件(以点开头的文件)。
  • ls -lh:大小用人类可读的单位显示(K、M、G),比默认的字节数直观得多。
  • ls -lt:按修改时间倒序排列,调试程序时快速找到刚生成的文件,这个特别好使。

ls -l 的输出里有几个字段,很多新手不知道怎么看。随便截一行:

code复制-rw-r--r-- 1 zhangsan devs 4096 Jan 12 10:30 app.log

从左到右分别是:文件类型与权限(-rw-r--r--)、硬链接数(1)、属主(zhangsan)、属组(devs)、大小(4096 字节)、最后修改时间(Jan 12 10:30)、文件名。第一列里第一位是文件类型,- 表示普通文件,d 表示目录,l 表示符号链接。这个字段我在讲权限那部分还会再展开,先把结构看懂。

2.2 复制移动删除:cp、mv、rm 的坑与参数

先说 cp。复制单个文件很简单,但复制目录时注意加 -r,不然会报错“omitting directory”。我个人的习惯是复制时直接加 -a,这个参数等价于 -r 加保留权限、属主、时间戳等属性,比裸的 -r 更“原汁原味”。写成 cp -a 源目录/ 目标目录/,我踩过的坑是忘记末尾的斜杠,导致把目录复制到了目标目录的“子目录”里,排错排了半天。

mv 看起来比 cp 简单,因为它对目录不需要特殊参数,直接 mv old_dir new_dir 就行。但注意一个细节:mv 跨文件系统移动时,本质是“复制 + 删除”,大文件时会看到明显的等待过程;如果提示cross-device link相关的错误,通常就是跨文件系统了,这种情况建议改用 cp -a 再删除源文件。

rm 是重灾区。rm -rf 这条命令在国内外运维圈里不知道误删了多少生产数据,我自己的服务器上也手滑过。这里给出几个安全习惯:

  • 删除目录必须加 -r,否则提示“cannot remove ‘目录名’: Is a directory”。
  • 普通删除文件不需要 -f,-f 的含义是“忽略不存在的文件、不提示确认”,非必要别加。
  • 如果你要删除的路径比较深,比如 rm -rf /home/zhangsan/project/build,建议先 ls /home/zhangsan/project/build 确认路径存在且内容符合预期,再执行删除。
  • 更稳妥的做法是设置别名:alias rm='rm -i',每次删除前让你确认一遍。我至今都开着这个别名,多敲一个 y 的成本,远低于误删后恢复不了的成本。

2.3 查找文件:find、locate、which 的取舍

查找文件的场景分三种,工具也不同:

which 解决的是“这个命令在哪个路径”的问题。比如你要确认 python3 到底指向哪个版本,或者你改完 PATH 后想知道新命令在哪,which python3 直接给出绝对路径。它只搜索 PATH 环境变量里的目录,所以 /usr/local/bin 下的程序也能查到。如果要看命令的更多信息,可以试试 type -a 命令名,它会显示别名、函数、内建命令、外部命令的所有命中项,排查诡异环境问题时很管用。

locate 依靠预建的数据库来查文件名,速度极快,但缺点是新创建的文件可能查不到,需要先 updatedb 更新数据库。很多精简版系统没有预装这个命令,所以它的存在感不如 find 强。

find 才是真正的全能型选手,它的核心价值在于可以按各种属性组合查找。我给你列几个高频用法组合:

bash复制find /var/log -name "*.log"                  # 按名字模糊匹配
find /home -type d -name "cache"             # 只找目录,不找文件
find /tmp -size +100M                        # 查找大于 100M 的文件
find /data -mtime -3 -type f                 # 三天内修改过的文件
find . -name "*.log" -exec rm -rf {} \;      # 找到后删除,注意结尾的 {} 和 \;

-mtime -3 表示修改时间在 3 天以内,+3 表示 3 天以前。这个在清理过期日志时特别好用,比人工去翻目录高效得多。需要提醒的是,find 在有大量文件的目录里执行会比较慢,尽量把搜索范围缩到最小,别一上来就从 / 开始全盘扫。

3. 文本查看与处理:日志排查的看家本领

如果说文件操作是 Linux 的地基,那文本处理就是 Linux 的“看家手艺”。服务器上的日志、配置文件、数据导出结果,绝大多数都是纯文本格式。你看一个运维或后端老手的工作方式,往往就是几条查看命令加几条处理命令的组合。

3.1 查看文件:cat、less、more、tail、head 怎么选

这几个命令都能“看文件”,但侧重点完全不一样:

  • cat:最简单粗暴,把整个文件内容全部打印到屏幕。适合看小文件,比如 .gitignore、某个短配置文件。一旦文件超过一屏,cat 的输出就没法好好读了,因为它会哗啦啦全滚过去。
  • less:看大文件的首选。它支持上下翻页(方向键、PageUp/PageDown)、按 / 搜索关键词、按 q 退出。我查看日志的时候几乎只用 less,因为它不会像 vi/vim 那样把文件“锁住”,你只是浏览,不会误改内容。
  • more:早期的分页工具,只能往下翻,不能往回翻,功能比 less 弱很多。网上有个段子说“ less 是 more 的加强版”,这不是玩笑。所以如果你看到这里,直接记住用 less 就好,more 只需要知道它存在。
  • tail:看文件尾部,特别适合测试追加写入的日志。tail -f 日志文件 可以实时跟踪文件新增内容,程序在跑的时候,新日志会一行接一行滚出来,排查报错、确认流程走到哪一步都靠它。
  • head:看文件头部,head -n 5 文件 表示只看前 5 行,适合快速瞄一眼格式。

实际排障时我最常用的组合是:先用 tail -f 盯实时的输出,等程序跑完或报错后,再用 less 去日志里搜索关键词,定位上下文。

3.2 grep:过滤与正则的实战

grep 是文本处理里最核心的指令,它的作用是从文本里“筛”出目标内容。我列几个实际工作里用到烂的参数:

bash复制grep "error" app.log                  # 在单个文件里找包含 error 的行
grep -r "error" /var/log/nginx/      # 递归搜索目录下所有文件
grep -i "error" app.log               # 忽略大小写
grep -v "^#" /etc/nginx/nginx.conf    # 反向匹配,过滤掉以 # 开头的注释行
grep -E "error|warning" app.log       # 扩展正则,同时匹配多个关键词
grep -n "error" app.log               # 显示匹配到的行号

正则表达式是 grep 的灵魂,但新手不需要马上去啃完整的正则语法。你先掌握几个最常用的元字符就够用了:^ 表示行首,$ 表示行尾,. 表示任意单个字符,* 表示前面的字符重复任意次,[] 表示字符集合(比如 [0-9] 匹配任意数字)。举一个实际例子:你想从日志里筛出所有带 IP 地址的行,就可以用:

bash复制grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" app.log

这套写法在后续写脚本、排查问题时都非常常用。另外提醒一句:日志文件很大时,grep 全部量会比较慢,最好配合 tail 先截取一段,比如 tail -n 10000 app.log | grep "error",只处理最后一万行。

3.3 sed 与 awk:改一行、取一列

sed 和 awk 是文本处理里的“两座大山”,很多人一看就头大,其实日常使用只需要掌握很小的一部分能力。

sed 最常见的用途是“替换”。语法是:

bash复制sed 's/要被替换的内容/替换成什么/g' 文件

末尾的 g 表示“全局替换”,不加的话每行只替换第一处匹配。举个例子,你把配置文件里的旧域名替换成新域名:

bash复制sed 's/old.example.com/new.example.com/g' /etc/app/config.ini

注意:这样只是在终端打印替换后的结果,并不会直接修改原文件。想原地修改需要加 -i 参数,强烈建议写成 -i.bak 的形式,也就是 sed -i.bak 's/old/new/g' config.ini,它会在修改前自动生成一个带 .bak 后缀的备份文件。这个习惯救过我好几次,改坏了还能秒回滚。

awk 的核心能力是“按列取内容”。默认情况下它以空格或制表符作为分隔符,$1 表示第一列,$2 表示第二列,$NF 表示最后一列。最常见的例子是看 /etc/passwd 文件,它用冒号分隔用户信息,取出所有用户名:

bash复制awk -F: '{print $1}' /etc/passwd

-F: 的意思是显式指定冒号为分隔符,{print $1} 表示打印第一列。再比如你 ps aux 查看进程时,想只关心 CPU 占用最高的进程名,可以用 ps aux | awk '{print $3, $11}' | sort -nr 这样的组合,第三列是 CPU 使用率,第十一列是命令。管道符 | 在这里把前一个命令的输出交给下一个命令处理,这是 Linux 文本处理里最核心的组合思路。

4. 用户、权限、进程与服务:服务器管理的骨架

文件操作和文本处理解决的是“我在消费数据”的问题,但到了服务器管理层面,你就得面对用户、权限、进程、服务这些“真正的骨架”。很多人从个人电脑转到服务器运维时会非常不适应,是因为这里的一切都是有“身份”和“边界”的。

4.1 用户与组:useradd、usermod、passwd

创建用户最常见的场景是:新同事来了,你需要给他开一个账号;或者某个新服务需要用自己的账号运行,而不是直接用 root。

bash复制useradd -m -s /bin/bash zhangsan   # 创建用户并创建家目录,指定 shell
passwd zhangsan                     # 设置或修改密码
usermod -aG sudo zhangsan           # 把用户加入 sudo 组,允许提权
id zhangsan                         # 查看用户的 uid、gid 和所属组
userdel -r zhangsan                 # 删除用户并一并删除家目录

这里的 -m 会自动创建 /home/zhangsan 家目录,很多发行版不加这个参数就不会建家目录,导致用户登录后直接落在 /,非常别扭。-s /bin/bash 指定默认 shell,如果你漏掉,系统可能给用户配上 nologin,完全没法正常登录命令行。

实际管理服务器时,我基本不会用 root 做日常操作,而是创建自己的普通用户,再通过 sudo 临时提权。“最小权限”原则不只是一句口号,它能在你手滑执行危险命令时,保住服务器的命。

4.2 权限位:chmod、chown 与 umask

先看一段 ls -l 的输出:

code复制-rwxr-xr-x 1 root root 12345 Jan 1 00:00 run.sh

从第二个字符开始,每三个字符一组,分别对应“属主权限”“属组权限”“其他用户权限”。r 表示读(4),w 表示写(2),x 表示执行(1),- 表示无权限。所以 rwxr-xr-x 翻译成数字就是 755,rw-r--r-- 翻译成数字就是 644。

  • chmod 755 run.sh:设置属主可读可写可执行,组和其他用户可读可执行。这是常见的脚本权限。
  • chmod +x run.sh:只给所有角色加上执行权限,写法更口语化。
  • chown zhangsan:devs app.log:把文件属主改成 zhangsan,属组改成 devs。改属主基本上必须用 root 权限。
  • chown -R zhangsan:devs 项目目录/:递归修改目录及其内部所有文件。

umask 决定了新建文件的默认权限,多数系统默认 022,所以新建文件默认是 644,目录默认是 755。如果你们团队有特殊的安全要求,需要让新建文件不向“其他用户”开放读权限,那就把 umask 改成 027。可以临时执行 umask 027,也可以写进 /etc/profile 永久生效。

4.3 进程与服务:ps、top、kill、systemctl

查看进程状态是我服务器排障里最高频的动作之一。基础的两条命令:

  • ps aux:列出所有进程的完整信息,第二列和第三列分别对应 PID 和 CPU 占用。
  • ps -ef:另一种格式的进程列表,和 aux 输出内容基本相同,只是排版不同,我建议你记住其中一个就行。

top 是动态版的任务管理器,默认每几秒刷新一次,按 P 按 CPU 排序,按 M 按内存排序,按 q 退出。排查“机器为什么卡”时,我会先 top 看一眼整体负载,然后找 CPU 占用最高的进程再深入处理。

结束进程用的是 kill PID,结束不了的可以 kill -9 PID。-9 发送的是 SIGKILL 信号,强杀无商量,进程没有机会做清理工作。我的建议是:先用普通 kill,等几秒,不行再用 -9。直接上 -9 容易留下未保存的数据或僵尸进程。

服务管理在各大主流发行版上已经统一到 systemd,核心命令是 systemctl:

bash复制systemctl status nginx          # 查看服务运行状态
systemctl start nginx           # 启动服务
systemctl stop nginx            # 停止服务
systemctl enable nginx          # 设置开机自启
systemctl restart nginx         # 重启服务

排查服务故障时,systemctl status 只是第一站,它会告诉你服务的当前状态和最近几行日志。如果这里看不出问题,再用 journalctl -u 服务名 -n 50 拉取该服务的最近 50 行系统日志,通常能找到报错原因。

5. 磁盘、网络与软件安装:把生产环境管起来

等你能熟练操作文件、进程和用户之后,接下来要面对的是“生产环境”级别的管理问题——磁盘满了、网络不通、软件装不上。这一节把这三类高频问题串起来,每类给一套可复用的排查链路。

5.1 磁盘空间:df、du、lsblk 的排查链路

我接到过太多次“服务器磁盘满了”的通知,处理顺序基本是固定的。

首先用 df -h 看整体情况,它显示每个文件系统的容量、已用、可用和挂载点,-h 用 G/M 单位显示,直观很多。如果某个挂载点(比如 / 或 /data)使用率到了 100%,进入下一步。

然后定位大文件,用 du。我常用的套路是:

bash复制du -sh *                  # 当前目录下所有子目录占用的总大小
du -h --max-depth=1 /data | sort -hr    # 深入一层看谁最占地方

du -sh * 会列出一堆目录和大小,一眼就能看到哪个目录是“元凶”,再逐级深入。如果发现日志文件特别大,可以直接用 truncate -s 0 日志路径 把日志文件清空,而不是用 rm 删掉,因为某些进程会一直持有文件句柄,直接删除后空间并不会立刻释放,而且需要重启进程才能重新写日志。

这里有个和 df 不一致的经典案例:df -h 显示磁盘满了,但 du -sh * 加起来总大小远远对不上。这种情况基本是有文件被删除后,进程仍然占用着句柄。用 lsof | grep deleted 找到残留的进程,重启它,空间就正常了。

lsblk 是查看块设备的命令,它比 fdisk 更清晰,直接以树状显示磁盘和分区,适合在挂载新硬盘、确认设备名(比如 /dev/sda、/dev/nvme0n1)时使用。

5.2 网络连接:ssh、scp、curl、wget 与端口查看

远程管理服务器靠 ssh,最基本的登录命令:

bash复制ssh 用户名@服务器IP -p 端口号

如果端口是默认的 22,可以不写 -p。配置免密登录最简单的方式是执行 ssh-copy-id 用户名@服务器IP,它会自动把你的公钥追加到服务器的 authorized_keys,之后登录就不需要再输密码了。

跨服务器传文件用 scp。传单个文件:

bash复制scp 本地文件 用户名@服务器IP:/目标/路径/

传整个目录加 -r。大文件传输时如果网络不稳定,建议改用 rsync,它支持断点续传,比 scp 对网络抖动更友好。比如:

bash复制rsync -avP 本地文件 用户名@服务器IP:/目标/路径/

-P 表示显示进度并支持断点续传,-a 是归档模式保留属性,-v 显示详细过程。rsync 命令参数我记不住,但每次用到都直接 --help 或查资料,完全不影响使用。

日常排查网络,ping 测连通性(注意它测的是 ICMP 协议,某些云服务器会禁 ping,不通不代表服务不可用);curl 和 wget 测 HTTP 服务。curl -I 域名 可以只看响应头,确认服务是否正常返回 200;curl -v 地址 可以看完整的请求和响应过程,排查接口报错时非常有用。wget URL 是下载文件的利器,支持断点续传(-c)和递归镜像网站(-r),日常下载软件包、备份数据都靠它。

查看端口占用情况,你先用 ss -ltnp 看本机监听了哪些端口,-t 表示 TCP,-l 表示 listen 状态,-n 不解析服务名,-p 显示占用进程。如果只想看某个端口被谁占着,可以加 grep 过滤:

bash复制ss -ltnp | grep :8080

5.3 软件安装:apt/yum/dnf 与服务注册

不同发行版的软件包管理命令大同小异,Debian/Ubuntu 系用 apt,CentOS/RHEL 系老版本用 yum,新版本转向了 dnf,但 yum 命令兼容了很大一部分。核心就三板斧:

bash复制apt update                    # 先更新软件源索引
apt install 软件名             # 安装
apt remove 软件名              # 卸载

yum install、dnf install 对应旧版和新型红帽系,逻辑完全一样。离线环境下安装软件,则需要下载 .deb 或 .rpm 包,用 dpkg -i 包名.deb 或 rpm -ivh 包名.rpm 来装。依赖缺失是离线安装最大的坑,遇到报错时通常还需要手动下载对应依赖包。

安装完软件后,如果需要作为服务常驻运行,systemd 是目前的主流方案。服务的单元文件放在 /etc/systemd/system/ 目录,一个最简单的服务配置大概长这样:

ini复制[Unit]
Description=My App Service
After=network.target

[Service]
ExecStart=/usr/local/bin/myapp
Restart=always
User=myapp

[Install]
WantedBy=multi-user.target

写完配置后执行 systemctl daemon-reload 重新加载,然后就能用 systemctl start myapp 和 systemctl enable myapp 把它跑起来并设置开机自启。这个环节我最初总忘 daemon-reload,每次改完配置启动都报“Unit not found”,后来才意识到是新配置没有被 systemd 重新读取。这也是一个典型的不看文档就会踩的坑。

6. Git 常用指令:开发环境里绕不开的那几条

虽然这篇博文的标题是 Linux 指令,但我还是把 Git 单拎出来讲,原因有二:一是热搜词里“git 常用指令”出现频率非常高,二是 90% 的 Linux 使用场景里,Git 必不可少。而且 Git 大量使用了 Linux 的哲学——本地操作小步快跑、命令组合灵活,熟练使用 Git 会让你对“命令行工作流”的理解上一个台阶。

6.1 日常工作流:status、add、commit、push、pull

Git 平时用得最多的“提交-推送”流程是固定的四连:

bash复制git status              # 看当前工作区状态,红字是改过的文件,绿字是已暂存文件
git add .               # 把当前目录下所有改动加入暂存区
git commit -m "提交说明" # 把暂存区内容落成一个版本
git push                # 推送到远程仓库

git status 是安全检查,每次提交前都先看一遍,防止不小心把不该提交的文件(比如带密码的配置文件、编译产物)卷进去。git add . 方便,但也容易误加东西,如果你只想提交指定的几个文件,直接 git add 文件名1 文件名2 更精确。

拉取远程更新时,我个人的习惯是 git pull --rebase,意思是把本地未推送的提交“变基”到远程最新提交之上,这样提交历史是线性的,不会产生一堆“Merge branch”的合并节点。对新手来说,这个可能稍显进阶,但养成这个习惯以后看 log 会清爽很多。

6.2 分支与回滚:branch、checkout、merge、reset

分支是多人协作的基础。最常用的几条:

bash复制git branch              # 查看本地分支
git branch 新分支名      # 新建分支
git checkout -b 新分支名 # 新建分支并切换过去
git checkout 分支名      # 切换分支
git merge 分支名         # 把某分支合并到当前分支

checkout -b 是我建新分支时的默认动作,一步到位。合并前建议先切到目标分支(比如 main),再执行 merge。

回滚是一个需要相当小心的话题。如果你只是想把某个文件恢复到上一次提交的状态:

bash复制git checkout -- 文件名

如果你想把最近的几次提交整个撤掉,git reset 有两个常用模式:

bash复制git reset --soft HEAD~1    # 撤销最近一次提交,但保留改动到暂存区
git reset --hard HEAD~1    # 撤销最近一次提交,并且丢弃所有改动

--hard 很危险,它会把工作区、暂存区、提交历史全部回退,被丢弃的改动几乎无法找回。我在执行这条命令前,会先 git log --oneline 确认当前所在位置,并把重要的改动先 git stash 暂存起来或推送到远程分支,再做 hard reset。如果你不确定,宁可用 --soft 保留改动,不行再手动改回来。

另外建议项目里加一份 .gitignore 文件,把编译产物、IDE 配置、日志、虚拟环境目录等不需要跟踪的内容写进去,否则 git status 会天天被一堆无关文件刷屏,早晚有一天你会因为视觉疲劳而漏掉真正重要的文件。

7. 整理还在继续:我的笔记排布与补充计划

这篇汇总目前覆盖了文件目录、文本处理、用户权限、进程服务、磁盘网络、软件安装和 Git 这七个大块,已经是我日常工作中最高频的场景了。但“正在整理”这个标题不是随便写的,因为 Linux 的指令体系太庞大了,新工具、新发行版、新需求永远都在冒出来。我自己整理时,给每类指令都留了一张“容器”,后面遇到新命令就按同样的框架塞进去。

我目前的笔记排布思路是这样的,直接用表格展示:

指令分类 覆盖场景 整理进度 下一步补充方向
文件与目录 基础操作、查找、批量管理 基本完成 补充 acl 权限、硬链接软链接的实际案例
文本处理 日志排查、配置修改、数据抽取 基本完成 补充 awk 的循环与条件判断用法
用户与权限 账号管理、权限位、提权策略 基本完成 补充 sudoers 配置的详细规则
进程与服务 资源占用、服务托管、日志检查 基本完成 补充 systemd 定时器 timer 的用法
磁盘与网络 容量排查、远程传输、网络诊断 还在补充 补充 tcpdump 抓包的常用过滤规则
Git 日常提交、分支管理、错误恢复 基本完成 补充 stash 和 cherry-pick 的进阶场景

面试场景是很多人关注的重点,我粗略梳理了一下,Linux 相关的面试题基本绕不开这三类:第一类是基础命令的查看,比如“如何查看 CPU 占用最高的进程”;第二类是权限与用户问题,比如“如何使用普通用户执行管理员操作”;第三类是服务与网络排障,比如“服务起不来一般怎么排查”。你会发现,只要把上面这七个章节的“必会”标签内容都吃透,这三类问题都有清晰的答题路径。

最后再分享一个我自己的小习惯:整理命令时不过度追求“一次整理到位”,而是边用边补。我会在 .bashrc 里给高频命令设置一些顺手别名,比如 alias ll='ls -ali'、alias grep='grep --color=auto',这属于个人偏好,但确实能提升日常操作效率。遇到暂时用不上的指令,我不急着记,而是先留一个“了解”级别的标签,等到真正需要它解决现场问题时,再去翻手册、跑实验,然后把它升级到“高频”并且补充真实的踩坑备注。Linux 指令不是背出来的,是试出来的,这个过程中的每一条命令、每一次报错,都比一份完美的命令大全更值钱。这篇汇总我会持续维护,后续遇到值得记录的指令和案例,再回来继续补充。

内容推荐

算力革命如何重塑人力资源与就业市场
算力革命 · 人力资源 · 就业市场
云计算和人工智能技术的快速发展正在引发一场深刻的算力革命。从技术原理看,分布式计算框架和深度学习模型突破使得机器处理复杂任务的效率大幅提升。这种技术演进带来了显著的经济价值——企业发现算力投资的ROI已超越传统人力成本。在仓储物流、客户服务等典型应用场景中,AI系统已能替代50%以上基础工作。以亚马逊为代表的科技巨头正在将千亿级资金从人力成本转向算力基础设施,这种资本转移趋势预示着就业市场的结构性变革。面对算力吃掉人力的新常态,企业需要重构人机协作模式,而从业者则需向AI训练、数据标注等新兴领域转型。
企业微信消息自动化:零代码实现高效办公
企业微信 · 消息自动化 · 零代码
企业微信作为国内主流的企业沟通平台,其消息自动化功能在数字化办公中扮演着重要角色。通过分布式任务队列和定时触发机制,可以实现精准的消息推送,显著提升工作效率。技术实现上,采用JWT令牌认证和OAuth2.0授权确保安全性,同时支持图文和图片消息的模块化编排。这种方案尤其适合中小企业,无需开发团队即可通过零代码工具如连趣云实现自动化,节省大量人力成本。典型应用场景包括行政通知、HR人事管理和市场运营推送,为企业微信生态下的办公自动化提供了实用解决方案。
性能测试自动化框架设计与实战优化
性能测试 · 自动化框架 · Gatling
性能测试是软件质量保障的关键环节,通过模拟真实用户行为验证系统在高负载下的稳定性。现代性能测试框架采用分层架构设计,结合协议适配、虚拟用户调度等核心技术,实现从脚本开发到结果分析的全流程自动化。在分布式场景下,通过智能流量建模和Gossip协议协调,可有效提升测试效率和准确性。典型应用包括电商大促系统压测、金融支付网关验证等场景,其中参数化数据优化和三级容错机制能显著降低测试周期。本文以Gatling和k6等工具为例,详解如何平衡脚本开发效率与执行稳定性,帮助团队构建可持续演进的性能测试体系。
OpenClaw混合部署指南:云端AI与边缘计算实战
混合部署 · 边缘计算 · OpenClaw
混合计算架构通过结合云端AI处理能力和本地边缘计算的低延迟特性,正在重塑企业自动化系统。其核心原理是将计算密集型任务卸载到云端,同时保持对硬件设备的实时控制。这种架构特别适用于需要快速响应的工业自动化场景,如机器人控制和实时质检。OpenClaw平台通过Skills模块化设计,使开发者能灵活组合AI能力与硬件控制逻辑。典型应用包括仓储物流的AGV调度和产线智能质检,其中云端负责视觉识别等复杂计算,边缘端处理设备控制指令。该方案显著降低了系统延迟并提高了资源利用率。
C语言实现栈与队列:数据结构基础与优化技巧
栈 · 队列 · 数据结构
栈和队列是计算机科学中最基础的线性数据结构,分别遵循LIFO(后进先出)和FIFO(先进先出)原则。栈在函数调用、表达式求值等场景中表现优异,而队列则广泛应用于任务调度和消息传递系统。通过C语言的动态内存管理和结构体设计,可以高效实现这两种数据结构。本文以栈为例,详细解析了动态扩容、内存优化和多线程安全等关键技术点,并对比了栈与队列在性能和应用场景上的差异。这些底层实现技巧对系统性能优化和内存管理至关重要,特别是在嵌入式开发和高性能计算领域。
大数据性能监控实战:指标体系与架构设计
大数据监控 · 性能指标 · 时序数据库
大数据性能监控是保障分布式系统稳定运行的关键技术,其核心在于实时捕获系统运行状态。通过时序数据库存储海量监控指标,结合流处理框架实现秒级响应。典型技术方案如Prometheus+VictoriaMetrics组合,可有效应对TB级监控数据的存储查询需求。在金融风控、实时推荐等场景中,性能监控能提前发现CPU抢占、数据倾斜等问题,避免百万级损失。本文通过Kafka消费延迟优化等案例,详解如何构建兼顾实时性与准确性的监控体系,特别适合处理Spark数据倾斜等典型大数据挑战。
Hadoop+Spark+Hive构建高效租房推荐系统实战
Hadoop · Spark · Hive
分布式计算框架是处理海量数据的核心技术,通过将计算任务分配到多台机器并行执行,显著提升数据处理效率。以Hadoop、Spark为代表的大数据技术栈,结合Hive的数据仓库能力,能够有效解决传统推荐系统面临的性能瓶颈问题。在租房推荐场景中,通过ALS协同过滤算法优化和Redis缓存加速,系统实现了从小时级到分钟级的性能飞跃。典型应用还包括冷启动准确率提升和多模态内容推荐,这些技术方案对电商、内容平台等需要处理用户-物品交互矩阵的领域具有重要参考价值。
LeetCode 347题:前K个高频元素解法详解
LeetCode · 前K个高频元素 · 哈希表
哈希表和堆排序是解决Top K问题的两大核心技术。哈希表用于快速统计元素频率,时间复杂度为O(n);而堆排序则能高效维护前K个元素,将时间复杂度优化至O(n log k)。在实际工程中,这类算法广泛应用于热门排行榜、推荐系统等场景。本文以LeetCode 347题为例,详细比较暴力排序、最小堆和快速选择三种解法,特别适合准备算法面试的开发者学习。掌握这些基础算法思想,能够有效解决大数据处理中的高频元素统计问题。
云计算与AI如何重构企业人力成本结构
云计算 · 人工智能 · 人力成本
云计算和人工智能技术正在深刻改变企业的成本结构。云原生架构通过自动化扩缩容、Serverless计算等关键技术,显著降低IT运维人力需求;机器学习模型则逐步替代传统人工服务场景,如客服领域的意图识别准确率已达91%。这些技术突破使得算力成本与人力成本的比例发生根本性逆转,AWS案例显示每1美元算力投入可替代7美元人力成本。在零售、制造、金融等行业,企业正在通过ERP迁移、AI客服系统等实践,重构组织架构和业务流程,实现降本增效。未来三年,财务自动化、IT运维和人力资源等领域将迎来更深度的技术变革。
游戏创业生存指南:破解行业困境的三大核心资产
游戏创业 · 用户资产 · 组织能力
在游戏开发领域,构建可持续的商业模式需要从底层技术架构到运营策略的系统性思考。游戏安全防护作为基础技术能力,涉及代码混淆、资源加密等反破解手段,而数据驱动的用户行为分析则是精细化运营的核心。随着AI技术革新,自动化工具正在改变游戏开发流程,从美术素材生成到智能客服都带来效率跃升。这些技术演进推动行业从流量竞争转向价值竞争,开发者需要建立用户资产沉淀、组织能力迁移和实战方法论三大核心优势。特别是在手游安全领域,分层防御体系和风控模型能有效应对盗版和恶意退款等灰产挑战,为产品商业化保驾护航。
金融支付系统架构设计与技术选型实战
金融支付系统 · 微服务架构 · Spring Boot
金融支付系统作为典型的高并发强一致性系统,其架构设计需要兼顾性能、安全与合规性要求。从技术实现层面看,微服务架构通过业务解耦提升系统弹性,其中Spring Boot的自动配置特性可加速迭代周期,而JWT的安全增强方案能有效防范令牌滥用风险。在数据持久化方面,MyBatis凭借其SQL可控性成为金融级ORM的首选,配合Gradle的灵活依赖管理实现精准版本控制。支付系统的性能优化需全链路考虑,包括G1GC调优降低STW停顿、多级缓存设计保障数据一致性,以及令牌桶+漏桶混合算法实现智能限流。这些技术在跨境支付、实时清算等场景中已得到充分验证,为金融科技企业构建稳定可靠的支付基础设施提供了最佳实践。
EtherCAT协议数据链路层与实时性优化实践
EtherCAT · 实时以太网 · 数据链路层
工业以太网协议通过硬件加速和实时处理机制革新了传统控制系统的通信架构。EtherCAT作为典型代表,其数据链路层采用独特的飞读飞写(On-the-fly processing)技术,借助专用ASIC芯片实现微秒级延迟,相比PROFIBUS等轮询式总线效率提升显著。该协议通过分布式时钟同步和帧优化封装,在半导体设备、包装机械等场景中实现多轴精准控制。工程师需掌握FMMU地址映射、CRC计算模式等关键技术点,以解决通信抖动、带宽利用率等实际问题。随着工业4.0推进,理解EtherCAT的实时性保障机制对构建高可靠性自动化系统愈发重要。
自动化测试模型解析:从线性脚本到混合驱动实战
自动化测试 · 测试模型 · 模块化设计
自动化测试是软件工程中提升质量效率的核心技术,其本质是通过脚本模拟用户操作实现快速验证。测试模型作为框架设计的理论基础,决定了脚本组织、数据管理和异常处理的实现方式。常见的线性脚本、模块化驱动、数据驱动和关键字驱动模型各有其技术特点,模块化设计通过分层抽象提升复用性,数据驱动实现脚本与测试数据解耦,而关键字驱动则降低了自动化测试的使用门槛。在DevOps和持续测试场景下,合理的模型选择能显著降低维护成本,某金融项目实测显示混合驱动架构可使维护效率提升60%。随着AI技术发展,自愈性测试和智能生成正成为自动化测试的新趋势。
OpenClaw V2026.3.11:AI模型管理与部署最佳实践
OpenClaw · 模型管理 · 版本控制
模型管理是现代机器学习工程中的核心环节,主要解决版本控制、依赖管理和部署标准化等问题。其技术原理类似于软件工程中的容器化思想,通过将模型及其运行环境打包成可版本化的单元,确保推理一致性。OpenClaw作为专业模型管理框架,采用三层版本控制结构和改进的SAT依赖解析算法,能有效处理GPU驱动兼容性等复杂场景。在工程实践中,该框架通过精简CLI指令集和自动化部署流水线,使模型生命周期管理效率提升40%以上,特别适用于需要频繁迭代的计算机视觉和NLP模型部署场景。
跨平台开发中CRLF与LF换行符问题的终极解决方案
跨平台开发 · 换行符转换 · CRLF
文本文件换行符差异是跨平台开发中的常见问题,Windows使用CRLF(\r\n)而Linux使用LF(\n)。这种编码差异会导致脚本执行错误、配置文件解析异常等问题。通过sed命令可以高效实现CRLF到LF的批量转换,结合find命令能递归处理目录文件。在工程实践中,还需考虑二进制文件保护、操作备份等安全措施。该方案可集成到Git工作流和CI/CD管道中,配合.editorconfig等工具实现开发环境标准化。对于大型项目,使用GNU parallel并行处理和mmap内存映射能显著提升转换效率。
基于欧姆龙PLC与MCGS触摸屏的四层电梯控制系统设计
PLC控制 · 电梯系统 · 欧姆龙CP1H
PLC(可编程逻辑控制器)作为工业自动化领域的核心控制设备,通过逻辑编程实现设备控制与流程自动化。其工作原理基于输入信号采集、程序逻辑运算和输出信号控制,具有高可靠性和实时性特点。在电梯控制系统中,PLC需要处理楼层呼叫、运行方向判断、安全保护等多任务协同,这对程序结构和算法设计提出了较高要求。结合MCGS触摸屏的人机交互功能,可以构建完整的电梯监控系统。本方案采用欧姆龙CP1H PLC实现电梯状态机控制,通过Modbus RTU协议与触摸屏通讯,重点解决了顺向截停算法、防夹保护等关键技术问题,为工业自动化教学和工程实践提供了典型范例。
MySQL 8.2读写分离与InnoDB ReplicaSet实战指南
MySQL读写分离 · InnoDB ReplicaSet · MySQL Router
数据库读写分离是提升系统性能的经典架构模式,其核心原理是将写操作集中到主节点,读操作分散到多个从节点。通过MySQL Router的智能路由机制,开发者无需修改应用代码即可实现透明的读写分离。MySQL 8.2版本深度集成了InnoDB ReplicaSet架构,结合GTID复制和自动故障转移,为分布式数据库提供了开箱即用的高可用解决方案。在电商、CMS等典型应用场景中,该技术能有效应对高并发查询压力,同时通过metadata-cache机制确保拓扑变化的实时感知。最佳实践包括合理配置连接池、监控复制延迟,以及根据业务特点选择round-robin或权重路由等策略。
SQL连接操作详解:内连接与外连接实战指南
SQL连接 · 内连接 · 外连接
SQL连接(Join)是数据库查询中的核心操作,用于组合多个表中的数据。从原理上看,连接操作通过匹配表间的关联字段实现数据整合,主要分为内连接(INNER JOIN)和外连接(OUTER JOIN)两大类。内连接只返回匹配的行,适合需要精确关联数据的场景;外连接则保留未匹配的行,常用于保留主表完整信息的查询。在电商系统等实际应用中,连接操作能高效实现用户订单关联查询、产品库存统计等功能。通过合理使用索引和优化连接顺序,可以显著提升查询性能。掌握连接操作对数据库开发和SQL优化至关重要,特别是在处理MySQL等关系型数据库时。
基于Flink的实时淘客订单处理系统架构与优化
实时计算 · Flink · 淘客订单
实时数据处理是电商生态中的关键技术,通过流式计算框架如Apache Flink可以实现毫秒级延迟的事件处理。其核心原理是将持续产生的数据流分割成有界窗口进行分布式计算,配合Kafka等消息队列实现高吞吐。这种技术方案在订单返利、实时风控等场景具有显著价值,能有效提升用户体验和业务转化率。以淘客订单系统为例,通过Flink的状态管理和Async I/O等特性,既能保证实时性又可实现精确一次的语义处理。系统采用Lambda架构设计,结合Redis缓存优化和RocksDB状态后端,每日稳定处理80万+订单事件,端到端延迟控制在3秒内,显著提升了用户返利体验和平台运营效率。
EF Core全局查询筛选器与并发控制实战解析
EF Core · 全局查询筛选器 · 并发控制
在数据库访问层设计中,查询筛选和并发控制是两大核心技术。全局查询筛选器通过LINQ表达式树实现自动数据过滤,其原理是将条件注入SQL语句,避免内存过滤开销,适用于多租户隔离和软删除等场景。并发控制则分为乐观锁(基于行版本检测)和悲观锁(通过数据库锁机制),能有效解决数据竞争问题。EF Core整合这两种技术后,既能实现安全的数据隔离,又能保证并发操作的正确性。特别是在企业级应用中,结合索引优化和合理的架构设计,可以构建出高性能、高可用的数据访问层。本文通过EF Core的Global Query Filters和并发令牌等热词,深入解析这些技术在数据访问领域的工程实践。
已经到底了哦
精选内容
热门内容
最新内容
测试用例体系构建与价值实现全解析
测试用例是软件质量保障的核心组件,通过系统化的设计方法构建缺陷预防网络。其技术原理涵盖等价类划分、边界值分析等黑盒测试方法,以及状态迁移、用户旅程映射等场景建模技术。在工程实践中,分层测试策略(单元/接口/UI测试)与自动化相结合,能显著提升回归测试效率。典型的应用场景包括需求变更影响分析、持续交付流水线验证等。本文以电商系统为例,展示如何通过测试用例预防资损风险,其中ATDD(验收测试驱动开发)和分层设计方法尤为关键,这些方法曾帮助团队将线上事故降低63%。
C语言实现栈与队列:数据结构底层原理与实践
栈与队列是计算机科学中最基础的线性数据结构,分别遵循LIFO(后进先出)和FIFO(先进先出)原则。栈通过push/pop操作实现数据存取,常用于函数调用、表达式求值等场景;队列则通过enqueue/dequeue操作维护顺序处理,广泛应用于任务调度、消息队列等系统。在C语言中,通过数组或链表实现这些数据结构能深入理解内存管理和指针操作。静态数组实现简单高效,而动态内存分配版本则支持灵活扩容。掌握这些底层实现不仅有助于算法优化,还能为操作系统、编译器等高阶领域打下坚实基础。本文以括号匹配和打印任务队列为例,展示了栈与队列的典型工程应用。
WebMCP:AI驱动的浏览器自动化框架核心技术解析
浏览器自动化技术通过模拟用户操作实现网页交互,其核心在于理解DOM结构与视觉元素。传统方案如Selenium依赖精确选择器,面临网页改版时维护成本高昂。WebMCP创新性地引入语义化操作层,将点击、输入等行为抽象为高级指令,结合CNN视觉识别与NLP文本理解实现多模态交互。该框架采用强化学习引擎动态调整策略,显著提升对动态内容的适应能力,在电商监控、无障碍服务等场景展现优势。作为AI Agent与浏览器交互的新范式,其低代码特性能将自动化测试脚本编写效率提升3倍以上。
AIoT智慧生活解决方案:分布式AI与绿色能源管理
AIoT(人工智能物联网)作为智能家居的核心技术架构,通过分布式计算实现设备协同与数据融合。其技术原理在于边缘节点与云端算力的动态分配,结合多模态交互提升用户体验。在工程实践中,分布式AI中控系统采用'1+8+N'架构,配合动态负载均衡算法,可显著降低系统延迟。绿色能源管理系统则基于LSTM神经网络预测用电曲线,实现光伏与市电的智能调度。这些技术在智慧家居场景中体现为无感化健康监护、自适应光环境等创新应用,其中创维集团的'星海'AI芯片与碳足迹认证产品成为行业标杆。
LeetCode 26题解析:快慢双指针实现数组去重
数组去重是算法中的基础问题,其核心在于高效处理重复元素。快慢双指针技术通过维护两个指针(慢指针标记唯一元素位置,快指针遍历数组),实现O(1)空间复杂度的原地修改。这种方法不仅满足面试中对空间效率的严格要求,也适用于实际工程场景如数据库查询优化和日志处理。结合Python实现,本文详解了边界条件处理、优化技巧(如提前终止和赋值优化)以及复杂度分析。对于需要掌握基础算法和面试技巧的开发者,理解双指针在有序数组中的应用尤为重要。
LeetCode 238题:除自身以外数组乘积的解法与优化
数组乘积问题是算法中的经典问题,核心在于如何高效计算每个元素除自身外的乘积。通过前后缀分解技术,可以将问题拆解为计算每个元素的左侧乘积和右侧乘积。这种方法不仅避免了除法运算带来的边界问题,还能通过双指针技术将空间复杂度优化到O(1)。在实际工程中,类似思想广泛应用于滑动窗口统计、图像处理等领域。本文以LeetCode 238题为例,详细解析了基础解法、空间优化技巧以及常见错误处理,特别适合准备技术面试的开发者参考学习。
回归分析基础与Python实战:从原理到应用
回归分析是研究变量间关系的核心统计方法,通过建立数学模型描述因变量与自变量的关系。其核心原理是最小二乘法(OLS),通过最小化残差平方和求解参数。在机器学习领域,线性回归作为基础算法,具有模型可解释性强、计算效率高的技术价值,广泛应用于房价预测、销量预估等连续值预测场景。本文以Python的scikit-learn库为例,演示如何实现数据预处理、模型训练与评估(如MSE、R²指标),并针对异常值处理、特征工程等实际问题提供解决方案。通过完整案例展示从数据探索到模型部署的全流程,帮助读者掌握这一数据分析的基础工具。
Linux网络安全:Netfilter架构与实战应用解析
Netfilter是Linux内核中的网络数据包处理框架,通过钩子点机制实现防火墙、NAT等核心功能。其模块化设计允许在不修改协议栈的情况下干预数据包流向,为网络安全提供基础支撑。理解五钩子点(PRE_ROUTING、LOCAL_IN等)和表链协作模型(raw/mangle/nat/filter表)是掌握Linux网络配置的关键。在工程实践中,Netfilter广泛应用于访问控制、流量整形、负载均衡等场景,配合连接跟踪机制可实现高性能状态防火墙。通过合理配置filter表规则和nat表转换,能有效提升网络安全性与管理效率。
粒子滤波在电池寿命预测中的应用与实践
粒子滤波(Particle Filter)是一种基于蒙特卡洛方法的非线性状态估计技术,特别适用于处理非高斯噪声环境下的预测问题。其核心原理是通过大量随机采样的粒子来近似表示概率分布,随着新观测数据的到来不断调整粒子权重,最终收敛到真实状态。在工业设备健康管理领域,电池剩余使用寿命(RUL)预测是关键技术之一,广泛应用于电动汽车电池管理和航空航天电源系统。通过结合粒子滤波算法,可以有效处理电池衰减这类非线性问题,提升预测精度。本文以电池寿命预测为例,详细介绍了数据预处理、粒子滤波算法实现及工程实践中的优化技巧,为相关领域的研究与开发提供参考。
双指针算法实现有序数组去重与LeetCode题解
双指针算法是处理数组和链表问题的核心技巧之一,通过快慢指针的协同工作,可以在O(n)时间复杂度和O(1)空间复杂度下完成数据操作。其原理是通过一个指针遍历数据,另一个指针标记有效位置,实现数据的原地修改。这种技术在数据处理、机器学习特征工程等领域有广泛应用,特别是在处理有序数据去重、日志清洗等场景表现优异。以LeetCode经典题目为例,快慢指针可以高效解决有序数组去重问题,通过元素覆盖而非删除来避免数组移位,这种优化思路对提升大数据量处理性能至关重要。
已经到底了哦