简介面向刚接触 Linux 或希望补齐命令行基础的开发者、运维人员与学生这份材料以高频命令速查和可对照练习为主线帮助读者在较短时间内建立目录管理、文件处理、权限控制与进程服务的操作框架。压缩包内为 1 个 PDF 文档约 796KB内容按功能模块编排覆盖目录与文件的创建、删除、复制、移动内容查看与 vim 编辑日志定位、软连接、压缩解压、权限修改、Docker 容器操作、yum 包管理、内核参数调整以及 top 进程监控等常见场景并给出命令写法、常用参数和使用示例便于边看边练、随用随查。目前已有 6170 人学习说明其在入门梳理和日常查阅方面具有一定参考价值。读者可借助这份材料快速回顾高频命令、理解参数含义并逐步形成排查文件、权限、服务与资源占用问题的基本思路适合作为工作台旁的轻量手册也可用于面试前复习和团队新人带教。1. 先搞懂一件事Linux 命令到底是在跟谁说话很多人第一次打开终端看到一片黑底白字和一个一闪一闪的光标手放在键盘上不知道敲什么心里发慌——怕敲错、怕把东西弄坏、怕自己看不懂报错。其实 Linux 常用命令没有想象中玄它更像一套「跟机器说话」的短句你说pwd它告诉你「你现在站在哪个文件夹里」你说ls它把眼前有什么东西列给你看。这份资源就是一份按场景归好类的命令笔记从目录操作、文件操作、看日志、改配置到压缩解压、权限、进程查看、软件安装、docker 容器一条一条列清楚适合刚接触服务器、要部署项目、要翻日志找问题的新手先照着敲通再慢慢理解。2. 迈出第一步cd、ls、pwd 先把念头落到键盘上新手最怕的不是命令多而是不知道从哪条开始。我的建议是先别管权限、别管 docker、别管日志就练「我在哪、这里有什么、我要去哪、我要建个东西」这四件事。这四件事对应pwd、ls、cd、mkdir全是目录操作敲错了最多是提示「没有这个文件或目录」不会造成任何损失。等你对「当前目录」这个感觉熟了后面所有命令都好办。2.1 打开终端后的第一件事确认自己站在哪Linux 的所有路径操作都建立在一个前提上——你得知道自己的「当前工作目录」。这不是玄学就像你在文件管理器里双击进了某个文件夹后续所有操作都相对这个位置发生。终端不像图形界面能一眼看到位置所以第一步永远是问它。# 打印当前工作目录的绝对路径 pwd输出大概是/root或者/home/你的用户名。这就是你的「家目录」登录之后的默认落脚点。pwd三个字母是 print working directory 的缩写没有任何参数敲完回车就有结果。我建议你养成一个习惯每次执行删除、移动这类「有后果」的命令之前先敲一次pwd和ls确认自己没站错地方。这个动作只要两秒但能挡掉后面很多血泪经验。顺便记一个终端里敲的命令多了屏幕上堆满输出看着乱clear一下清屏光标回到最上面。它只是把显示清掉历史记录还在用方向键上翻照样能调出刚才敲过的命令。2.2 目录四件套ls、cd、mkdir 和它们的常用写法先看「这里有什么」。最常用的是ls很多人习惯敲ll那是ls -l的别名输出会多出权限、属主、大小、修改时间这些列。# 列出当前目录下的内容详细格式 ll # 列出全部内容包括以点开头的隐藏文件 ls -a # 列出详细信息并显示人类可读的大小 ls -lh-a的作用是把.bashrc、.ssh这类以点开头的隐藏文件也显示出来。新手常犯的困惑是「明明没看到这个文件」其实它只是被隐藏了。-h是把字节数换成 K、M、G读起来舒服。接着是「我要去哪」cd是 change directory。这里有几个快捷写法值得一次性记住# 回到家目录当前用户目录 cd ~ # 回到上一次所在的目录来回切换很好用 cd - # 回到上一级目录 cd .. # 回到根目录 cd /cd -这个写法很多人不知道但特别好用在两个相隔很远的目录之间来回跳时不用反复敲长路径。cd ..是往上一层可以连写比如cd ../..是往上两层。再是「建东西」mkdir建目录# 在当前目录下创建 aaa 目录 mkdir aaa # 递归创建多级目录中间不存在的层级会自动补上 mkdir -p temp/nginx/conf-p是新手最该记住的参数。不带-p时如果temp不存在mkdir temp/nginx会直接报错带上-p它会一路把缺的目录都建出来已存在也不报错。部署项目时经常要一次建好几层目录-p能省掉一串失败重试。2.3 第一个跟做例子建一个自己的练习目录光看不练等于没学。下面这一段你可以在任何一台 Linux 机器上跑一遍全程只用到目录操作安全、可重复、跑完还能删。# 1. 先确认自己在哪 pwd # 2. 回到家目录 cd ~ # 3. 建一个练习用的目录多层一起建 mkdir -p linux-practice/logs linux-practice/conf # 4. 看看建出来的结构 ls -R linux-practice # 5. 进到练习目录里 cd linux-practice # 6. 再次确认位置 pwd逐步说一下第 1 步确认起点第 3 步的-p让两个子目录一次性建好如果linux-practice已存在也不会报错第 4 步的-R是递归列出会把子目录里的内容也展开你能清楚看到树状结构第 6 步的pwd输出应该是/home/你的用户名/linux-practice这种形式。跑完这一段你已经完成了「查看位置、创建目录、切换目录、查看内容」的完整闭环。这就是全部目录操作的核心剩下的只是参数组合。跑完之后想清理退到上一级执行rm -rf linux-practice即可——但rm -rf这一步先别急着自己敲第 4 章会专门讲它有多危险。2.4 相对路径和绝对路径为什么有人会「找不到文件」新手最常报的错就是No such file or directory十有八九是路径写法的问题。规则其实很简单以/开头的叫绝对路径从根目录算起比如/usr/local/nginx在任何位置敲都指向同一个地方。不以/开头的叫相对路径从你当前所在的位置算起比如conf/nginx.conf你站在哪它就指哪。举个具体的例子。假设你现在在/root# 绝对路径不管在哪都能到 cd /usr/local # 相对路径从当前目录往下找 cd linux-practice # 用点表示当前目录等价于直接写名字 cd ./linux-practice第二种写法只有在/root下存在linux-practice时才成立。如果你人已经在/usr/local再敲cd linux-practice就会失败——不是命令错了是你站的位置变了。我的建议是脚本里一律用绝对路径手工敲的时候用相对路径省事。写定时任务、写启动脚本时用相对路径是新手翻车的经典原因之一因为定时任务执行时的工作目录和你登录后的目录往往不是同一个。3. 文件和文件内容建、删、看、改、找的一套动作目录是柜子文件才是柜子里的东西。这一章把「创建一个文件、复制它、改名、删掉、打开看、搜索内容」这串动作走一遍。这里面有几个命令是有破坏性的尤其是rm和mv我会在每个地方标清楚风险点你照着敲之前先读一遍说明。3.1 touch、cp、mv、rm四把刀怎么握建空文件用touch# 创建一个空文件若文件已存在只更新它的修改时间 touch testFiletouch不会覆盖已有文件的内容这一点放心。它最常见的用途是「先占个位」比如某些程序要求日志文件必须存在才能启动。复制用cp目录要加-r# 复制单个文件 cp a.java b.java # 递归复制目录把 /aaa 整个复制到 /bbb 下 cp -r /aaa /bbb # 递归复制并改名 cp -r /aaa /bbb/aaa2-r是 recursive递归。忘了加-r去复制目录会直接提示「omitting directory」不会造成破坏只是没做成。移动和改名都用mv它在 Linux 里是同一个动作——换个位置就是移动换个名字就是重命名# 重命名把 tomcat001 改名为 tomcat mv tomcat001 tomcat # 把 /aaa 移动到 /bbb 下名字仍是 aaa mv /aaa /bbb # 移动并改名把当前目录的 bbbb 移到 usr 下并改名为 bbb mv bbbb usr/bbb判断mv是移动还是改名的窍门看第二个参数是不是一个已存在的目录。是目录就把前者放进去不是就当成新名字。删除用rm这条命令必须重点说# 删除文件会逐个询问是否确认 rm a.java # 强制删除文件不询问 rm -f a.java # 递归删除目录每个文件都会问 rm -r bbb # 强制递归删除目录不问直接删干净 rm -rf bbb # 强制删除当前目录下所有以 a 开头的文件 rm -rf ./a*-r是递归-f是 force 不询问。两个合在一起就是「不问、连子目录一起删」。它的杀伤力在于没有回收站——Linux 命令行删除通常不进垃圾桶删完就没了没有后悔药。所以我的习惯是涉及rm -rf时先把命令敲出来把rm -rf换成ls跑一遍确认列出来的正是我想删的那些再把ls改回rm -rf回车。这个动作多花三秒但救过我很多次。还有一个进阶场景资源里也提到了按条件批量删除。比如递归删掉当前目录下所有.pyc缓存文件# find 找出所有 .pyc 文件-exec 对每个结果执行删除 find . -name *.pyc -exec rm -rf {} \;这里的{}是占位符代表 find 找到的每一个文件\;是命令结束标记反斜杠是为了让分号不被 shell 吃掉。这一行威力不小执行前务必把-exec rm -rf {} \;换成-print先看一眼会命中哪些文件。3.2 看文件内容cat、more、less、head、tail 各管一段文件建好了接下来是看。这几个命令看着像用途差别很大选错了体验会很差。# 一次性把整个文件打到屏幕上适合小文件 cat a.java # 分页查看回车下一行、空格下一页但不能往回翻 more a.java # 分页查看支持上下方向键、PageUp/PageDown 翻页q 退出 less a.java # 看前 10 行 head a.java # 看前 7 行 head -n 7 a.java # 看后 10 行 tail a.java # 看后 7 行 tail -n 7 a.java # 实时跟踪文件末尾新增内容看日志必用 tail -f a.javamore和less的区别值得记一下less支持上下方向键往回翻more只能往前less不会一次性把整个文件读进内存打开大文件更快less退出后屏幕上不留内容more会留下。所以现在基本都推荐用less代替more。tail -f是运维场景里出现频率最高的命令之一。-f是 follow文件被追加内容时屏幕会持续滚动显示新行。你部署完服务想看看它有没有报错就靠这条。退出按Ctrl C。这里要区分一下Ctrl C和Ctrl Z两个都能「中断」但性质不同Ctrl C是强制终止程序进程直接结束Ctrl Z是把任务挂起到后台进程还在只是暂停了。挂起之后可以用fg把它调回前台继续或者用bg让它转到后台继续跑。新手容易把Ctrl Z当成「退出」结果发现端口还被占着就是进程没真正结束。3.3 改文件vim 的最小可用操作改配置文件的场景太多了绕不开vim。它上手的第一感觉是「怎么按什么都没反应」原因是它有模式概念。你只需要先记住三件事进去默认是普通模式按i进入编辑模式按Esc回到普通模式然后:wq保存退出。# 用 vim 打开文件文件不存在则新建 vim a.java进到界面之后按i左下角出现-- INSERT --这时才能正常打字。改完内容按Esc左下角的提示消失回到普通模式。输入:wq回车保存并退出。冒号要按Shift ;打出来。其他几个退出方式也记一下:q是不保存退出文件没改动时用:q!是强制不保存退出改了但不想保存时用如果敲:q提示「No write since last change」说明你有未保存的修改要么:wq要么:q!别慌。新手最常见的卡点是「按了键但屏幕上出现一堆奇怪的字母」——那是你在普通模式下按了字母键被当成了编辑指令。别怕按Esc回到普通模式再按i重新进编辑模式就行不会破坏文件内容。真正的风险只有一个改了之后误按:q!把修改丢了。3.4 grep 和 find一个在文件里找一个在磁盘上找这两个命令名字像但找的东西完全不同。grep是在文件内容里搜字符串find是在磁盘上按条件找文件。分清楚这一点能省掉很多无效尝试。先看grep# 在 123.txt 中搜索 under区分大小写输出匹配的行 grep under 123.txt # 输出匹配行并带行号 grep -n under 123.txt # 反向匹配输出不含 under 的行 grep -v under 123.txt # 忽略大小写 grep -i under 123.txt-n显示行号特别有用报错信息给了行号你直接vim 行号 文件名就能跳过去。-v是取反查日志时排除掉一堆噪音行很管用。再看find# 从根目录开始找名字以 b 开头的文件和目录 find / -name b* # 只在当前目录树里找找名字精确为 b 的 find . -name b # 限定只找普通文件不找目录 find . -type f -name *.log-name支持通配符*匹配任意字符-type f限定类型为普通文件-type d是只找目录。find /从根目录开始搜会比较慢日常更推荐从当前目录.或明确的业务目录开始。还有一个高频用法是把两者串起来——在文件内容里搜只搜某类文件# 在当前目录下所有 .conf 文件里搜 timeout find . -name *.conf | xargs grep -n timeout这里的|是管道作用是把前一个命令的输出变成后一个命令的输入。xargs负责把前面找到的文件列表拆成一个个参数喂给grep。管道这个思路在 Linux 里到处都是第 5 章讲进程和端口时还会反复用到。4. 新手最容易踩的坑这一章专讲翻车现场和排查思路前面三章都是「怎么用」这一章讲「怎么不出事」。我把新手最容易翻车的几类问题按「现象 → 原因 → 解决」整理出来每条都是真实高频场景。看这一章不用动手但要记牢因为里面有些错误一旦发生代价不小。4.1 现象删完发现目录没了原因斜杠和变量没确认现象执行了一条rm -rf回头发现整个业务目录都空了或者删掉的东西比自己想的多。原因最常见的三种。第一在错误的目录下执行了相对路径删除比如本想删./cache结果站在了/下。第二路径里带了变量而变量是空的rm -rf $DIR/在DIR未定义时就变成了rm -rf /。第三删软连接时多写了斜杠下一条细说。解决养成三个动作。第一执行前先pwd加ls确认位置。第二把rm -rf xxx先用ls xxx跑一遍看清单。第三脚本里凡是带变量的删除先加一行echo把最终路径打出来。这三步听着啰嗦但只要经历过一次误删你就会觉得值得。4.2 现象删软连接把源目录删了原因结尾那个斜杠现象本来只想删掉一个软连接结果源目录里的文件全没了。原因软连接用ln -s创建它是一个指向别处的「快捷方式」。删除时rm -rf /data不带结尾斜杠删的是这个链接本身而rm -rf /data/带结尾斜杠会被理解成「进入这个目录删掉里面的内容」于是顺着链接把真实目录掏空了。解决创建和删除软连接时路径结尾都不要加斜杠。# 创建软连接把 /usr/local/app 指向 /data ln -s /usr/local/app /data # 删除软连接结尾不带斜杠只删链接 rm -rf /data另外创建时也别写成ln -s /usr/local/app/ /data加了斜杠含义会偏向「链接到目录下的内容」容易出意外。记住一句口诀软连接操作两头都不带斜杠。4.3 现象提示 Permission denied 或者卡在 vim 里出不来现象一执行某条命令返回Permission denied。原因当前用户对目标文件或目录没有对应权限。Linux 的权限分读、写、执行三种普通用户对系统目录通常只有读权限。解决先看权限再决定是否提权。# 直接切换成 root 用户执行需要知道 root 密码 su - # 用 sudo 以管理员身份执行单条命令 sudo vim /etc/hosts不要图省事长期用 root 登录操作误操作的杀伤范围会大很多。现象二在 vim 里按什么键都没反应或者出现一堆乱码字母退出不了。原因你还停在编辑模式或普通模式输入被当成了编辑指令。解决先按Esc再输入:q!回车强制退出或:wq保存退出。实在不确定状态连按两下Esc保证回到普通模式再敲冒号。4.4 现象改了配置不生效、端口连不上原因没重启、没放行、看错层现象一配置文件改完了服务行为没变化。原因大多数服务只在启动时读一次配置改文件不会自动生效。解决重启对应服务。改完/etc/sysctl.conf这类内核参数要用sysctl -p重新加载改完网络相关配置要重启网络服务。# 重新加载内核参数配置 sysctl -p # 重启网络服务让 hosts 等配置生效 /etc/init.d/network restart现象二本地curl能通外面连不上或者提示端口不可达。原因可能是服务没监听、监听在 127.0.0.1 而不是 0.0.0.0、防火墙没放行或者端口被别的进程占了。这几种情况的排查顺序要从近到远。解决按这个顺序查。# 1. 先确认端口有没有被监听 netstat -tunlp | grep 8080 # 2. 确认监听地址是 0.0.0.0 还是 127.0.0.1 # 3. 确认进程是否活着 ps -ef | grep java # 4. 本机自测端口通不通 telnet 127.0.0.1 8080如果第 1 步没有任何输出说明服务根本没起来别去查防火墙如果监听地址是127.0.0.1:8080说明只允许本机访问外部当然连不上要去改应用的 bind 配置如果监听正常、本机telnet也通再去查防火墙规则。这个「由内向外」的顺序能帮你少走很多弯路新手最常见的错误是一上来就怀疑网络结果服务压根没启动。现象三网络配置改了不生效提示防火墙相关报错。原因有些服务启动时依赖防火墙模块加载防火墙没开就可能报错。解决先看防火墙状态再决定是临时关闭还是永久关闭开机启动。# 查看防火墙状态 service iptables status # 临时关闭防火墙重启后恢复 service iptables stop # 永久关闭开机自启 chkconfig iptables off生产环境不要随手关防火墙这里的写法只用于本地练习和排查定位。5. 进阶但绕不过去权限、压缩、日志、进程、装软件前面四章解决的是「文件和目录」这一章开始碰系统层面的东西。内容多但每块只需要先掌握最小可用的一套遇到具体问题再回头查。这一章的资源里提到的命令密度最高我按使用频率排了序先学前三节后面的用到再看。5.1 权限那一串 rw-r--r-- 到底怎么读ls -l出来的每一行开头都有一串像天书的东西-rw-r--r-- 1 root root 34942 Jan 19 2018 bootstrap.jar拆开看。第一位-表示这是普通文件如果是d就是目录l就是软连接。后面九位每三位一组位置代表对象含义第 2-4 位rw-文件拥有者可读、可写、不可执行第 5-7 位r--拥有者所在组的其他用户只可读第 8-10 位r--其他用户只可读r是读w是写x是执行-表示没有这个权限。所以-rw-r--r--读作文件主人能读写同组的人只能读其他人也只能读。改权限用chmod两种写法都常见。一种是符号法# 给文件拥有者添加执行权限 chmod ux web.xml # 给同组用户添加执行权限 chmod gx web.xml # 给所有用户添加可执行权限 chmod x web.xmlu是 user拥有者g是 group同组o是 others其他a是全部。是添加-是移除是直接设定。另一种是数字法把三位二进制转成十进制读4写2执行1加起来就是一位数字。# 所有人都可读可执行、只有拥有者可写 chmod 755 web.xml # 所有人都可读可写慎用 chmod 666 web.xml # 仅拥有者可读可写最严格 chmod 600 web.xml755 拆开是7421读写执行、541读执行、5读执行。部署脚本和可执行文件基本都用 755配置文件用 644私钥类用 600。这三个数字记住日常够用了。5.2 打包压缩tar 管目录zip 管交换压缩这件事Linux 上大部分场景用tar跟外部交换文件时用zip。先记tar的四个字母组合规律c创建、x解压、v显示过程、f指定文件名f必须放在最后。# 打包两个文件成 tar 包不压缩 tar -cvf start.tar a.java b.java # 打包并 gzip 压缩 tar -zcvf start.tar.gz ./* # 解压 tar 包到当前目录 tar -xvf start.tar # 解压 tar.gz 到当前目录 tar -zxvf start.tar.gz # 解压到指定目录-C 是大写后面直接跟路径 tar -zxvf start.tar.gz -C /usr/local # 解压 tar.xz 格式换一个压缩参数 tar -xf node.tar.xz-C这个参数特别容易写错它是大写字母中间可以不加空格但路径必须是已经存在的目录否则会报错。另外tar -xf不指定解压参数时新版本的 tar 能自动识别 gzip、xz 等格式不确定格式的时候可以先试-xf。zip的用法更接近直觉# 压缩单个文件 zip lib.zip tomcat.jar # 递归压缩整个目录 zip -r lib.zip lib/ # 压缩多个文件 zip -r lib.zip a.jar b.jar # 解压到当前目录 unzip lib.zip # 解压到指定目录 unzip -d /usr/app lib.zip-r同样表示递归忘了加就只会压一个空目录。unzip -d的-d是小写后面跟目标目录。另外提一个不常用但很有用的命令split它能把大文件切成小份比如把日志切小方便传输# 按每份 10KB 切分后缀用两位字母 split -b 10k date.file # 后缀改成三位数字并指定文件名前缀 split -b 10k date.file -d -a 3 split_file # 按行数切分每 10 行一份 split -l 10 date.file-b按字节大小切-l按行数切-d用数字后缀-a指定后缀长度。5.3 出问题先看日志这几个位置要背下来排查的第一原则是「先看日志别猜」。Linux 的系统日志集中在/var/log下几个高频的日志文件记录内容/var/log/message系统启动信息和错误日志最常用/var/log/secure与安全相关的日志比如登录记录/var/log/maillog邮件相关/var/log/cron定时任务执行记录/var/log/boot.log守护进程启动和停止的日志看系统版本也常用# 查看操作系统发行版本 cat /etc/redhat-release # 查看内核版本 uname -a还有一类「用户干了什么」的记录藏在用户家目录的.bash_history里# 查看当前用户执行过的历史命令 cat .bash_history # 或者用 history还能配合管道过滤 history | grep dockerhistory是排查「是谁什么时候动了什么」的利器尤其是在多人共用的测试机上。如果是排查某个具体业务目录下的操作可以进到对应目录再看但要注意.bash_history默认在用户退出时才写入当场看可能不全。5.4 机器慢了看什么top、ps、netstat、du、df性能排查有一套固定动作新手先记住「看 CPU 内存用 top看进程用 ps看端口用 netstat看磁盘用 du 和 df」。top进去是两个区域。上面是统计信息区第一行是系统时间、运行时长、登录用户数、1/5/15 分钟平均负载第二行是进程总数、运行中、睡眠、停止、僵尸数量第三行是 CPU 各项占比重点看us用户空间和id空闲第四行是内存第五行是交换分区。下面是进程信息区按 CPU 排序PID是进程号%CPU和%MEM是占用比例COMMAND是命令名。按q退出。# 实时查看资源占用 top # 查看所有进程 ps -ef # 查看 mysql 相关进程 ps -ef | grep mysql # 查看占用资源情况按进程启动至今计算平均值 ps auxps -ef和top的区别是top是实时的、会刷新ps是拍一张快照。定位「现在是什么在吃 CPU」用top定位「这个进程还在不在」用ps更快。端口和网络连接# 查看所有监听的 TCP 端口 netstat -lt # 查看端口和对应进程含 PID netstat -tunlp # 只看 8080 这一个端口 netstat -tunlp | grep 8080 # 或者用 lsof 直接查端口占用 lsof -i:8080-t是 TCP-u是 UDP-n是显示数字不解析域名-l是只看监听-p是显示进程。-n这个参数能让输出快很多因为省掉了 DNS 反查。磁盘空间# 查看各目录占用大小 du -lh # 只看当前目录总大小 du -sh # 只看当前目录下一层的大小 du --max-depth1 # 查看整个系统的分区使用率 df -hdu看的是「谁占了多少」df看的是「盘还剩多少」。磁盘满了的时候先用df -h定位是哪个分区满再进到那个分区用du --max-depth1一层层找下去这是最快的排查路径。还有几个顺手的# 按 PID 查看该进程占用的端口 netstat -nap | grep 进程ID # 强制杀掉 PID 为 2630 的进程 kill -9 2630 # 查看某个进程的各线程信息0x9eb 是线程 nid jstack 2246 | grep 0x9eb -A 50kill -9是强杀进程来不及做清理只在普通kill无效时用。5.5 装软件和传文件yum 与 lrzsz装软件用yum几个常用子命令# 安装软件包 yum install -y nginx # 列出已安装的包 yum list installed # 在仓库里搜软件包 yum search nginx # 更新某个包 yum update nginx # 删除某个包 yum remove nginx # 清空缓存 yum clean all-y是自动回答 yes装的时候不用手动确认。yum clean all在装不上、提示元数据错误时很有用清完再装往往就好了。在服务器和本地之间传小文件装lrzsz# 安装上传下载工具 yum install -y lrzsz装完在终端里敲rz回车会弹出本地文件选择框选中即上传到当前目录。敲sz 文件名回车把服务器上的文件下载到本地。rz是 receive服务器接收sz是 send服务器发送方向上容易搞反记「站在服务器角度看」就不会错。超过几百兆的文件不建议用这个方式会卡。5.6 docker 先会这五条容器相关的内容多入门阶段这五条够用# 查看本地已有的镜像 docker images # 搜索镜像 docker search mysql # 启动一个容器命名、映射端口、设置密码、指定镜像 docker run -di --namefirst -p 3306:3306 -e MYSQL_ROOT_PASSWORD你的密码 镜像ID # 查看正在运行的容器 docker ps # 查看所有容器包括已停止的 docker ps -a # 停止、启动、重启、删除容器 docker stop first docker start first docker restart first docker rm first-d是后台运行-i是保持标准输入-p是端口映射宿主机端口:容器端口-e是传环境变量--name给容器起名方便后续操作。这几个参数的组合基本覆盖了本地起一个中间件容器的场景。5.7 用户、组和内核参数用户和组的操作最小一套# 添加用户 sum指定家目录并创建 useradd -d /usr/sum -m sum # 设置密码 passwd sum # 切换用户 su sum # 切回 root exit # 添加组、删除组 groupadd groupname groupdel groupname # 查看当前用户的分组 id # 删除用户及其目录 userdel sum rm -rf /usr/sumuseradd的其他常用参数-u指定 UID通常要大于等于 500 且未被占用、-g指定主组、-G指定附加组、-c加注释。要给普通用户 root 权限用visudo编辑找到 root 那一行照抄一行改成用户名# 执行后进入编辑界面照着 root 那行加一行 visudo## Allow root to run any commands anywhere root ALL(ALL) ALL sum ALL(ALL) ALL保存退出后sum就能用sudo执行管理员命令了。用visudo而不是直接vim /etc/sudoers的原因是它会做语法检查写错不会把 sudo 弄坏——这一点很重要直接改坏 sudoers 会导致谁都提不了权。内核参数优化改/etc/sysctl.conf改完执行sysctl -p生效。新手阶段不建议照抄网上的优化参数先把文件位置和生效方式记住等有具体性能问题再针对性调。6. 下一步学什么从背命令到形成自己的手感命令不是背下来的是用出来的。我见过太多人抱着命令清单从头看到尾看完什么也没记住。真正有效的方式是找一个具体场景把它走通命令自然就留下了。6.1 按场景记不要按字母记同一个ls在「我要确认目录里有没有配置」时用一次在「我要检查日志文件多大」时用一次两次之后你就不需要查了。下面这张表是我建议的记忆顺序按使用频率排场景命令说明确认位置pwd、ls -lh每次动手前先看一眼找文件find . -name *.log从当前目录往下找找内容grep -n timeout app.conf带行号方便跳转看日志tail -f app.log盯实时输出看资源top、ps -ef谁在吃 CPU看端口netstat -tunlp | grep 端口服务到底起没起看磁盘df -h、du -sh *盘满没满改权限chmod 755、chmod 644只记这三个数字打包tar -zcvf x.tar.gz 目录备份和传输装软件yum install -y 包名大多数问题先yum clean all把这张表打印出来贴在你练习环境旁边遇到对应场景就照着敲一次两周之后你会发现大部分已经不用看了。6.2 给自己排一个两周的练习节奏不要一次学完十五章内容那样只会消化不良。我建议这样排第一周只练目录和文件pwd、ls、cd、mkdir -p、touch、cp -r、mv、rm。每天在你的练习目录里建几个文件夹、复制几个文件、改名、删掉重点练「执行危险命令前先ls确认」这个习惯。第二周练查看和排查cat、less、tail -f、grep -n、find、top、ps -ef、netstat -tunlp、df -h、du --max-depth1。找一个能跑起来的小服务故意改坏一个配置让它起不来然后用这套命令排查端口有没有监听、进程在不在、日志报了什么错。这一轮走通之后你对命令的理解会从「知道」变成「敢用」。第三周开始碰vim、chmod、tar、yum、docker。这几块建议在虚拟机或测试机上练别拿生产机当试验田。6.3 一个具体的小技巧把命令抄进自己的速查表学到第三周你会开始忘。这很正常不是你笨是命令本来就不该全部留在脑子里。我的做法是建一个自己的文本文件叫cheatsheet.md每用到一条新命令就按「我要干什么 → 命令 → 一句说明」记一行。比如查端口被谁占了netstat -tunlp | grep 8080 看目录总大小du -sh 删软连接rm -rf /data 结尾不能带斜杠三个月后这个文件会变成你自己的私人手册比任何通用清单都好用因为它记录的是你真正踩过的场景。我第一次学的时候觉得把命令一个个背下来才算学会结果背完一周全忘了还在一次排查里把tail -f敲成了tail -F对着一个不存在的文件盯了十分钟。后来我改成每学一条就立刻在练习机上用一次用不上的先跳过反而记得牢。从那以后我每次执行rm -rf之前都强制先用ls走一遍清单这个习惯到今天还在。希望帮到你。本文还有配套的精品资源点击获取