【Linux】零基础入门:一篇吃透操作系统核心概念

【Linux】零基础入门:一篇吃透操作系统核心概念
在这里插入图片描述
👋 大家好,欢迎来到我的技术博客!
📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。
🎯 本文将围绕Linux这个话题展开,希望能为你带来一些启发或实用的参考。
🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获!

文章目录

【Linux】零基础快速认识 Linux 操作系统 🐧

“Talk is cheap. Show me the code.” —— Linus Torvalds
Linux 不仅是一个操作系统,更是一种自由、开放与协作的精神。无论你是程序员、运维工程师、数据科学家,还是普通用户,掌握 Linux 都将为你打开通往技术世界的大门。

什么是 Linux?🌍

Linux 是一个免费开源的类 Unix 操作系统内核(Kernel),由芬兰程序员 Linus Torvalds 在 1991 年首次发布。它本身只是一个内核,但通常我们所说的 “Linux 系统” 实际上是指基于 Linux 内核 + GNU 工具 + 各种软件构成的完整操作系统,例如 Ubuntu、CentOS、Debian、Fedora 等。这类系统也常被称为 GNU/Linux

Linux 的核心特点 ✨

  • 开源免费:源代码公开,任何人都可以查看、修改和分发。
  • 多用户多任务:支持多个用户同时登录并运行多个程序。
  • 稳定性强:服务器常年运行不宕机,是互联网基础设施的基石。
  • 安全性高:权限管理严格,病毒和恶意软件极少。
  • 高度可定制:从桌面环境到内核参数,几乎一切皆可配置。
  • 跨平台支持:可在 x86、ARM、RISC-V 等多种架构上运行。
💡 你知道吗?全球超过 90% 的云计算基础设施(包括 AWS、Google Cloud、阿里云)都运行在 Linux 上。Android 手机底层也是基于 Linux 内核!

Linux 与 Windows/macOS 有什么区别?🔄

特性WindowsmacOSLinux
开源❌ 闭源❌ 闭源(部分开源)✅ 完全开源
成本💰 商业授权💰 购买 Mac 设备🆓 免费
定制性中等极高
命令行体验PowerShell / CMD(较弱)Terminal(基于 BSD)Bash/Zsh(强大)
软件生态丰富(尤其游戏/办公)优秀(创意类软件)开发/服务器领域无敌
安全性易受病毒攻击较安全极其安全
📌 提示:Linux 并不是“取代” Windows 或 macOS,而是提供一种更可控、更高效、更适合开发者的操作环境。

常见的 Linux 发行版(Distributions)📦

Linux 内核本身不能直接使用,需要搭配用户空间工具(如 Shell、文件系统、图形界面等)。这些组合体称为 发行版(Distribution)。以下是几个主流发行版:

1. Ubuntu 🟣

  • 基于 Debian,适合新手。
  • 每 6 个月发布新版本,每 2 年发布 LTS(长期支持)版本。
  • 官网:https://ubuntu.com

2. CentOS / Rocky Linux 🟤

  • 原 CentOS 是 Red Hat Enterprise Linux(RHEL)的免费克隆版。
  • 2021 年后 CentOS 停止传统支持,社区转向 Rocky LinuxAlmaLinux
  • 官网:https://rockylinux.org

3. Debian 🟦

  • 稳定、可靠,是许多发行版的“祖先”。
  • 更新较慢,但极其稳定。
  • 官网:https://www.debian.org

4. Arch Linux ⚫

  • 滚动更新,极简主义,适合高级用户。
  • “自己动手组装”的哲学。
  • 官网:https://archlinux.org

5. Fedora 🟥

  • 由 Red Hat 赞助,前沿技术试验田。
  • GNOME 桌面默认,更新快。
  • 官网:https://getfedora.org
🔗 推荐阅读:DistroWatch - 实时统计各发行版人气

如何开始使用 Linux?💻

你不需要立刻放弃 Windows 或 macOS!有几种方式可以轻松入门:

方式一:使用虚拟机(推荐新手)🛠️

  • 安装 VirtualBoxVMware Workstation Player(免费)。
  • 下载 Ubuntu ISO 镜像,在虚拟机中安装。
  • 优点:安全、隔离、可随时删除。

