ARTICLE DETAIL

资讯详情

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

Linux基础命令实战指南:从文件操作到系统排查

Linux基础命令实战指南:从文件操作到系统排查 简介Linux 零基础用户的首选手册《Linux 基础命令大全新手上手指南》以完全面向初学者的视角系统覆盖 Shell 入门、文件与目录操作、文本处理、权限与用户组管理、进程管理、系统信息与监控、网络管理、包管理、压缩与归档、用户环境与 Shell 脚本基础等核心模块并给出常见选项与组合用法进一步延伸至系统管理进阶、安全加固实践、Shell 编程实战、容器与云原生工具和性能调优工具箱由浅入深地构建起完整、实用的命令行知识框架。资源为单个 PDF 文件约 6MB方便在电脑或移动设备上随时翻阅每个知识点均配合命令参数解析与具体示例可直接对照练习目录按专题组织检索便捷。目前已有 120 人学习特别适合 Linux 入门学习者、运维新人及相关备考者既能作为系统化学习资料也可当作日常排错的速查手册。 我见过太多刚开始接触Linux的朋友第一反应是去搜“Linux基础命令大全”收藏一堆文章然后把命令挨个敲一遍隔两天全忘了。这不能怪记性差而是你打开的方式有问题。买了云服务器想自己搭个博客结果登录后台看到黑底白字的终端第一反应是去装个图形面板这太正常了。但如果你想真正上手Linux有一条路绕不过去把最常用的几十条命令变成肌肉记忆理解它们背后的逻辑而不是死记硬背。这篇内容就是写给新手的实操指南不讲虚的直接围绕日常使用频率最高的命令展开。我会把每条命令放到真实场景里讲清楚而不是给你罗列一个背诵清单。学完之后你至少能做到在Linux服务器上正常地看文件、改配置、装软件、查日志、找问题遇到Permission denied不发懵被一个进程卡住知道怎么处理。1. 先别急着背命令把Linux命令的底层逻辑搞清楚1.1 命令行到底在干一件什么事你在Windows里双击文件、右键新建本质上是在叫操作系统帮你干活。Linux的命令行同样是在干活只不过你每次输入一条命令等于明确告诉系统我要运行哪个程序带着什么参数去运行。理解到这里你就明白了Linux命令不是一堆需要背诵的咒语而是一套有规律可循的沟通方式。1.2 命令的通用结构绝大多数Linux命令长这样命令名称 [-选项] [参数]命令名称要执行的程序比如ls、cd、cat。选项调整程序行为常见的有-l表示长格式、-a表示显示所有文件、-r表示递归。短选项用单个减号加一个字母例如-l长选项用双减号加单词例如--all。参数操作的对象例如文件路径、目录名。举一个实际例子ls -l /var/log这条命令的意思是用长格式-l列出/var/log目录下的内容。你看命令的含义不需要背拆开就能读懂。这个结构占了Linux基础命令的九成以上剩下的就是管道符、重定向这类连接组合的工具。1.3 永远随身携带的“帮助手册”新手最应该养成的习惯是遇到不会的命令先查帮助而不是立刻去搜索引擎。ls --help man ls--help输出的是精简使用说明man ls打开的是完整手册页。手册打开后按q退出按上下方向键翻页按/搜索关键字。man手册是英文的一开始读着吃力很正常但它是你脱离“复制粘贴别人命令”的第一步。我建议你有空就挑一条常用命令读一读它的手册坚持一段时间你对命令的理解会明显超过只会背参数的人。还有个被忽略的效率神器是Tab键自动补全。输入命令或路径的前几个字符按一下Tab系统会自动补全如果补全不了快速按两下Tab会把所有可能匹配的选项列出来。这既省时间也能极大降低敲错路径的概率。2. 文件与目录操作新手80%的时间都耗在这里2.1 从当前位置开始pwd与ls刚登录服务器你面对的就是一个壳Shell你要做的第一件事是搞清楚自己在哪、旁边有什么。pwd ls ls -l ls -a ls -lhpwd输出当前所在目录的绝对路径我每次登录云服务器后都会先敲一下确认自己在/root还是/home/ubuntu避免在错误的目录下执行操作。ls列出当前目录内容日常最常用的是组合拳ls -lh-l显示详细属性-h人性化显示文件大小比如1.2K、34M一眼就能看出哪个文件占了大量空间。2.2 切换目录的常见误区cd /etc cd .. cd ~ cd -cd /etc表示切换到绝对路径/etccd ..返回上一层目录cd ~回到当前用户的家目录cd -返回上一次所在的目录。这里最容易犯的错是把Windows的习惯带进来在Linux里路径分隔符是/不是\目录是区分大小写的cd /ETC和cd /etc完全不是一回事。做文件操作前还有两个路径概念必须分清。绝对路径是从根目录/开始描述的完整路径相对路径则是相对于当前位置的描述例如当前在/home要进入/home/user1可以直接cd user1。新手分不清两者最容易踩的坑是在/usr/local下用相对路径../..反推位置结果把自己绕晕。2.3 增删改查是最核心的四个动作touch test.txt mkdir -p /home/user1/project/logs cp -r /home/user1/project /home/backup mv test.txt /home/user1/ rm file.txt rm -rf dirtouch创建一个空文件如果文件已存在则更新修改时间。新建配置文件时常用。mkdir创建目录-p可以一次创建多级目录例如mkdir -p a/b/c中的b和c都会自动建好不会报错。cp复制文件复制整个目录必须加-r递归否则会提示无法复制目录。这是新手最高频的报错点。mv移动也可以直接当重命名用例如mv oldname.txt newname.txt。rm删除。普通删除文件用rm删目录加-r想不确认直接删加-f。这里必须郑重提醒一句如果你要删除一个目录写下rm -rf之前请务必反复确认目录路径。这是Linux新手能犯的最危险的错误没有之一。rm -rf /这类命令会把整个系统删空在真实生产环境中等于直接让机器报废。2.4 查看文件内容的阶梯式思路cat /etc/hostname less /var/log/syslog head -n 20 /var/log/syslog tail -n 50 /var/log/syslog tail -f /var/log/nginx/access.logcat适合查看较短的文件less适合查看大文件按空格翻页按q退出head和tail分别看文件开头和结尾的若干行。tail -f是排查问题的神器它会持续追踪文件的新增内容调试日志时一直开着窗口程序一报错立刻就能看到。注意-F大写和-f的区别如果日志文件被轮转重命名了-F会自动追踪新生成的文件-f则可能停在已被重命名的旧文件上部署环境里建议用tail -F。2.5 搜索文件与文本的黄金搭档find /etc -name *.conf grep error /var/log/syslogfind按文件名在指定目录里找文件*是通配符表示任意字符*.conf匹配所有以.conf结尾的文件。grep在文件内容里按关键字搜索grep -r error /var/log/可以递归搜索目录下所有文件的内容。这两个命令一组合基本没有你找不到的东西。3. 权限系统Linux新手最容易栽跟头的三件事3.1 为什么你总是看到Permission denied有次我让一个新同事去修改Nginx配置文件他打开文件发现保存不了跑过来一脸无辜地问我是不是服务器坏了。其实根本不是。Linux是个多用户系统每个文件都有明确的属主、属组和其他人三类权限你看到Permission denied说明你用了没有写权限的身份去操作文件。每次执行ls -l输出最前面那十个字符就是权限信息例如-rw-r--r-- 1 root root 2345 Feb 23 10:30 app.conf第一位-表示是普通文件d表示目录。后面每三位一组第一组是属主权限第二组是属组权限第三组是其他人权限。每个组里的r表示可读w表示可写x表示可执行。目录的x权限比较特殊它表示能否进入这个目录只有r而没有x的目录你能看到文件名列表但无法cd进去。3.2 用数字法改权限记住一套就够了chmod 755 deploy.sh chmod 644 app.conf chmod -R 755 /var/www/html数字法的规则是r4w2x1把三组权限对应的数字相加。755表示属主可读写执行4217属组可读执行415其他人可读执行5。644表示属主可读写其他人只读。这是最常用的两套组合配置文件用644脚本目录用755记住这两个就够应付绝大多数场景。修改目录以及里面所有文件的权限时加-R例如chmod -R 755 /var/www/html。但这里有个隐藏的坑对包含脚本的目录用-R 755会把所有文件也变成可执行这会带来不必要的安全暴露。更讲究的做法是目录用755普通数据文件用644把可执行权限只留给真正需要跑的程序。3.3 改属主、加用户、提权三条命令管好身份chown -R www-data:www-data /var/www/html useradd -m newuser passwd newuser sudo apt updatechown修改文件和目录的属主与属组例如把网站目录交给www-data用户整个目录都加上-R。useradd -m新建用户并自动创建家目录passwd给用户设置密码。sudo是临时提权工具它让普通用户能以管理员身份执行特定命令前提是当前用户被加入了sudo组。日常操作服务器不要直接用root登录操作而是用普通用户加sudo这是所有人都应该遵守的基本习惯。万一哪天你在错误目录下执行了破坏性命令普通用户的权限本身就是一道保险。4. 系统状态与进程管理服务器突然变卡时你要亮出的第一手证据4.1 先看整体再用降维法定位问题服务器反应慢新手的第一反应是重启。正确做法是冷静收集信息。按这个顺序来uptime free -h df -h topuptime显示系统运行时间、用户数和平均负载负载数字持续高于CPU核数说明系统忙不过来了。free -h看内存和交换分区用量这里的-h依然是人性化显示。df -h看磁盘占用率根分区到100%会导致各种诡异问题比如命令报错、日志写不进去。top实时显示进程资源占用排行按P按CPU排序按M按内存排序按q退出。4.2 找到那个“罪魁祸首”进程ps -ef | grep nginx ps aux | sort -k3 -rn | head kill 1234 kill -9 1234ps aux列出所有进程信息ps -ef也是类似用途。|是管道符它把前一条命令的输出传给后一条命令继续处理。ps -ef | grep nginx的意思是“列出所有进程然后筛选出包含nginx的行”。sort -k3 -rn | head表示按CPU占用率降序排列后只显示前10行是我定位高占用进程最常用的一招。kill用于结束进程后面的数字是进程PID进程号在ps输出或top界面的第一列能找到。默认的kill是温和地请求进程退出进程可以自己清理后优雅关闭kill -9是强制结束属于最后手段。能不用-9就不用直接强杀可能导致配置文件没写完、进程残留临时文件等问题。5. 网络排查三板斧连不上服务器时你该怎么办5.1 先测连通性ping -c 4 baidu.com-c 4表示发送4个包后结束。平时没加-c会一直ping下去手动按CtrlC才能停。ping不通外网先检查本地网络和DNS内网机器ping不通网关说明网络配置或防火墙有问题。5.2 再测端口和服务状态curl -I http://localhost curl -v https://example.com wget -O test.html https://example.comcurl -I只获取HTTP响应头能快速判断Web服务是否在正常运行、返回状态码是200还是500。curl -v输出详细请求过程排错时能看到SSL证书、重定向、DNS解析每一步的情况。wget常用于下载文件加上-O指定保存的文件名。端口占用是另一个高频问题比如启动Nginx报端口被占用这时用ss -lntp | grep 80 ip addrss查看系统中正在监听的端口和对应进程-lntp分别表示监听中的、TCP协议、不解析服务名、显示进程信息。ip addr查看网卡和IP地址相当于Windows里的ipconfig。如果你发现80端口被一个陌生的PID占用用ps -ef | grep PID查出是什么程序再决定是留着它还是处理掉。6. 新手高频场景把命令串起来才是真正的“上手”6.1 组合拳一磁盘快满了一步步定位df -h du -sh /home/* du -sh /var/*df -h看到根分区用量90%以上先用du -sh /home/*统计家目录下每个用户占了多少空间再用du -sh /var/*逐个目录排查。du是统计目录大小-s只显示总计-h人性化显示。按这个思路逐级往下查基本几分钟就能揪出吞掉磁盘的大文件。定位到大文件之后先确认是日志还是备份文件再做清理或迁移不要上来就删。6.2 组合拳二服务起不来看日志找真相systemctl status nginx journalctl -u nginx -n 100 tail -F /var/log/nginx/error.log服务启动失败时systemctl status会给出简要错误信息journalctl -u nginx -n 100看该服务最近的100条日志tail -F /var/log/nginx/error.log持续跟踪Nginx错误日志。排查服务问题有一条铁律先看日志再动配置别凭感觉瞎改。6.3 组合拳三批量处理一个目录下的日志文件find /var/log/myapp -name *.log -mtime 30 -exec rm -f {} \;这条命令的意思是在/var/log/myapp下找到所有.log结尾、修改时间超过30天前的文件然后逐个删除。-exec是find的扩展功能{}是找到的每个文件名的占位符末尾的\;表示命令结束。这种写法能省去你挨个清理的麻烦。但执行前一定要先去掉-exec部分只跑find确认列出的文件确实是你要删的再放上-exec执行。7. 我见过的新手翻车现场这几个坑现在告诉你7.1 在vim里出不去了十个人里有八个新手在vim里乱按一通最后卡住了。如果你想快速退出按一下Esc进入普通模式然后输入:q!回车表示不保存直接退出。想保留修改再退出输入:wq回车。实在着急连按几次Esc再按:q!基本能脱困。我建议新手别花时间系统去学vim掌握打开文件、输入内容、保存退出、免打扰退出这几个操作就够了日常改配置完全够用。等你真的需要高频编辑文件了再系统学一遍也不迟。7.2 复制别人命令时别连“坑”一起复制网上很多教程里的命令前面带着$或#这两个符号是命令行提示符本身不是命令的一部分。新手很容易把$ sudo apt update整段复制进去结果系统提示找不到命令。正确的做法是只复制$或#后面的内容。还有一种情况是复制命令时多复制了一个看不见的换行符命令刚执行就被发送了这种情况建议手动敲一遍也能加深记忆。7.3 重定向符号的顺序写反了重定向是21之类的写法。把标准输出和标准错误都写到同一个文件正确写法是 log.txt 21意思是将标准输出重定向到文件再把标准错误重定向到标准输出当前指向的位置。如果反过来写21 log.txt标准错误还是会被输出到屏幕。顺序很容易写反我一开始也栽过两次现在每次写都习惯先写重定向去向再写21。7.4 最后分享一点个人的体会带过不少新人之后我发现命令行熟练度不是靠看文章看出来的而是靠一台可以随便玩的服务器练出来的。最有效的方式就是买一台便宜的云服务器自己从零开始部署一个网站、搭一个小服务遇到问题就查手册、看日志、搜资料折腾几天下来那些命令不用刻意背自然就记住了。试坏了也不怕重装系统也就是几分钟的事成本低收获大。如果你刚接触Linux希望能从这篇内容里找到“其实没那么难”的感觉。先去服务器上敲一遍最基础的ls、cd、cat再试着复制、移动、删除几个文件然后部署一个Nginx服务。做到这一步你就已经从“纯小白”迈入“能自己动手折腾”的阶段了。本文还有配套的精品资源点击获取
返回列表