新手小白的 Linux 学习:从基础到开始

认识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  # 更新所有软件  

(三)网络配置:

让系统连上 “互联网高速公路”。

实战:配置静态 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
2
3
4
#!/bin/bash  for file in *.jpg; do  
# 遍历所有.jpg文件 newname="${file%.jpg}.jpeg"
# 替换扩展名 mv "$file" "$newname"
# 重命名 echo "已将$file重命名为$newname" done

通过这个案例,你不仅能加深对文件操作命令的理解,还能学会如何运用脚本自动化完成重复性任务,极大提升学习的效率。

二)系统监控:实时查看系统 “健康状态”

  • top 命令:实时显示进程,看哪个程序在 “吃”CPU 和内存(输入 top 后,按M按内存排序,按P按 CPU 排序)

  • htop:更直观的进程监控工具(需安装:sudo apt install htop),支持鼠标操作,能看进程树

  • df -h:查看磁盘空间使用情况(-h以人类可读格式显示,比如 1G、20G)

(三)实战项目:搭建自己的 “网络小天地”

  1. 搭建 Web 服务器(用 Nginx,比 Apache 更快)
1
2
3
# 1. 安装Nginx(Ubuntu)  sudo apt install nginx  
# 2. 启动服务(浏览器输入服务器IP,会看到Nginx欢迎页) sudo systemctl start nginx sudo systemctl enable nginx # 设置开机自启
# 3. 自定义网页(把你的HTML文件放到/var/www/html/目录下) echo "<h1>这是我的第一个Linux网页!</h1>" | sudo tee /var/www/html/index.html
  1. 用 Docker 容器部署应用(像打包 “软件快递盒”)

Docker 容器这玩意牛,作为一种超轻量级且超便携的软件封装技术,它直接把应用程序及其依赖环境一股脑打包成标准化单元,真正做到了一次构建,到处能跑!

它巧妙借助 Linux 内核的命名空间和控制组技术,在操作系统层面就能轻松实现进程隔离和资源限制,既有虚拟机那种隔离的安全感,又有物理机的高效性能,启动速度杠杠的,资源占用还极少。

开发者拿 Docker 镜像(就像只读模板)能迅速创建容器实例,还能在 Docker 仓库(比如 Docker Hub)分享、分发镜像。

在持续集成 / 持续部署、微服务架构、云原生应用开发等热门场景里,Docker 那可是大显身手,完美解决不同环境不一致的麻烦,大幅提升开发、测试、部署效率,堪称现代 DevOps 和云计算的关键基础设施之一!

部分代码:

1
2
3
4
5
# 1. 安装Docker(Ubuntu)  
sudo apt install docker.io sudo systemctl start docker
# 2. 运行一个MySQL容器(数据库放进去)
docker run -d \ --name mydb \ -p 3306:3306 \ # 把容器的3306端口映射到主机 -e MYSQL_ROOT_PASSWORD=123456 \ # 设置root密码 mysql:latest # 使用最新版MySQL镜像
# 3. 连接数据库(用MySQL客户端,输入密码123456)

少走弯路的 “秘籍”

(一)优质学习资源

  1. 《鸟哥的 Linux 私房菜》:经典入门书,讲得超详细,像一位耐心的老师手把手教你
  2. 菜鸟教程:在线练习命令,有大量案例,适合碎片化学习(https://www.runoob.com/linux)
  3. Stack Overflow:遇到问题直接搜,99% 的问题都有人问过,比如搜 “Linux how to change file permission”

(二)高效学习法

  1. 每天敲 10 个命令:不用多,贵在坚持,比如今天学ls的各种参数(ls -l, ls -a, ls -h),明天学cd的进阶用法(cd ..返回上一级,cd ~回家目录)
  2. 用 Linux 做日常:把电脑默认系统换成 Linux,用它写作业、看视频、写代码,在真实场景中学习,比虚拟机更有感觉
  3. 玩 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 进程回收僵尸进程。

网络连接问题可分几步进行排查。

【Linux】网络诊断 ping命令详解_linux ping-CSDN博客

首先 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 错误的核心思路为:

先观察现象,再查看日志,结合命令工具定位问题,从启动、服务、磁盘、权限、进程、网络、配置文件等方面逐步排除。

遇到不确定的操作时,先查阅文档再动手,重要数据提前备份,如此便能减少错误,高效解决问题。