方式二:WSL(Windows Subsystem for Linux)🧩

安装命令(以管理员身份运行 PowerShell):

wsl --install -d Ubuntu 

方式三:双系统启动 🖥️

  • 分区硬盘,同时安装 Windows 和 Linux。
  • 需要一定动手能力,但性能最佳。

方式四:云服务器 🌐

  • 注册阿里云、腾讯云、AWS 等,创建一台 Linux 云主机(如 Ubuntu 22.04)。
  • 通过 SSH 远程连接学习。
  • 成本低至每月几元人民币。
✅ 建议:初学者从 Ubuntu + WSL虚拟机 开始,避免“踩坑”。

初识 Linux 终端(Terminal)⌨️

Linux 的灵魂在于 命令行。虽然现代发行版都有图形界面,但真正的效率来自终端。

打开终端

  • Ubuntu:Ctrl + Alt + T
  • macOS:Terminal 应用
  • WSL:在开始菜单搜索 “Ubuntu”

第一个命令:echo "Hello, Linux!" 🌟

$ echo"Hello, Linux!" Hello, Linux!
$ 表示普通用户提示符,# 表示 root(超级用户)提示符。

基础命令速览 🚀

以下是最常用的基础命令,建议逐个尝试:

1. pwd — 查看当前目录

$ pwd /home/yourname 

2. ls — 列出文件和目录

$ ls Documents Downloads Music Pictures $ ls -l # 详细列表 $ ls -a # 显示隐藏文件(以 . 开头)

3. cd — 切换目录

$ cd /home $ cd..# 返回上一级 $ cd ~ # 回到家目录(等价于 cd) $ cd - # 切换到上一个目录

4. mkdir — 创建目录

$ mkdir my_folder 

5. touch — 创建空文件

$ touch hello.txt 

6. cat — 查看文件内容

$ echo"Linux is awesome!"> note.txt $ cat note.txt Linux is awesome!

7. cp / mv / rm — 复制、移动、删除

$ cp file1.txt file2.txt # 复制 $ mv file1.txt new_name.txt # 移动或重命名 $ rm old_file.txt # 删除文件 $ rm -r old_folder # 递归删除目录(⚠️ 谨慎!)
⚠️ 警告:rm 命令不可恢复!没有回收站概念。

文件系统结构 🗂️

Linux 的文件系统是树状结构,根目录为 /。所有设备、分区、网络资源都挂载在 / 下。

常见目录说明:

目录用途
/根目录
/bin基础命令(如 ls, cp)
/sbin系统管理命令(如 ifconfig, reboot)
/etc配置文件(如 network, ssh)
/home用户家目录(如 /home/alice)
/rootroot 用户的家目录
/tmp临时文件(重启后清空)
/var可变数据(日志、邮件、数据库)
/usr用户程序和只读数据
/dev设备文件(如 /dev/sda 表示硬盘)
/proc虚拟文件系统,反映内核和进程状态
/sys硬件和驱动信息
📌 记住:一切皆文件(Everything is a file)——这是 Unix/Linux 的哲学。

用户与权限管理 👤

Linux 是多用户系统,每个文件都有所有者权限

查看用户信息

$ whoami alice $ iduid=1000(alice)gid=1000(alice)groups=1000(alice),4(adm),24(cdrom)... 

文件权限详解

$ ls -l hello.txt -rw-r--r-- 1 alice alice 0 Jan 110:00 hello.txt 
  • 第一位 -:文件类型(-=普通文件,d=目录,l=链接)
  • 接下来 9 位:rw-r--r--
    • 前3位 rw-:所有者权限(读+写)
    • 中3位 r--:所属组权限(只读)
    • 后3位 r--:其他用户权限(只读)

权限符号:

  • r = read(4)
  • w = write(2)
  • x = execute(1)

修改权限:chmod

$ chmod755 script.sh # 所有者 rwx,组和其他 rx $ chmod u+x script.sh # 给所有者加执行权限

切换用户:sudosu

$ sudoapt update # 临时以 root 权限执行 $ su - # 切换到 root(需密码)
🔐 安全提示:不要长期使用 root 账户!用 sudo 即可。

