新手小白的 Linux 学习:从基础到开始
新手小白的 Linux 学习:从基础到开始
ZhangCurry认识Linux
Linux 诞生于 1991 年,由程序员 Linus Torvalds”攒” 出来的开源系统,它的核心理念是 “一切皆文件”—— 不管是硬盘、键盘这些硬件,还是运行的程序、用户数据,在 Linux 眼里都是一个个文件。
这就像把整个系统想象成一个超级大文件夹,所有东西都整整齐齐地分门别类放好。
Linux 有很多 “变种”,比如适合新手的Ubuntu(界面友好,软件多,像 Linux 界的 “安卓手机”)、稳定耐用的CentOS(服务器最爱,像系统界的 “老陈醋”,越用越香),还有 Debian、Fedora 等。
不同版本就像不同口味的冰淇淋,选自己喜欢的就行,不过建议新手从 Ubuntu 开始,容错率高,坑少。
系统操作
Linux 系统操作主要是文件与目录管理方面,掌握它,你就能轻松创建、删除、移动文件和目录,就像在自己家整理房间一样。
这就包括用户与权限管理,添加、删除用户,设置文件访问权限,妥妥掌控 “门禁”。
进程管理也不在话下,启动、停止、监控进程,让系统运转尽在掌握;软件包管理更是方便,安装、卸载、更新软件一键搞定。
这些操作,命令行和图形化界面都能上,不过命令行凭借高效和灵活,堪称 Linux 系统管理的 “秘密武器”,玩得转命令行,你就是 Linux 世界的 “大拿” 。
(一)文件系统:像整理房间一样管理文件
Linux 文件系统:Linux 文件系统是一种树形结构,以根目录 “/” 为起点,向下延伸出众多子目录与文件。
它有着独特的权限管理机制,可针对所有者、所属组以及其他用户分别设置读、写、执行权限。
常见的文件系统类型包括 ext4、XFS 等,每种类型在性能、稳定性、兼容性等方面各有特点,理解并掌握 Linux 文件系统的架构与操作,对于高效管理 Linux 系统中的数据至关重要:
/bin:放着最常用的命令,比如ls(看文件)、cd(切换目录),就像你家的工具箱,随手就能拿到常用工具
/etc:存着系统和软件的配置文件,相当于 “系统说明书”,改这里能让系统 “变样子”(但别乱改哦)
/home:每个用户的 “个人卧室”,比如你的用户名是user,那你的文件就存在/home/user里
/var:存日志文件,比如系统哪里出错了,软件运行记录,都记在这里,像一个 “系统日记本”
1 | cd ~ # 快速回到自己的家目录(~代表/home/你的用户名) mkdir myfirstdir # 建一个叫myfirstdir的文件夹 echo "hello linux" > myfirstdir/note.txt # 在文件夹里创建一个文件,写入内容 ls -l myfirstdir # 查看文件夹里的文件详情(会看到note.txt,权限是-rw-r--r--) |
(二)命令行:用键盘让系统 “听话”
命令行就像你和系统的 “秘密通道”,掌握这些 “通关密语”,比用鼠标点来点去效率高多了!
1. 文件管理,比鼠标拖拽更高效
创建文件:touch newfile.txt(一秒创建空文件,比鼠标右键新建快 10 倍)
复制文件:cp note.txt backup_note.txt(把 note.txt 复制一份,改名 backup)
移动 / 重命名:mv backup_note.txt myfirstdir/(把文件移动到 myfirstdir 文件夹里)
删除文件:rm myfirstdir/note.txt(删除指定文件,删目录用rm -r 目录名,但要小心!删了就难找回来)
2. 文本操作:处理大文件的神器
查看文件:cat note.txt(快速显示文件内容,适合小文件);less biglog.log(分页查看大文件,用上下键翻页,按q退出)
搜索内容:grep “error” /var/log/syslog(在系统日志里找包含 “error” 的行,定位问题超好用)
修改权限:chmod 644 newfile.txt(让文件所有者能读写,其他人只能读,数字 6=4+2,4 是读,2 是写)
(三)vim 编辑器:从 “劝退” 到 “真香”
vim 是 Linux 的 “瑞士军刀” 编辑器,刚开始像玩硬核游戏,但学会后效率起飞。它有三种模式:
- 一般模式(刚打开文件时):用hjkl键(左 / 下 / 上 / 右)移动光标,按dd删除一行,yy复制一行,p粘贴
- 编辑模式(按i进入):像普通编辑器一样打字,写完按Esc回到一般模式
- 指令模式(按:):输入wq保存退出,q!强制不保存退出,set nu显示行号
实操:用 vim 写一个简单脚本
1 | vim myscript.sh # 新建一个脚本文件 # 按i进入编辑模式,输入以下内容: #!/bin/bash echo "Hello, I'm a shell script!" # 按Esc,输入:wq保存退出 chmod +x myscript.sh # 给脚本加执行权限 ./myscript.sh # 运行脚本,会输出"Hello, I'm a shell script!" |
一定要自己上手,亲自写写,别看很简单,你不一定一次成功!
系统管理
(一)用户与权限:管理系统的 “住户”
Linux 是个超酷的多用户系统,就像一个大 house,你可以给不同的人配不同的 “钥匙”(权限),每个人都能在自己的权限范围内畅玩。
1 | # 创建普通用户(比如给室友建个账号) sudo useradd -m roommate # -m自动创建家目录 sudo passwd roommate # 给新用户设置密码(输入两次) # 管理用户组(比如把多个用户放进"开发组") sudo groupadd devteam sudo usermod -aG devteam yourusername # 把自己加入开发组 groups # 查看自己属于哪些组 |
(二)软件安装:不同系统的 “软件商店”
- Ubuntu/Debian 系(用 APT 命令):
1 | sudo apt update # 刷新软件列表(像刷新购物车,看看有哪些新软件) sudo apt install firefox # 安装火狐浏览器 sudo apt remove firefox # 卸载软件 |
CentOS/RHEL 系(用 YUM 命令):
1 | sudo yum install nginx # 安装Nginx服务器 sudo yum update # 更新所有软件 |
(三)网络配置:
让系统连上 “互联网高速公路”。
测试网络:ping www.baidu.com(看能不能上网,按Ctrl+C停止)
查看 IP:ip addr(会看到192.168.x.x这样的地址,是你电脑的 “门牌号”)
下载文件:curl -O https://example.com/file.zip(直接用命令下载,不用开浏览器)
实战:配置静态 IP(比如公司电脑需要固定 IP)
1 | # 编辑网卡配置文件(不同系统路径可能不同,这里以Ubuntu为例) sudo vi /etc/netplan/01-netcfg.yaml # 添加以下内容(根据实际情况修改IP、网关、DNS): network: version: 2 renderer: networkd ethernets: enp0s3: # 网卡名,用ip addr查看 dhcp4: no addresses: [192.168.1.100/24] gateways: [192.168.1.1] nameservers: addresses: [8.8.8.8, 114.114.114.114] # 应用配置: sudo netplan apply |
进阶提升:从 “用户” 到 “开发者”
(一)Shell 脚本:让系统自动干活
Shell 脚本堪称 Linux 系统的神助攻,就像给系统量身定制了一套 “操作剧本”。
有了它,咱们可以把一堆指令编排得明明白白,让系统像个乖巧的小助手,按部就班地完成各种任务。
比如,写个 Shell 脚本,每天自动备份重要文件,数据安全稳稳拿捏;还能设置定时任务,让系统定期清理磁盘里的临时文件、缓存这些 “垃圾”,一键释放磁盘空间,系统运行直接起飞!
Shell 脚本基础语法:变量 + 条件 + 循环
1 | # 变量:存一个值,比如用户名 name="Alice" echo "Hello, $name!" # 输出Hello, Alice! # 条件判断:如果文件存在,就删除 if [ -f oldfile.txt ]; then rm oldfile.txt echo "已删除oldfile.txt" fi # 循环:打印1到5 for i in {1..5}; do echo "第$i次循环" done |
实战脚本:批量重命名文件(把.jpg 改成.jpeg)
在 Linux 系统的实际操作中,经常会遇到需要批量修改文件后缀名的情况。
比如,我们有大量以.jpg 为后缀的图片文件,而现在要将其统一改成.jpeg 后缀。
利用 Linux 强大的命令行工具,编写一个简单的脚本即可轻松实现这一操作。
1 | #!/bin/bash for file in *.jpg; do |
通过这个案例,你不仅能加深对文件操作命令的理解,还能学会如何运用脚本自动化完成重复性任务,极大提升学习的效率。
(二)系统监控:实时查看系统 “健康状态”
top 命令:实时显示进程,看哪个程序在 “吃”CPU 和内存(输入 top 后,按M按内存排序,按P按 CPU 排序)
htop:更直观的进程监控工具(需安装:sudo apt install htop),支持鼠标操作,能看进程树
df -h:查看磁盘空间使用情况(-h以人类可读格式显示,比如 1G、20G)
(三)实战项目:搭建自己的 “网络小天地”
- 搭建 Web 服务器(用 Nginx,比 Apache 更快)
1 | # 1. 安装Nginx(Ubuntu) sudo apt install nginx |
- 用 Docker 容器部署应用(像打包 “软件快递盒”)
Docker 容器这玩意牛,作为一种超轻量级且超便携的软件封装技术,它直接把应用程序及其依赖环境一股脑打包成标准化单元,真正做到了一次构建,到处能跑!
它巧妙借助 Linux 内核的命名空间和控制组技术,在操作系统层面就能轻松实现进程隔离和资源限制,既有虚拟机那种隔离的安全感,又有物理机的高效性能,启动速度杠杠的,资源占用还极少。
开发者拿 Docker 镜像(就像只读模板)能迅速创建容器实例,还能在 Docker 仓库(比如 Docker Hub)分享、分发镜像。
在持续集成 / 持续部署、微服务架构、云原生应用开发等热门场景里,Docker 那可是大显身手,完美解决不同环境不一致的麻烦,大幅提升开发、测试、部署效率,堪称现代 DevOps 和云计算的关键基础设施之一!
部分代码:
1 | # 1. 安装Docker(Ubuntu) |
少走弯路的 “秘籍”
(一)优质学习资源
- 《鸟哥的 Linux 私房菜》:经典入门书,讲得超详细,像一位耐心的老师手把手教你
- 菜鸟教程:在线练习命令,有大量案例,适合碎片化学习(https://www.runoob.com/linux)
- Stack Overflow:遇到问题直接搜,99% 的问题都有人问过,比如搜 “Linux how to change file permission”
(二)高效学习法
- 每天敲 10 个命令:不用多,贵在坚持,比如今天学ls的各种参数(ls -l, ls -a, ls -h),明天学cd的进阶用法(cd ..返回上一级,cd ~回家目录)
- 用 Linux 做日常:把电脑默认系统换成 Linux,用它写作业、看视频、写代码,在真实场景中学习,比虚拟机更有感觉
- 玩 CTF 靶场:比如 OverTheWire 的 Bandit 关卡,通过闯关学 Linux 权限、SSH 等知识,像玩游戏一样不知不觉就学会了(https://overthewire.org/wargames/bandit/)
常见的错误排查
在 Linux 的学习过程中,难免会遭遇形形色色的错误。掌握常见错误的排查方法,对于提升问题解决效率极为关键。
例如,当遇到命令无法执行的情况时,首先要仔细检查命令拼写是否正确,有无语法错误,以及当前用户是否具备执行该命令的权限。
若涉及文件操作出错,如文件无法打开、读写失败等,需确认文件路径是否准确,文件是否存在,以及文件权限设置是否合理。
网络相关错误也较为常见,诸如无法联网、网络连接不稳定等,此时可使用 ping 命令检查网络连通性,核对网络配置,包括 IP 地址、子网掩码、网关等设置。
此外,系统日志文件堪称排查错误的 “秘密武器”,/var/log 目录中存储着各类系统日志,仔细分析这些日志,往往能够找到错误的根源。
具体看下面的:
启动阶段可能出现的问题。
例如,开机时卡在 GRUB 界面无法进入系统,很可能是引导文件出现了问题。
此时,可在 GRUB 界面按下 e 键进入编辑模式,检查内核加载路径是否正确,有无明显的语法错误。
若屏幕直接黑屏无反应,则可能需要使用启动盘进入救援模式,检查 /boot 目录下的内核文件和启动配置是否完整。
曾经有一次不慎删除了 /boot/vmlinuz 文件,导致系统无法加载内核,最终通过备份恢复才得以解决。
服务启动失败也是较为常见的问题。
当使用 systemctl start 命令启动服务时,若收到 “Failed to start” 提示,首先应查看状态日志。
例如,查看系统服务日志可使用
1 | journalctl -xe |
命令,找到具体报错的那一行。曾经有一位运维人员在启动 Nginx 时遇到失败,日志中一直显示 :
1 | bind () to 0.0.0.0:80 failed |
最终发现是 80 端口被另一个进程占用,使用
1 | netstat -tunlp |
命令找到 PID 并杀掉该进程后,问题便得到了解决。
在此需要注意的是,服务启动失败的原因可能是依赖未安装、端口冲突,或者配置文件存在语法错误,如 YAML 格式的缩进错误、JSON 文件缺少逗号等,这些小细节最容易导致问题出现。
磁盘空间不足是新手经常会面临的情况。
当系统提示 “no space left on device” 时,不要急于删除文件,可先使用 df -h 命令查看哪个分区已满,再使用 du -sh /* 命令排查大文件。
曾经有用户发现 /var/log 目录占用了几十 GB 空间,原来是日志轮转配置未生效,旧日志未自动删除,清理后调整 logrotate.conf 文件即可解决。
还有一种情况是 inode 满了,此时可使用 df -i 命令查看,可能是大量小文件堆积在某个目录中,比如临时目录中的垃圾文件,找到对应的目录进行批量清理即可。
权限问题。
例如,执行命令时提示 “Permission denied”,首先应使用 ls -l 命令查看文件或目录的权限,确认当前用户是否具备读写执行权限。
若涉及操作系统文件,记得使用 sudo 获取管理员权限。曾有用户在修改 /etc/sudoers 文件时语法出错,导致 sudo 命令无法使用,最终只能通过单用户模式重置文件。
这里有个小技巧:在修改重要配置文件之前,一定要先进行备份,例如执行
1 | cp /etc/sudoers/etc/sudoers.bak |
命令,这样在出现问题时还能恢复原状。
进程异常也是导致系统卡顿的主要原因之一。
当系统突然变慢时,打开终端使用 top 或 htop 命令查看是否有占用 CPU 或内存过高的进程。
若发现某个进程状态为 D(不可中断睡眠),可能是该进程在等待磁盘 I/O,此时需要检查磁盘是否存在坏道,或者挂载的存储设备是否正常。
还有一种情况是僵尸进程堆积,可使用 ps aux | grep defunct 命令查看,虽然僵尸进程不占用资源,但数量过多会导致 PID 耗尽,此时需要找到父进程并杀掉,让 init 进程回收僵尸进程。
网络连接问题可分几步进行排查。
首先 ping 一下网关,检查网络是否连通,若不通,则检查网线是否松动、网卡驱动是否正常,可使用 ifconfig 或 ip addr 命令查看网卡状态。若能 ping 通网关但无法上网,可能是 DNS 设置错误,检查
1 | /etc/resolv.conf |
文件中的 DNS 服务器地址是否正确,或者尝试使用 8.8.8.8 这个公共 DNS 进行临时测试。
曾经有企业用户遇到服务器之间突然无法通信的情况,最终发现是 iptables 规则被误删,导致端口被封锁,重新添加允许的端口规则后,通信恢复正常。
配置文件错误。
例如,修改完 nginx.conf 文件后,可使用 nginx -t 命令测试配置,检查是否存在语法错误;编译软件时出现 “missing dependency”,则需要检查是否安装了对应的开发库,如 libcurl-devel、openssl-devel 等。
还有用户在修改环境变量时,将 /etc/profile 文件写错,导致所有用户都无法登录,最终通过恢复默认配置文件解决了问题。
在此提醒大家,修改配置文件之后,一定要分步骤进行验证,例如先重启服务,再测试功能,不要一次性将所有设置都进行修改。
内核错误
内核错误虽然较为少见,但一旦出现就较为严重。
例如,系统突然死机、频繁重启,此时需要查看内核日志 dmesg,搜索关键字 “Oops”“Panic”,这些信息能够定位到具体的硬件驱动或内核模块问题。
我有一个朋友,他公司的服务器因内存硬件故障导致内核报错,通过 memtest86 + 检测后更换内存条得以解决。
另外,在升级内核版本时,一定要先在测试环境中进行验证,以免新版本与硬件不兼容。
最后说说日志的重要性。
Linux 几乎所有组件都会记录日志,系统日志位于 /var/log/messages 或 /var/log/syslog 文件中,服务日志一般存放在 /var/log/ 服务名目录下,如:
1 | /var/log/httpd、/var/log/sshd |
学会查看日志是排查错误的关键。遇到用户登录失败时,查看
1 | /var/log/secure |
日志即可看到具体的认证错误,是密码错误还是账户被锁定。
最后,总结一下,排查 Linux 错误的核心思路为:
先观察现象,再查看日志,结合命令工具定位问题,从启动、服务、磁盘、权限、进程、网络、配置文件等方面逐步排除。
遇到不确定的操作时,先查阅文档再动手,重要数据提前备份,如此便能减少错误,高效解决问题。



