news 2026/10/2 16:20:38

Linux基本管理及命令(上):从命令行到实战排障

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux基本管理及命令(上):从命令行到实战排障

说实话,搜索“linux常用命令”的人,大部分并不缺一份命令列表,缺的是把这些命令串联起来的管理思路。我带过的实习生里,凡是能稳定处理线上故障的,无一例外都是把基础命令练成了肌肉记忆;反过来,那些整天在收藏夹里囤“命令大全”的人,真遇到服务挂了,第一反应不是去看日志,而是先翻书。所以我写这篇《Linux的基本管理及命令(上)》,不打算做成字典式罗列,而是把日常管理里最高频的几条线挑出来,一条一条讲清楚其中的逻辑:文件目录、文本过滤、用户权限、进程负载、网络排查、操作效率。每条都配上能直接抄的用法,也把“为什么这么用”说明白。适合刚转行做运维的新人、把 Linux 当主力开发环境的程序员,以及正在准备相关工作面试的朋友。

这篇先打地基。存储管理、systemd 服务、定时任务、Shell 脚本这些进阶内容,我计划放在“下”篇里继续,这一篇先把最常用、也最容易出错的部分啃透。

1. 学命令前先建地图:管理Linux其实就抓三条线

1.1 “命令大全”治不了手忙脚乱,问题意识才行

我见过不少人拿着命令手册背:ls 有哪些参数、cp 有哪些选项,背得滚瓜烂熟,可真给一台出问题的机器,照样不知道先看哪里。问题出在哪?出在把命令当成了孤立招式,没搞懂管理一台 Linux 本质上是在回答几类问题:文件放在了哪里、文件内容是什么、谁在占资源、资源够不够用、网络通不通。

带着“我现在要解决什么问题”去找命令,比按字母表刷命令有效得多。很多基础的 linux 面试题绕来绕去,也逃不开这几类问题。只要在脑子里有一张地图,清楚“这类问题归哪条线管、用哪几个命令”,面试和实战都不会慌。比如搜索“linux常用命令”的,与其逐条背,不如按自己的角色反向梳理一遍:我是开发者要查日志,我是运维要管权限,我是 DBA 要看负载——角色不同,命令的优先级完全不同。

1.2 文件线、进程线、网络线,排障时记得反复横跳

我把基础管理命令粗略分成三条线,对应三类最常见的操作目标:

  • 文件线:定位文件(pwd、cd、ls、find),读写内容(cat、less、tail、grep、sed、awk),控制归属和权限(chown、chmod、umask)。
  • 进程线:看进程状态(ps、top)、看资源占用(free、kill、pkill),必要时结合存储状态一起判断。
  • 网络线:测连通(ping)、测端口(telnet、nc)、看监听状态(ss、netstat)、发起请求验证(curl)。

为什么要分线?因为真实排障几乎永远是跨线的。你发现网站打不开,文件线帮你看日志有没有报错,网络线帮你确认端口有没有监听,进程线帮你看服务进程是不是已经退出。三个方向来回跳,才是真实工作节奏。所以别单个记命令,要按“问题场景”成组记,比如“日志排错三件套:tail、grep、less”,这就是一组。接下来逐个展开。

2. 文件与目录操作:把路径逻辑和常用参数一次吃透

2.1 绝对路径、相对路径与点号目录:先搞懂你在哪

文件线是所有命令的地基,第一个要搞明白的就是“你在哪”。Linux 路径有两种写法:绝对路径从根/开始,比如/etc/nginx/nginx.conf;相对路径从当前目录开始,比如cd ../conf。新手最常见的问题是分不清.和..。这里一个点.代表当前目录,两个点..代表上级目录,波浪号~是当前用户的家目录,还有一个容易被忽略的短横线-,它表示“上一次所在的目录”。

cd -我几乎天天用。刚在/var/log看完日志,又要回/etc改配置,一个cd -直接切回上一步的位置,比重新敲一长串路径快得多。另外一个小习惯:路径永远用 Tab 补全,不要一个字一个字敲,这不仅是提速,还能避免打错目录名导致命令跑错位置。路径搞清楚了,后面所有文件操作的根基才稳。

