ARTICLE DETAIL

资讯详情

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

Linux命令实战指南:从文件操作到系统排查的进阶路径

Linux命令实战指南:从文件操作到系统排查的进阶路径 干了这么多年运维和开发每天打交道最多的就是 Linux 终端。网上关于 Linux 常用命令的文章多如牛毛但大多数要么是命令字典式的罗列要么是抄来抄去的 man 手册翻译真正能让人看完就上手、遇到问题知道怎么排查的内容少之又少。这篇博文我不打算写成什么“Linux 常用命令大全”那些你随手一搜就能找到。我把自己这些年实际用过、踩过坑、面试过别人也被人面试过的一些命令和思路整理出来围绕“文件操作、系统排查、文本处理、权限管理、进程网络、软件安装、以及 Docker/Git/数据库等实际场景”展开既给刚入行的朋友一条清晰的进阶路径也给有经验的同行一些可复用的排查套路。内容会尽量说人话命令给全参数给明白避坑点直接标出来。1. 先把手头最常用的文件与目录操作练熟这部分是 Linux 的“入门基本功”也是日常敲得最多的命令。别小看它们很多所谓的老手其实对cp、mv、rm的细节也是一知半解真到了生产环境操作就容易出事。1.1 ls、cd、pwd 这几个命令的隐藏技巧ls大家都会用但真正高效的人通常会直接记几个组合ls -l # 查看详细信息 ls -lh # 人类可读的文件大小比如 1.5G、234M比一堆字节数直观得多 ls -lt # 按修改时间排序最新修改的在最上面排障时找刚刚动过的文件非常好用 ls -la # 显示隐藏文件以 . 开头的配置文件、.git 目录就靠这个看我自己的习惯是直接在~/.bashrc里加一个别名alias llls -lht这样每次敲ll就能看到按时间倒序的人类可读列表效率高很多。cd除了常见的路径跳转也有几个快捷技巧cd -可以回到上一次所在的目录这个在两条路径之间来回切换时极其实用cd ~回当前用户的家目录如果你经常在两个深层目录之间切换可以试试pushd和popd虽然有点老派但比反复输入长路径省事得多。pwd只有遇到符号链接时会有个小坑。你想拿到“物理路径”而不是带link字样的逻辑路径时用pwd -P。脚本里判断当前目录、拼接路径时这招能避免不少莫名其妙的问题。1.2 cp、mv、rm 的实战姿势与防误删策略cp复制文件最常用的就是-r递归复制目录配合-a可以保留权限、属主、时间戳等元信息。备份配置文件、迁移数据目录时请务必用cp -a而不是cp -r不然复制过去的文件权限全变了服务可能直接起不来。mv移动文件时有个很容易被忽略的细节跨文件系统移动时它其实是“先复制再删除”耗时和cp差不多同一文件系统内移动才是真正改个指针瞬间完成。所以大文件移动时如果发现很慢先看看源和目标是不是同一个挂载盘。另外mv也有-u参数只在源文件比目标新时才覆盖做增量同步时有点用处。说到rm这可能是 Linux 世界里最需要敬畏的命令。rm -rf误删的案例每年都有无数起我身边就有同事把项目目录删了然后对着黑屏终端发呆的经历。我的建议是尽量多使用rm -ri来交互式删除系统会逐个文件问你确认虽然慢但安全。在~/.bashrc里给rm设置别名让它默认走回收站逻辑或者至少加上-i参数提醒。生产环境的服务器建议把rm替换成trash-cli之类带回收站机制的工具误删了还能救回来。rm命令我也强烈建议你别去试着执行rm -rf /。面试的时候有些公司把这当成安全意识测试题实际环境里这是灾难性的操作。如果非要在脚本里清空目录请谨慎写出完整路径并且用变量多检查一眼再动手。1.3 查找文件的利器 find 与 which、locate文件找不到了第一反应应该是find。它的基础用法是find /data/logs -name *.log -type f -mtime -3这条命令的意思是在/data/logs下找扩展名为.log的普通文件并且修改时间是最近3天以内。-mtime后面跟负数代表“以内”正数代表“恰好多少天之前”。查大文件也常用find / -xdev -type f -size 500M 2/dev/null-xdev的意思是不跨文件系统查找不然你会把/proc、/sys这些虚拟目录里的东西也扫一遍又慢又没意义。想找目录用-type d找符号链接用-type l。which用来定位一个可执行命令所在路径比如which python3。locate是基于数据库的快速查找速度很快但数据不是实时的新创建的文件经常搜不到需要先执行updatedb更新索引。日常定位命令路径用which做深度文件搜索用find别把顺序弄反。2. 系统状态查看别人看半天你几秒定位瓶颈很多新手拿到一台服务器不知道从哪里下手看系统状况。其实 Linux 自带的几个状态命令如果组合得当完全可以在两分钟之内判断出 CPU、内存、磁盘、负载的大致瓶颈在哪里。2.1 top 与 freeCPU 和内存瓶颈的判断套路top是查看系统整体负载最直接的工具。打开后注意看第一行的load average这是 1 分钟、5 分钟、15 分钟的平均负载。判断负载是否过高不能只看这个数字要结合 CPU 核心数来看。负载长期高于核心数说明任务排队了系统确实繁忙如果核心数很多而负载只有 1-2那基本没有压力。top进入交互界面后有几个常用按键按1展开每个 CPU 核心的使用率按P按 CPU 占用排序按M按内存占用排序。定位到可疑进程后记下 PID再用下面的命令看它的线程情况top -H -p PID这个命令能显示指定进程内部各线程的 CPU 使用情况排查 Java、Python 等应用内部的线程卡死时非常有价值。free -h是看内存缓存的首选。输出里的buff/cache经常让人误以为内存不够用了其实这部分是 Linux 拿空闲内存来做的文件缓存目的是加速读写。真正的可用内存要结合available字段来看这个字段已经帮你算好了可回收的部分。如果available还很多那free的数值虽然小也完全不用紧张。free -h我见过太多新手盯着free的第三行数值大呼内存不足结果实际上系统闲得很。这是个认知误区搞清楚buff/cache之后就不会闹这种笑话了。2.2 df 与 du磁盘满没满、空间去哪了磁盘告警是运维扣款最多的事件类型之一df和du必须玩明白。df -h df -idf -h看磁盘剩余空间df -i看 inode 剩余量。很多人只知道空间满会导致写入失败不知道 inode 耗尽同样会报“No space left on device”但df -h明明显示还有几百 G。这种情况通常是目录里的小文件数量太多比如邮件队列、临时文件把 inode 耗尽了。遇到磁盘写不进去时第一件事就是同时跑这两条命令不然排查方向会完全跑偏。du用来查目录占用du -sh /var/log du -h --max-depth1 /var/log | sort -rh | head -20第一条看总大小第二条一层一层列出各个子目录的大小并排序。遇到根分区快满的情况我通常从/开始逐层 du用上面的管道命令找出最大的目录一路追踪到具体的日志或数据文件然后决定是清理还是做迁移。du -sh /* 2/dev/null | sort -rh | head -10这招在处理“磁盘满了但不知道是谁占的”时非常高效。注意2/dev/null是为了把没有权限访问的目录的报错信息丢掉避免刷屏。3. 文本处理三剑客grep、awk、sed 的实战组合日志分析、配置修改、批量处理是 Linux 日常使用中出现频率最高的场景。这三条命令如果只用过其中一两个很容易在真实场景里卡壳。我经常把它们组合起来用一套下来效率极高。3.1 grep 的进阶玩法与常见误区grep大家都会但大部分人只用了它的最简单形态。实际工作里我几乎不用裸的grep而是直接上grep -E ERROR|WARN app.log grep -rn functionName ./src --include*.java-E表示支持扩展正则可以用|匹配多个关键词。-r递归搜索目录-n显示行号--include限定文件类型。排查问题时行号实在太重要了没有行号你根本没法快速定位到代码或日志的具体位置。还有一个很实用的小技巧用grep -c统计匹配条数grep -c java.lang.OutOfMemoryError error.log但注意-c统计的是行数不是匹配次数。如果一行里出现了多次关键词它也只算一行。要精确统计次数要用grep -o配合wc -lgrep -o null pointer error.log | wc -l3.2 awk 按字段提取与汇总计算awk的价值在于处理“有结构的文本”典型场景就是日志、表格类的输出按空格或指定分隔符取字段。awk {print $1, $4} access.log awk -F, {print $2} data.csv$1是第一列$4是第四列-F指定分隔符。配合排序和去重可以快速完成 IP 访问量统计这种经典需求awk {print $1} access.log | sort | uniq -c | sort -nr | head -20这行的意思是取日志第一列IP排序去重并统计次数再按次数倒序排看前 20 名。排查 CC 攻击、异常访问时这条命令几乎就是标准答案。awk还能做条件过滤和简单的计算awk $9 500 {print $0} access.log awk {sum $10} END {print sum} access.log第一个找状态码为 500 的日志行第二个把第 10 列字段累加并输出总和。如果日志里有响应耗时字段用这类命令几秒就算出全天总耗时或平均值比导入 Excel 快得多。3.3 sed 批量替换与文本裁剪sed最常见的用途就是“原地替换文件内容”。比如把配置文件里的旧 IP 批量换成新 IPsed -i s/192\.168\.1\.10/192.168.1.20/g app.conf-i表示直接修改文件s是替换命令g是全局替换。生产环境改配置前我强烈建议先去掉-i跑一遍让屏幕输出替换后的内容确认无误再用-i真正落盘。少了这一步你很可能把原本不该替换的内容也替换掉然后一脸迷茫。sed -n 100,200p app.log截取日志文件的某一段也是常用操作-n配合p打印指定行范围。日志文件动辄几个 G直接用编辑器打开会卡死sed截取一行到几万行的范围非常丝滑。4. 权限与用户管理从被拒之门外的报错说起经常有读者跑来问我“为什么我的脚本执行报 Permission denied”“为什么我新建的用户连自己的目录都进不去”这些问题的根源是对 Linux 权限模型缺乏系统理解。这里用一小节把它讲明白。4.1 看懂 chmod 的数字与特殊权限位Linux 文件的权限分三组属主、属组、其他用户每组分别是读r4、写w2、执行x1。所以chmod 755的意思是属主可读可写可执行7属组可读可执行5其他人可读可执行5。chmod 644是文件最常见的权限属主可读写其他人只读。chmod 755 script.sh chmod 644 config.conf chmod -R 755 /data/www-R递归修改目录下所有文件但这里要特别提醒递归chmod非常危险它会无差别地修改所有文件的权限。如果你不小心把一堆本应该是 640 的私密配置改成了 755相当于把敏感文件直接暴露在所有人面前。正确的做法是只对目录递归加执行权限对文件保持只读权限可以用find /data/www -type d -exec chmod 755 {} \; find /data/www -type f -exec chmod 644 {} \;先改目录后改文件这是规范操作。4.2 chown 与 chgrp属主归属问题权限不对很多时候其实是属主不对。chown用来改所有者chgrp改所属组-R同样可以递归处理。chown -R www:www /data/www这条命令把/data/www的属主和属组都改成www用户。部署 Web 应用时最常遇到的问题就是代码是用 root 传上去的结果 Nginx 或 PHP-FPM 进程以 www 用户运行读不了 root 拥有的文件。这时把整个目录chown给运行用户就能解决。还有一个细节chown加-h可以修改符号链接本身的属主而不是它指向的目标这个平时用得少但偶尔有用。极少数情况下需要改符号链接目标属主时不加-h就是默认行为。4.3 用户创建与 sudo 授权新建用户是高频操作。核心命令就一条但很容易遗漏参数useradd -m -s /bin/bash zhangsan passwd zhangsan-m自动创建家目录-s指定登录 shell。如果漏了-m用户没有家目录登录后可能连很多基础操作都做不了还会出现奇怪的问题。passwd是设置密码。删除用户用userdel -r-r会连带删除家目录和邮件池记得谨慎使用。给普通用户提权用sudo。先visudo编辑/etc/sudoers文件常见写法zhangsan ALL(ALL) ALL zhangsan ALL(ALL) NOPASSWD: ALL第一行允许执行所有命令但需要输密码第二行免密。生产环境建议尽量用更细粒度的授权比如只允许 systemctl 管理某个服务而不是什么都能干。visudo自带语法校验千万别直接用 vim 编辑/etc/sudoers写错一行可能整个 sudo 系统直接崩溃。5. 进程管理与网络排查服务起不来、端口被占的终结思路服务器上最让人抓狂的问题通常是“服务怎么起不来了”“端口怎么被占了”。这一节把进程和网络排查的思路捋清楚以后遇到这类问题你会有固定的排查路径。5.1 进程查看、终止与特殊状态识别ps命令最常用的格式是ps aux ps -efps aux的每一列里STAT状态列值得关注。常见的状态有R运行中、S睡眠中、Z僵尸进程、D不可中断的IO等待。看到Z状态时别慌僵尸进程几乎杀不掉因为它本身已经死透了只是缺父进程来收尸。kill -9对它无效真正要做的是杀掉它的父进程让 init/systemd 接管并回收。kill -9 PID kill -15 PIDkill -15是优雅终止进程可以自己清理资源kill -9是强制杀死进程没机会处理任何收尾工作。生产环境上能先-15就先-15实在不行再上-9。很多服务异常退出后留下损坏数据就是因为一直被-9强杀没机会做持久化清理。pkill可以按进程名批量终止比如pkill -f python app.py。-f会匹配完整命令行这个很危险可能误杀到名称相似的进程使用前要先用pgrep -f确认范围。5.2 ss 与 netstat查端口、查连接、抓网络问题端口被占是本地开发时的高频问题。一条命令就能定位ss -lntp-l只看监听端口-n不做域名解析显示数字地址-t只看 TCP-p显示占用进程的 PID 和名称。嫌字段多的话用netstat -lntp也可以但新版本 Linux 更推荐ss它在 socket 数量巨大时性能优势明显。如果想知道某个端口当前有没有连接ss -tunp | grep :8080排查“端口为什么连不上”时先确认服务是否监听在正确的 IP 和端口上再用ss -ant看连接状态。SYN-SENT堆积说明目标不可达TIME_WAIT多说明频繁创建短连接CLOSE_WAIT大量存在说明程序没有正常关闭 socket。这些都是网络故障排查里最常见的信号。5.3 修改进程名称的需求与实现热搜词里有一条“linux 修改进程名称”这其实有几种不同层面的需求。如果你只是想让自己启动的进程在ps里显示成容易识别的名字可以在 shell 里用exec -a指定名称bash -c exec -a my_service python3 /opt/app/main.py如果在 C/C 程序内部想做这件事可以用prctl(PR_SET_NAME, ...)修改进程名线程名也可以用类似方式设置。有些场景是真的需要把整个进程的argv都改掉比如伪装成一个普通名字那要直接操作进程环境块比较复杂日常极少用到知道有这么回事就行。运维排障时进程名清晰可辨能省下很多猜疑的时间所以我建议启动脚本里尽量用exec -a给每个服务起一个可读性强的名字。6. 软件包管理与环境配置从安装 GCC、Python 到换镜像源Linux 新手最容易在“装软件”这一步卡壳。装 GCC 不知道怎么装装 Python 不知道怎么指定版本下载慢到怀疑人生装了搜狗输入法却打不出字。这些问题的背后其实是对软件包管理机制不熟悉。6.1 主流包管理器使用对比CentOS/RHEL 系用的是yum新版是dnfUbuntu/Debian 系用的是apt。核心逻辑都是三件事更新索引、安装、卸载。yum install -y gcc # CentOS 7 及以下 dnf install -y gcc # CentOS 8 / Fedora apt update apt install -y gcc # Ubuntu / Debian“下载 GCC 编译器”这类需求直接yum/dnf/apt安装就行完全没有必要自己去官网下载源码包编译。同样linux系统安装python也优先用包管理器apt install -y python3 python3-pip如果系统自带 Python 版本太旧满足不了需求再用源码编译或者 pyenv 这类版本管理工具千万不要手动去替换系统自带的/usr/bin/python3链接很容易把依赖 Python 的系统工具搞坏。6.2 换源的正确姿势与避坑热搜词里“debian gnu/linux 13 (trixie) 换清华源”是典型的需求。换源的核心操作是把/etc/apt/sources.list或/etc/apt/sources.list.d/下的文件里的软件源地址替换成镜像站地址。常见的国内镜像有清华、阿里云、中科大。以 Debian 为例清华源的地址形式大致是https://mirrors.tuna.tsinghua.edu.cn/debian/然后接上trixie main contrib non-free-firmware这类组件名。换完后一定要apt update这个步骤会重新拉取软件包索引如果不执行后面的安装依然会走旧源。换源时最容易踩的坑是写错发行版代号比如 Ubuntu 24.04 是 nobleDebian 13 是 trixie或者混用了不同发行版的源。前者会导致一堆 404后者可能直接把系统依赖搞乱掉。建议改之前先cp备份一份原文件。6.3 国产 Linux 生态下的软件安装注意点热搜词里“linux国产”“国产linux”出现的频率很高。国产 Linux 发行版大多基于 Debian 或 CentOS/RHEL 体系软件安装思路和原版基本一致但需要注意几点有些发行版自带的软件源里包不全需要手动添加官方仓库或者下载 deb/rpm 包内核和硬件驱动可能有一些定制安装闭源驱动前先查一下官方适配列表还有一些企业级应用只提供特定发行版的安装包不要盲目下载通用包强装。“linux 安装搜狗输入法”这类场景在国产系统上也比较常见。搜狗输入法的 Linux 版一般提供 deb 包安装后还需要安装 fcitx 输入法框架并设置环境变量让输入法框架生效。装完不生效的话大部分情况是环境变量没配上可以检查~/.xprofile或/etc/profile里有没有fcitx相关配置。这里就不展开具体配置了思路先立住遇到具体版本再查官方文档。7. 场景化命令集合Docker、Git、Redis、MySQL 等日常高频操作你可能已经发现单靠基础命令在很多真实工作场景里其实不够用。比如你是个后端开发每天都在和 Docker、Git、Redis、MySQL 打交道你是大数据方向的免不了用 HDFS你做嵌入式的需要 GDB。这里我给你整理几组最常用的“场景命令包”每一条都是我实际用过的不是从文档里抄来的。7.1 Docker 常用命令包容器化已经成为默认部署方式Docker 命令是绕不开的。docker ps -a # 查看所有容器包括已停止的 docker images # 查看本地镜像 docker exec -it 容器名 bash # 进入运行中的容器 docker logs -f 容器名 # 跟踪容器日志 docker stop 容器名 docker rm 容器名 # 停掉并删除容器 docker rmi 镜像名 # 删除镜像 docker compose up -d # 用 compose 文件一键启动服务排查容器问题时docker inspect可以查看容器的完整配置docker stats可以实时看容器资源占用。日志挂在标准输出的话docker logs --tail200比-f更好用免得刷新刷得你眼花。7.2 Git 常用命令包Git 的日常操作很多人用图形界面但命令行熟练度对于排查合并冲突、改写历史依然很有价值。git status git add -p # 分块暂存修改比 git add . 精细得多 git commit -m feat: 说明 git pull --rebase # 变基式拉取保持提交历史线性 git log --oneline --graph -20 # 图形化查看最近提交 git stash # 临时保存当前改动 git branch -a # 查看所有分支 git checkout -b feature/xxx # 新建并切换分支 git reset --hard HEAD # 放弃本地所有未提交改动慎用我见过很多人操作 Git 全靠“删了整个目录重新 clone”这在单人项目上确实能用但一旦涉及团队协作就是灾难。学会git stash和git rebase真的能救命。7.3 Redis 与 MySQL 客户端命令Redis 的日常运维命令集中在redis-cli里redis-cli ping redis-cli info memory redis-cli --scan --pattern cache:* | head -100 redis-cli -n 3 keys *user*keys命令在生产环境慎用它会导致 Redis 阻塞数据量大的时候非常危险。线上排查 key 建议用--scan加 pattern 的方式。MySQL 的命令行客户端也有一套高频操作mysql -uroot -p SHOW PROCESSLIST; # 查看当前连接和执行的 SQL SHOW ENGINE INNODB STATUS\G; # 查看 InnoDB 引擎状态 EXPLAIN SELECT ...; # 分析 SQL 执行计划排查慢查询、死锁问题时SHOW PROCESSLIST几乎是第一站。它能让你看到当前所有会话正在执行的语句、状态和耗时一眼定位到长时间运行未结束的 SQL。7.4 大数据与嵌入式场景HDFS、KVM、ADB、GDBHDFS 是大数据方向绕不开的。常用命令和 Linux 文件系统很像但要记住它和本地文件系统是两套独立命名空间。hdfs dfs -ls /data hdfs dfs -put local.txt /data/ hdfs dfs -get /data/file.txt ./ hdfs dfs -rm -r /data/old_dir hdfs dfs -du -h /dataKVM 的常用命令以virsh为主virsh list --all virsh start vm_name virsh shutdown vm_name virsh edit vm_nameADB 是安卓调试工具的常用命令其中最有价值的是日志和安装相关adb devices adb logcat -v time | grep AndroidRuntime adb install app.apk adb shell am start -n 包名/Activity名GDB 是嵌入式 C/C 开发里的“杀手锏”。最常用的是打断点、查调用栈、看变量gdb ./program break main.c:100 # 在 100 行打断点 run # 运行 bt # 打印调用栈 info locals # 查看所有局部变量 next / step # 单步执行step 会进入函数内部在嵌入式 Linux 项目里bt是排查崩溃问题的黄金命令。程序段错误后不加-g编译是没符号信息的所以生产环境要想调试方便编译时记得加-g选项。8. 常见问题排查与避坑速查手册最后这部分是“实战问答”我把这些年最常见的 Linux 运维故障和它们的排查思路整理成一张速查表。你在实际操作里遇到类似问题可以直接照着思路走。8.1 高频问题速查表现象可能原因排查命令解决方向磁盘写不进去但 df 显示有空间inode 耗尽df -i清理大量小文件文件删了但磁盘空间没释放有进程持有已删文件的句柄lsof | grep deleted重启或让进程释放该文件df 和 du 统计不一致隐藏文件、挂载点差异、已删未释放du -sh *逐层排查用 lsof 找占着句柄的进程ping 能通但 SSH 连不上防火墙拦截或 sshd 未启动systemctl status sshd、iptables -L调整防火墙规则或启动 sshdtop 里内存显示几乎用满buff/cache 被误判为已用free -h看 available无需处理除非 available 很低进程杀不掉且状态是 Z僵尸进程父进程未回收ps -o ppid -p PID处理父进程让 init 接管回收某端口一直连不上服务绑定 127.0.0.1外部没法访问ss -lntp看监听地址配置监听 0.0.0.0 或公网 IPapt 安装报 404源里写错发行版代号cat /etc/apt/sources.list改成正确的代号并apt update这张表里每一条都是真实踩过的坑特别是第二项“文件删了但空间没释放”。处理大日志文件时经常出现这种情况你rm删了日志但跑着的进程还开着文件句柄磁盘空间依然被占着。lsof | grep deleted能把这种进程揪出来找到后重启进程或者用重定向覆盖文件释放空间。8.2 排查步骤的优先级建议遇到服务器异常我一般建议按这个顺序排查先看整体负载uptime和top再看磁盘df -h和df -i然后看内存free -h最后看日志dmesg和/var/log/messages。很多时候问题根本不在应用层而在底层资源耗尽。举个例子有一次线上服务突然响应极慢我top一看 CPU 占用并不高free -h显示内存充足但df -i直接 100%。因为日志目录里小文件实在太多inode 耗尽之后所有新文件的创建都失败了服务不断报错重试最后拖垮了自己。如果一开始就从监控系统的“CPU/内存”维度去查可能两小时都定位不到根因但df -i一跑一分钟就水落石出。8.3 让命令好记又安全的小技巧最后分享几个让日常操作更顺手的小配置# ~/.bashrc 里建议加的别名 alias llls -lht alias rmrm -i alias cpcp -i alias mvmv -i alias grepgrep --colorauto alias dudu -sh alias dfdf -h历史命令相关配置export HISTTIMEFORMAT%F %T export HISTSIZE10000加上时间戳的历史记录能帮你回忆这台机器上到底执行过什么排查“谁动了我的服务器”时非常有用。HISTTIMEFORMAT这个变量我建议每个运维都设置上不然你根本不知道那行危险的rm是什么时候输进去的。按CtrlR反向搜索历史命令也是我最常用的动作之一输入几个关键字就能把以前执行过的长命令找回来比重新敲一遍高效得多。写在最后我从第一次接触 Linux 到现在踩过的坑可以写一本书。每次误删文件、每次搞错权限、每次把环境变量弄乱都是在给后面的稳定操作交学费。你现在如果还在为这些命令头疼不用担心多用几次、多踩几次坑自然就记住了。我个人的建议是不要死记硬背遇到需求先想“Linux 上能不能用一条命令解决”然后用man 命令或者tldr 命令查看用法。用多了之后你会发现Linux 命令不是一个个孤立的知识点而是围绕“文件、进程、权限、网络、日志”这几个核心概念组织的工具集理解了这些概念命令自然就在脑子里串起来了。
返回列表