软件包管理 📦

Linux 不像 Windows 那样到处下载 .exe,而是通过包管理器统一安装软件。

Debian/Ubuntu 系:apt

$ sudoapt update # 更新软件源列表 $ sudoaptinstallgit# 安装 git $ sudoapt remove git# 卸载 git $ sudoapt upgrade # 升级所有已安装软件

RHEL/CentOS/Rocky 系:dnf(或旧版 yum

$ sudo dnf install nginx $ sudo dnf remove nginx 

Arch 系:pacman

$ sudo pacman -S firefox 
💡 包管理器的优势:自动解决依赖、一键卸载、版本统一、安全校验。

文本编辑器:Vim 入门 ✍️

在服务器上,图形界面往往不可用,因此必须掌握命令行编辑器。Vim 是最经典的之一。

启动 Vim

$ vim myfile.txt 

基本操作

  • 默认进入 普通模式(Normal Mode)
  • i 进入 插入模式(Insert Mode),可输入文字
  • Esc 回到普通模式
  • 输入 :wq 保存并退出
  • 输入 :q! 强制退出不保存
🎮 小游戏:在终端运行 vimtutor,这是官方交互式教程!

如果你觉得 Vim 太难,也可以先用 nano

$ nano myfile.txt # Ctrl+O 保存,Ctrl+X 退出

进程管理 🔄

Linux 中运行的程序称为进程(Process)

查看进程:pstop

$ ps aux |grep firefox # 查找 firefox 进程 $ top# 实时监控进程(按 q 退出) $ htop# 更友好的 top(需安装)

终止进程:kill

$ kill1234# 终止 PID 为 1234 的进程 $ kill -9 1234# 强制终止(谨慎使用)

后台运行:&nohup

$ ./long_script.sh &# 后台运行 $ nohup ./server.sh &# 关闭终端后仍运行

网络基础 🌐

Linux 是网络操作系统的王者。

查看 IP 地址

$ ip addr show # 或旧命令 $ ifconfig

测试网络连通性

$ ping google.com $ curl https://httpbin.org/ip # 查看公网 IP

SSH 远程登录

$ ssh [email protected] # 首次连接会提示确认指纹
🔐 安全建议:生产环境禁用 root 登录,使用密钥认证。

Shell 脚本入门 📜

Shell 脚本是自动化任务的核心工具。

编写第一个脚本

$ nano hello.sh 

内容:

#!/bin/bashecho"Today is $(date)"echo"You are logged in as $(whoami)"

赋予执行权限并运行:

$ chmod +x hello.sh $ ./hello.sh 

输出示例:

Today is Sun Jan 4 10:30:00 CST 2026 You are logged in as alice 

常见控制结构

#!/bin/bash# 条件判断if[ -f /etc/os-release ];thenecho"This is a Linux system."fi# 循环foriin{1..5};doecho"Count: $i"done
📌 脚本扩展名通常为 .sh,但不是必须的。

环境变量与 PATH 🧭

环境变量影响程序运行行为。

查看环境变量

$ echo$HOME /home/alice $ echo$PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 

设置临时变量

$ MY_VAR="Hello" $ echo$MY_VAR Hello 

永久添加 PATH(以 Bash 为例)

编辑 ~/.bashrc

exportPATH=$PATH:/my/custom/bin 

然后重载:

$ source ~/.bashrc 

日志系统 📖

Linux 系统日志存放在 /var/log/

常用日志文件:

  • /var/log/syslog(Debian/Ubuntu)或 /var/log/messages(RHEL)
  • /var/log/auth.log:登录认证日志
  • /var/log/dmesg:内核启动日志

查看日志:

$ tail -f /var/log/syslog # 实时跟踪日志 $ journalctl -u nginx # systemd 服务日志(现代系统)

系统服务管理(systemd)⚙️

现代 Linux 使用 systemd 管理服务。

常用命令

$ sudo systemctl start nginx # 启动服务 $ sudo systemctl stop nginx # 停止 $ sudo systemctl restart nginx # 重启 $ sudo systemctl status nginx # 查看状态 $ sudo systemctl enable nginx # 开机自启 $ sudo systemctl disable nginx # 取消自启

查看所有服务

$ systemctl list-units --type=service --state=running 

文件查找与文本处理 🔍

查找文件:find

$ find /home -name "*.txt"# 查找所有 .txt 文件 $ find. -mtime -7 # 7 天内修改过的文件

查找文本:grep

$ grep"error" /var/log/syslog # 在日志中找 error $ grep -r "TODO" ~/projects/ # 递归搜索 $ ps aux |grepssh# 管道 + grep

文本处理三剑客:awk / sed / cut

# 提取第二列 $ echo"apple 10 red"|awk'{print $2}'10# 替换文本 $ echo"hello world"|sed's/world/Linux/' hello Linux # 按分隔符切分 $ echo"name:age:city"|cut -d':' -f1 name 

磁盘与文件系统 💾

查看磁盘使用情况

$ df -h # 磁盘空间 $ du -sh /home # 目录大小

挂载 U 盘或硬盘

$ sudomkdir /mnt/usb $ sudomount /dev/sdb1 /mnt/usb $ sudoumount /mnt/usb 
📌 注意:设备名如 /dev/sda, /dev/sdb 可通过 lsblk 查看。

安全基础 🔒

防火墙:ufw(Ubuntu)或 firewalld(RHEL)

$ sudo ufw enable $ sudo ufw allow 22/tcp # 开放 SSH $ sudo ufw status verbose 

用户密码策略

$ sudopasswd alice # 修改用户密码 $ chage -l alice # 查看密码过期信息

SELinux / AppArmor

  • RHEL 系使用 SELinux(安全增强型 Linux)
  • Ubuntu 使用 AppArmor
  • 初学者可暂时关闭(不推荐生产环境)

Linux 内核与模块 🧠

内核是操作系统的核心。你可以动态加载/卸载内核模块。

$ lsmod # 列出已加载模块 $ modinfo e1000 # 查看网卡驱动信息 $ sudo modprobe usb_storage # 加载 USB 存储模块

图形界面(GUI)与桌面环境 🖼️

虽然命令行强大,但 Linux 也有优秀的图形界面:

  • GNOME:现代、简洁(Ubuntu 默认)
  • KDE Plasma:功能丰富、高度可定制
  • XFCE / LXDE:轻量级,适合老电脑

安装桌面(以 Ubuntu Server 为例):

$ sudoaptinstall ubuntu-desktop # GNOME $ sudoaptinstall kde-plasma-desktop # KDE

开发环境搭建 💻

Linux 是开发者的天堂。

安装 Git

$ sudoaptinstallgit $ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"

安装 Python

$ sudoaptinstall python3 python3-pip $ pip3 install requests flask 

安装 Docker

$ sudoaptinstall docker.io $ sudousermod -aG docker$USER# 免 sudo 使用 $ docker run hello-world 
🐳 Docker 官方文档:https://docs.docker.com/engine/install/ubuntu/

故障排查思路 🛠️

遇到问题怎么办?

  1. 看错误信息:终端输出往往包含关键线索。
  2. 查日志/var/log/journalctl
  3. 搜索:复制错误信息到 Google 或 Stack Overflow
  4. 最小化复现:能否用简单命令重现问题?
  5. 社区求助:Reddit 的 r/linuxquestions、中文社区如 V2EX。
🌐 Stack Overflow 是全球最大的编程问答网站,99% 的 Linux 问题都能找到答案。

学习资源推荐 📚


Linux 生态图谱(Mermaid 图表)📊

下面是一个简化的 Linux 技术生态关系图:

Linux Kernel

GNU Tools

Shell: Bash/Zsh

File Systems: ext4, XFS, Btrfs

Coreutils: ls, cp, mv...

Scripting & Automation

Device Drivers

Hardware: CPU, GPU, NIC

Desktop Environments

GNOME

KDE Plasma

XFCE

Package Managers

APT - Debian/Ubuntu

YUM/DNF - RHEL

Pacman - Arch

Systemd

Service Management

Logging: journald

Mount Management

Development

Git

Docker

Python/Node.js/Rust

✅ 此图表展示了 Linux 内核如何与上层工具、服务、开发环境协同工作。

结语:拥抱开源,掌控你的计算机 🌈

Linux 不仅仅是一个操作系统,它代表了一种自主、透明、协作的技术文化。从你的第一行 echo 命令开始,你就已经踏上了成为技术主人的道路。

不要害怕命令行,不要畏惧报错。每一个 Linux 高手,都曾无数次面对 Permission deniedcommand not found。正是这些“失败”,塑造了你的技术直觉。

🐧 今天,就打开终端,输入:

阅读手册,探索未知。Linux 的世界,欢迎你!

延伸思考

  • 为什么 Linux 在服务器领域占据绝对优势?
  • 开源 vs 闭源,各自的利弊是什么?
  • 如果让你设计一个 Linux 发行版,你会怎么做?
🌟 记住:你不是在“使用” Linux,你是在“参与” Linux。

Happy Hacking! 💻✨


🙌 感谢你读到这里!
🔍 技术之路没有捷径,但每一次阅读、思考和实践,都在悄悄拉近你与目标的距离。
💡 如果本文对你有帮助,不妨 👍 点赞、📌 收藏、📤 分享 给更多需要的朋友!
💬 欢迎在评论区留下你的想法、疑问或建议,我会一一回复,我们一起交流、共同成长 🌿
🔔 关注我,不错过下一篇干货!我们下期再见!✨

Read more

基于C++11手撸前端Promise

基于C++11手撸前端Promise

文章导航 * 引言 * 前端Promise的应用与优势 * 常见应用场景 * 并发请求 * Promise 解决的问题 * 手写 C++ Promise 实现 * 类结构与成员变量 * 构造函数 * resolve 方法 * reject 方法 * then 方法 * onCatch 方法 * 链式调用 * 使用示例 * `std::promise` 与 `CProimse` 对比 * 1. 基础功能对比 * 2. 实现细节对比 * (1) 状态管理 * (2) 回调注册与执行 * (3) 异步支持 * (4) 链式调用 * 3. 代码示例对比 * (1) `CProimse` 示例 * (2) `std::promise` 示例 * 4.

By Ne0inhk

Web 服务与 I/O 模型

一、Web 服务介绍 1.1.1 Apache prefork 模型(预派生模式) * 核心机制:主控制进程派生多个独立子进程,使用select模型,最大并发 1024;每个子进程单线程响应用户请求 * 资源特性:占用内存较多,但稳定性极高 * 配置特点:可设置进程数的最大值和最小值 * 适用场景:访问量中等的场景 * 优缺点 * ✅ 优点:极致稳定,故障隔离性好 * ❌ 缺点:每个请求对应一个进程,资源占用高,并发能力弱,不适合高并发场景 1.1.2 Apache worker 模型(多进程 + 多线程混合模式) * 核心机制:主进程启动多个子进程,每个子进程包含固定线程数;线程处理请求,线程不足时新建子进程补充 * 资源特性:相比 prefork 内存占用更少,支持更高并发

By Ne0inhk
哈希的介绍

哈希的介绍

1. unordered系列关联式容器     下面来看哈希,首先看关联式容器unorder_map和unorder_set,它们底层是哈希表,用法和map set一样。下面浅浅过一下,它是单向迭代器,因为没有rbegin和rend。也就是红黑树和哈希表实现的map和set用法几乎相同,区别是:1.unorder系列是单向迭代器。2.unorder系列遍历出来不是有序的。下面演示一下: 它只能去重,不能排序,它也是有multi版本的。再演示一下unorder_map: 2.哈希     下面正式看哈希,什么是哈希呢?我们以前遇到的搜索有这样几类:首先是暴力查找,在一个数组里都查,这样非常慢。于是有人衍生出了有序数组的二分查找,但它的前提是排序,而且增删查改不方便,过程中为了保证有序会涉及大量的数据挪动。因此衍生出了平衡搜索树,此时基础上又出现了新的搜索,这种搜索叫哈希(散列)。它的本质是存储的值跟存储位置建立出一个映射关系,什么意思呢,先来看一个计数排序的样例: 有上面这样的一组值,最小的值是15,最大的值是30,总共开了16个空间。然后存映射关系(次数),15映射第一个位

By Ne0inhk