2.2 ls、cp、mv、rm:高频参数与翻车防护

ls不是只有裸用这一种姿势。日常我最常用的组合:

  • ls -l:显示详细信息。第一列-rw-r--r--依次是文件类型加权限,后面跟着硬链接数、属主、属组、大小、修改时间、文件名。
  • ls -lh:h让大小显示为人类易读的 K、M、G,否则一个目录翻下来全是字节数,眼睛会瞎。
  • ls -lt:按修改时间倒序排列,找刚改过的文件特别好用。
  • ls -a:显示隐藏文件,排查问题时经常有惊喜,或者惊吓。

cp和mv的坑主要在目录上。复制目录必须加-r递归,更稳的是-a,它会在递归基础上保留权限、属主、时间戳等所有属性,我个人的习惯是“复制目录默认用 cp -a”。mv则要理解一个底层机制:同一文件系统内的移动只是改写目录项,秒级完成;跨文件系统的移动,本质是“复制加删除”,大目录会明显变慢,心里要有数,别以为是机器卡了。

rm是操作失误的重灾区。有人搜“linux删除文件夹命令”,答案其实就是rm -rf 目录名,但这条命令越简单越危险。我的经验是三层防护:第一层,能不用rm就不用,先用mv把目标挪到/tmp过渡;第二层,删除前先pwd确认自己在哪,再ls确认要删的是不是那个目标,尤其写脚本时千万不要用相对路径拼rm -rf;第三层,给rm设置alias rm -i,让系统每次删除前问一句,对新手是保命措施。.`

2.3 find 定位文件,别再一层层 ls 翻目录

经常会遇到这种场景:我知道三天前某个日志被轮转过,但忘了放在哪个子目录。这时候用ls一层层翻是纯体力活,正确姿势是find:

find /var/log -name "*.log" # 按名字找 find /home -type f -mtime +30 # 找30天前修改过的文件 find /etc -type f -name "*.conf" -exec grep -l "server_name" {} \;

find的三要素是起点路径、条件表达式、动作。起点别给太宽,比如直接全盘扫会很慢;条件里-name按名称、-type f指普通文件、-type d指目录、-mtime +N表示 N 天前改过;动作最常见的是默认的-print和-exec。-exec后面跟要执行的命令和{},最后用\;结尾,格式有点丑,但“找到之后顺手处理”的需求只有它能满足。

我一般建议把-exec rm这种高危动作,换成先-name列出结果看一遍,确认无误再删。宁可多敲一次,也不要批量误杀。

3. 看日志筛文本:tail、grep、sed、awk 怎么配合

3.1 日志排错三板斧:tail -f、grep -C、less

日志是 Linux 排障里最有价值的信息源,没有之一。第一板斧是实时跟踪:tail -f /var/log/nginx/error.log会持续输出新增日志行,适合一边复现问题一边观察服务打印的信息。反过来,tail -n 100看最后 100 行,比直接cat一个几百 MB 的日志强得多,这是日志文件名堆成山的时代必须养成的习惯。

第二板斧是过滤,grep的常用姿势:

  • grep -i "error" app.log:忽略大小写,因为日志里可能是 Error、ERROR 混着写。
  • grep -C 5 "关键字" app.log:把命中前后各 5 行一起显示,排错时上下文比单一行重要得多。
  • grep -v "^#" 配置文件:排除注释行,只看有效配置。看 nginx、redis 配置时超好用。
  • grep -rn "xx" /etc:r递归子目录,n显示行号。改配置前先全局搜一遍哪些文件涉及某个参数。

第三板斧是less。很多人不明白为什么有cat还需要less,因为文件长。less打开大文件是按需加载,不会一次性读进内存,而且支持上下翻页、按/输入关键字搜索、按n跳下一个匹配、按g和G跳到开头和结尾。我现在看任何超过一屏的文件,习惯性用less而不是cat。

3.2 sed 的流式编辑:改文件之前先想想

如果说grep是“找”,sed就是“改”。sed按行读入、处理、输出,所以叫流编辑器。最常用的两种场景:

sed -n '20,30p' 配置文件 # 只显示第20到30行 sed -i 's/127.0.0.1/0.0.0.0/g' 配置文件 # 全局替换监听地址

第二个命令里,s是替换,g是全局,不加g的话一行里只替换第一个匹配。这里有一个高频翻车点:sed -i是直接改原文件,改完没有后悔药。我自己的习惯是,涉及生产配置批量替换时,先去掉了-i跑一遍,看输出结果对不对,确认无误再加-i正式执行;或者用sed -i.bak,让 sed 自动生成一个.bak备份文件。这两个习惯,能让你少掉不少头发。

3.3 awk 按列切数据,统计排序一条龙

awk的入门可以只记一句话:默认按空格或 Tab 把每一行拆成列,$1是第一列,$2是第二列,$NF是最后一列。比如统计访问日志里每个 IP 的请求次数:

awk '{print $1}' access.log | sort | uniq -c | sort -rn

这句执行后,第一列(通常是客户端 IP)被提取出来,sort排序让相同 IP 相邻,uniq -c去重并计数,最后的sort -rn按次数倒序。排在最上面的就是访问量最大的 IP,是热点请求还是异常刷量,一眼就能看出来。awk -F:可以指定分隔符,比如处理/etc/passwd这种冒号分隔的文件:awk -F: '{print $1}' /etc/passwd,把每个用户名列出来。

到这里,我把grep、sed、awk的分工总结成一张表,方便按需选择:

工具核心能力典型场景
grep按行筛选文本日志过滤 error、排除配置注释行
sed按行编辑文本批量替换、打印指定行区间
awk按列处理文本提取字段、统计计数、日志分析

4. 用户、组与权限:多用户系统的安全底线

4.1 用户和组的增删改:usermod 的 -aG 千万别省

Linux 是多用户系统,建用户、分权限是基本功。创建用户的标准动作:

useradd -m -s /bin/bash zhangsan passwd zhangsan

-m表示同时创建家目录/home/zhangsan,-s指定登录 shell。不加-m的话,用户连家目录都没有,登录后执行cd ~都会奇怪地失败。然后是passwd设置密码。查看用户信息用id zhangsan,能看到 uid、gid 和所属组。

改用户最常踩的坑在usermod -G和-aG的区别上。-G是直接设置附加组列表,会把用户原本的附加组全部覆盖掉;-aG才是“追加”到现有附加组。我见过有人想把用户加进 docker 组,用了usermod -G docker,结果用户之前所在的多个附加组全没了,权限瞬间收缩,服务也跟着起不来。所以我给自己定的规矩是:凡是涉及附加组的修改,默认写-aG,少打一个 a 就是事故。

删除用户用userdel -r,r表示连同家目录、邮件池一起清理。组管理相对简单:groupadd创建,groupdel删除,组名记录在/etc/group文件里。日常维护中,组不会天天动,但用户和权限的搭配关系一定要清楚。

4.2 权限位与 umask:644、755 不是随便选的

权限位必须看懂。ls -l第一列-rwxr-xr-x,拆开看:第一位是文件类型,-普通文件、d目录、l软链接;后面九个字符分三组,分别是属主、属组、其他人。每组rwx:r读、w写、x执行。注意目录的x不是“执行”,而是“能否进入这个目录”,很多人一开始想不通这一点,导致权限配置各种摸不着头脑。

九位权限可以用数字简写:r=4、w=2、x=1,加起来就是一组权限。比如7=rwx、6=rw-、5=r-x、4=r--。于是常见的755就是属主完全权限、属组可读可执行、其他人可读可执行;644是属主可读写、其他人只读。配置文件一般644,脚本和可执行文件755,密钥私钥这类敏感文件600。别小看这套数字口诀,日常所有权限调整都是围绕它展开。

修改权限用chmod,两种写法都常用:chmod 755 文件,或chmod u+x 文件(给属主加执行权限)。修改属主属组用chown 用户名:组名 文件,递归修改目录要加-R,同样要小心别把权限一股脑改过头。

还有一个容易被忽略的umask。它决定新建文件的默认权限:文件默认是666减去 umask,目录默认是777减去 umask。系统一般默认022,所以新建文件是644、目录是755。如果某台机器 umask 被改成077,那么新建文件只有属主能看,协作时其他人读不了。遇到“我明明创建了文件同事怎么看不到”这类问题,记得回来查 umask。

4.3 sudo 提权:为什么不用 root 干日常活

很多新手拿到 root 密码就全程 root,爽是爽,坏处也明显:一是没有审计,谁在什么时候干了什么全凭记忆;二是手滑代价太大,root 下一条rm -rf连确认的机会都没有。正确做法是平时用普通用户,需要管理员权限时用sudo执行单条命令。

sudo 的配置文件在/etc/sudoers,修改必须用visudo命令打开,它会在保存时做语法检查,防止你写坏后 sudo 全线失效。常见配置思路是让“管理员组”的用户都能 sudo:在 sudoers 里加入%wheel ALL=(ALL) ALL一行,然后把需要授权的用户加进 wheel 组。sudo 执行时日志会记录在/var/log/secure或/var/log/auth.log里,出问题可以追溯。

这里强调一个原则:sudo 是“最小授权”,不是“见谁给谁”。有人为了省事给某普通用户配了NOPASSWD: ALL,等于给了一个永不过期的 root,后患无穷。我的建议是能单条命令授权就单条授权,能按组管就按组管,别图省事。

5. 进程与系统负载:ps、top、kill 管住程序的运行状态

5.1 ps -ef 和 ps aux,搞清你看到的是什么

进程管理第一步是看有哪些进程在跑。ps -ef和ps aux都能看,信息量差不多,区别主要在输出格式:ps -ef是标准语法,包含USER PID PPID C STIME TTY TIME CMD,多一个 PPID(父进程 PID),排查“谁启动了谁”很关键;ps aux是 BSD 风格,包含USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND,多了 CPU 和内存占用百分比。

我的习惯是,快速扫描系统里有没有可疑进程用ps aux配合排序;要看进程父子关系用ps -ef。实战里最常用的是管道组合:ps -ef | grep 服务名,直接查某个服务的进程号和父进程号。注意grep自身也会出现在结果里,如果你看到一条grep --color=auto xxx的记录,别惊讶,那是刚才那条命令自己。

top则是动态刷新版的 ps。进入 top 后,按P按 CPU 排序,按M按内存排序,按1展开每个 CPU 核,按q退出。看内存不用进 top,用free -h更直观,重点看 available 这一列,别只盯着 free 那一行——Linux 会把空闲内存拿去做缓存,free 显示的数值很小不代表内存不够,available 才是真正可用的量。

5.2 load average 和 free -h:别被数字吓到

top 第一行有个load average: 0.10, 0.15, 0.08。这三个数分别是 1 分钟、5 分钟、15 分钟的平均负载,反映的是“处于可运行状态和不可中断睡眠状态的进程数量”的滑动平均。很多人一听“负载”就以为是 CPU 占用率,其实是两码事。

负载高不高,要结合 CPU 核数和等待队列的性质一起看。8 核机器 load average 是 8,说明每个核平均排一个任务,未必过载;CPU 占用率 100% 且 load 持续上涨,才是真饱和。反过来,load 高但 CPU 占用不高,很可能是进程阻塞在磁盘 IO 或锁等待上,这时候应该去看iostat、strace,而不是继续盯着 top。这个判断经验,比背命令参数值钱得多。

内存方面,free -h看物理内存使用。当 available 明显偏低而 cache 很高,常见诱因是有进程吃了大量内存做缓存,比如某些 Java 或数据库进程。先用ps aux --sort=-%mem找出内存占用前几名的进程,再决定是调参还是扩容,别一上来就物理删文件。

5.3 kill 的礼貌与底线:先 SIGTERM 再 SIGKILL

kill的默认信号是 SIGTERM(编号 15),相当于给进程递一份“请择机退出”的通知,进程收到后可以做清理、保存状态,这是体面的退出方式。kill -9发送的是 SIGKILL,强制杀死,进程没有机会做任何善后,可能留下临时文件、未写盘的缓冲数据。所以我的原则是:默认kill PID,给它几秒到几十秒的善后时间;确认已经无响应、非杀不可时,再用kill -9。

几个实用变体:pkill按进程名杀,比如pkill -f "python app.py"会匹配命令行里包含该字符串的进程,比记 PID 省事,但也正因为匹配范围大,写-f参数时要格外确认,别误伤同名进程。kill -1(HUP)则常用来让进程重新加载配置而不退出,比如改完 nginx.conf,nginx -s reload内部就是这么实现的。

信号编号行为使用场景
SIGTERM15请求进程退出默认首选,给进程善后机会
SIGHUP1挂断/重载配置通知守护进程重新读取配置
SIGKILL9强制杀死进程无响应时的最后手段

6. 网络排查从分层开始:ping、telnet、ss、curl 的用法

6.1 先判断问题在第几层,再决定用哪个命令

网络问题最怕盲目乱试。我习惯按层次定位:第一层判断“通不通”,第二层判断“端口通不通”,第三层判断“服务返回什么”,第四层判断“域名解析对不对”。对应关系大概是:ping负责判断目标主机是否可达;telnet或nc负责判断某个 TCP 端口能否建立连接;curl负责向 HTTP/HTTPS 服务发真实请求看响应;nslookup负责确认域名解析结果。

这套组合拳不是随便排的。假设访问一个网站超时,先 ping 同一个 IP:如果不通,问题大概率在链路或目标主机的网络配置,没必要先折腾应用层;如果 ping 通但 curl 失败,就把目光转向端口是否监听、防火墙是否放行、服务进程是否存活。每一步都在缩小范围,这就是排查效率的来源。

6.2 telnet 看端口通不通,以及没装 telnet 时的备选

很多人搜“telnet ip 端口 命令怎么看通不通”,答案其实很简单:telnet 目标IP 端口,例如telnet 192.168.1.10 3306。如果端口可达,界面会进入一个空白的连接会话,或者显示 Connected to 之类的回显;如果不可达,一般很快报Connection refused(对方拒绝)或connect timed out(超时,多半是被防火墙丢弃)。连接成功后,按Ctrl+]进入命令模式,再输入quit即可退出。

不过要知道,现代系统默认不装 telnet 客户端,因为 telnet 协议是明文传输,不适合传数据,但作为“端口连通性测试工具”它依然非常轻量。如果机器上没有 telnet,可以用nc -vz 目标IP 端口,z表示只扫描不发送数据,v显示详细信息。我自己一般看手头机器装了哪个就用哪个,功能等价。

这里还有一个容易被忽视的限制:telnet 只管“TCP 能不能连上”。连不上也可能是目标服务只监听在内网地址、或者只监听 IPv6,需要配合下一小节的ss去查监听地址,别一上来就断定“服务没起”。

6.3 看本机端口监听和 HTTP 状态:ss 与 curl 组合

排查网络问题的第二步,常常是“看这台机器上到底有哪些服务在监听”。老命令netstat -tlnp还能用,但新系统我更推荐ss -tlnp:t表示 TCP,l表示只显示监听,n显示数字端口和 IP,p显示进程名和 PID。一个典型输出会告诉你哪个 IP 地址上、哪个端口、由哪个进程占用。比如:::80表示 IPv6 任意地址监听,127.0.0.1:8080则表示服务只对本机开放,外部根本连不进来。这个细节我见过不少人栽过。

对外发起请求验证用curl。curl -I http://服务地址只看响应头,-v显示完整握手过程,对排查 HTTP 状态码、重定向、证书问题都很直观。域名解析不对时,先nslookup 域名,或nslookup 域名 指定DNS服务器,看返回的 IP 是不是预期值。这套“ss 查监听 + curl 验请求 + nslookup 查解析”的组合,基本覆盖了日常网络服务排查的完整链路。

7. 让操作提速的日常细节:history、补全与 vim 基础

7.1 history 不只是翻旧账,还能帮你少敲一半命令

history的价值被低估了。基础用法是history列出历史命令,配合grep快速查找:history | grep nginx,能找出之前敲过的所有 nginx 相关命令。但高效玩法是这几个:

  • !!:重新执行上一条命令。尤其忘加sudo的时候,敲sudo !!,瞬间补救。
  • !$:引用上一条命令的最后一个参数。比如刚cat /etc/nginx/nginx.conf,接着想vim编辑它,直接vim !$。
  • Ctrl+R:进入反向搜索历史模式,输入几个关键字就能模糊匹配之前敲过的长命令,继续按Ctrl+R往前翻。这是命令行效率提升最大的一个习惯,没有之一。

我自己的体验是,熟练用Ctrl+R之后,很多记不全的长参数命令根本不需要重新记忆,历史记录里都有,搜出来改一改就能用。

7.2 Tab 补全与行内快捷键,手指不离键盘

Tab 补全是最被低估的效率工具。敲cd /e然后按 Tab,系统自动补全成/etc/;再按一次 Tab,有时会列出该目录下的候选列表。对写不准的目录名、长文件名,Tab 补全基本杜绝了拼写错误。命令补全同样适用,想不起某工具完整名时,敲前几个字母加 Tab,就能看到候选命令。

行内编辑快捷键同样能省大量时间:Ctrl+A跳到行首、Ctrl+E跳到行尾、Ctrl+U删除光标前所有内容、Ctrl+K删除光标后所有内容、Ctrl+W删除前一个单词。这些组合键在修改长命令时极为顺手,不用去按方向键一格一格挪。可以刻意练几天,形成肌肉记忆后,整个操作速度会上一个台阶。

7.3 vim 最少必要操作:撑起绝大多数场景

vim 劝退了不少人,其实日常用到的就是“最少必要操作”。先理解模式:打开文件默认在普通模式,按i进入插入模式开始打字;编辑完按Esc回到普通模式,按:wq保存退出,按:q!不保存强制退出。

普通模式下还有一组高频操作:dd删除当前行,yy复制当前行,p粘贴,u撤销,/加关键字搜索,n跳下一个匹配,gg跳到文件头,G跳到文件尾。这十来个操作,基本覆盖了在服务器上改配置文件的全部场景。

有人问编辑器那么多,为什么偏要学 vim。因为在干净的生产服务器上,你最可能面对的就是 vim,而且很多管理命令本身绑定了它的操作习惯,比如visudo打开的就是 vim 风格的编辑界面。不用刻意学成高手,能看文件、能改配置、能搜关键词、能撤销,就足够支撑日常管理了。我在实际工作中最深的体会是,编辑器只是工具,真正值钱的是你操作命令时脑子里那张清晰的管理地图。先把这篇里的基础命令练熟,你会发现很多“高深问题”其实并不复杂,复杂只是因为底层逻辑还没串起来。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 16:20:04

自己的人生态度(从ai到职业生涯,再到健康)

从初中开始,生长和心智处在中等偏上的状态!为什么这样,我也不知道!可能和活过来了有关系吧!六年级之前,小命差点不保!或许只有经历过,才能激活人生状态!前半生&#xff0…

作者头像 李华
网站建设 2026/10/2 16:19:40

品茗科技,3431万收购了一家新加坡公司,刚刚完成首次交割

来源:AI4ELAB,工程AI科技产业智库大家好,这里是AI4ELAB,我是秦明。睡觉前刚刚跑了下采集系统,看到品茗科技的海外收购动作,与大家具体分享下细节。品茗科技9月30日公告,其全资子公司品茗&#x…

作者头像 李华
网站建设 2026/10/2 16:19:15

geo服务专业公司怎么选?正规靠谱服务商筛选名录与口碑力荐

geo服务专业公司怎么选?正规靠谱服务商筛选指南 GEO也就是生成式引擎优化,是针对集成生成式AI功能的搜索引擎平台进行的优化工作,核心价值是帮助企业抢占AI搜索答案席位,获得更多精准曝光与潜在客户咨询。很多企业在布局AI流量赛道的时候&am…

作者头像 李华