Linux初学者:从不同角度理解Linux系统
在我初学Linux系统时,虽然已经掌握了一些命令,但总觉得还是很混乱。大家新买的笔记本如果是Windows系统,那么第一件事往往就是分区,目的就是将系统和软件分开。然而Linux却没有类似于Windows分区的概念,取而代之的是挂载点。此外,Windows上安装软件一般即装即用,在linux上又有了软件依赖的概念,这更加让Linux新手摸不着头脑了。Linux的众多发行版也让Linux小白们陷入了选择困难症。虽然Linux发行版众多,但都万变不离其宗。下面从几个不同的角度来描述Linux系统来加深理解。
1.从linux软件包和运行库的依赖关系来看
Linux系统总体来说由四部分组成:kernel,glibc,shell,applications。

Linux最重要的便是kernel与glibc库了。kernel的功能是与硬件进行交互,是Linux系统与硬件交互的纽带。下来就是glibc库,几乎所有的软件都会依赖glibc库。在编译LFS(Linux from scratch)时,glibc库是也最先要编译的组件之一。再向上一层就是软件应用了。这里的Shell就是一个人机交互接口,它可以分为两种:字符终端和GUI。Shell里面的运行的就是各种软件。
2.从文件系统的层次上来看
Linux的思想为:一切皆文件。那么,从linux的文件系统上来看,也许能够更加深刻理解linux系统。如下图所示:

Linux的文件系统管理是通过虚拟文件系统(VFS)来完成的。Linux的文件系统不仅限于储存文件的磁盘,而是包括所有可以通过文件进行访问的内容。例如,磁盘文件访问使用ext4文件系统,目录访问使用rootfs,内核访问使用proc,内存文件使用tmpfs,设备访问使用sysfs等等。Linux将所要访问的目标以适当的文件系统的形式挂载到目录当中,以便进行操作。可以这样理解:假如你需要访问内核中的内容,但是没办法直接访问,所以内核可以通过VFS,将其以proc文件系统形式挂载到proc目录,这样便可以访问内核了。总之,最重要的一点,这里的proc,rootfs,ext4,xfs这些都是文件系统类型,不要将proc视为目录。
3.从根文件系统目录结构上来看
Linux的目录是很条理的,在某种程度上说,比Windows的目录更加条理。Linux的根文件系统是linux系统运行的基础。根文件系统(rootfs)提供了一个内核与磁盘文件相互通信的桥梁。根文件系统确保了所有文件拥有共同的起始路径/。根文件系统的目录结构基本上按照FHS(Filesystem Hierarchy Standard)标准来设置。在Linux系统根目录下包含以下几个目录:/boot, /bin, /dev, /etc, /home, /lib, /lib64, /media, /mnt, /opt, /proc, /root, /run, /sbin, /srv, /sys, /tmp, /usr, /var。其中一些目录为链接:
/bin==>/usr/bin/sbin==>/usr/sbin/lib==>/usr/lib/lib64==>/usr/lib64
每个目录的基本作用:
| 目录 | 作用 |
|---|---|
| /boot | 系统启动相关文件,如内核、initramfs,以及grub(bootloader) |
| /dev | 设备文件。文件系统类型为udev |
| /etc | 软件配置文件目录 |
| /lib | 库文件 |
| /opt | 可选目录(第三方软件安装目录,比如我会把MATLAB和texlive安装到这里) |
| /proc | 原来为空,系统启动后内核会将自己的信息映射到此文件夹中(内容是动态的,包括进程信息,以及内核状态信息等),文件系统类型为proc |
| /sys | 原来为空,跟硬件设备相关的属性映射文件,即内核与硬件之间的信息,类型为sysfs |
| /bin | 用户命令(链接到/usr/bin) |
| /sbin | 管理命令(链接到/usr/sbin) |
| /usr | 全局共享目录,系统应用程序都在这里面 |
| /run | 进程信息。类型为tmpfs |
4.从系统启动过程来看
Linux系统启动过程如下:

其实很简单,grub引导内核然后加载initramfs,执行systemd初始化程序,然后切换到真实根目录,再次接着systemd初始化,最后完成系统启动。
5.从系统应该包含的功能上看
操作系统需要实现众多的功能才能称之为一个完整的操作系统。Linux系统功能大致分为一下几个方面:
- 设备管理:设备的识别,udev,设备文件的特点,常见设备,虚拟设备
- 磁盘管理:磁盘识别,分区,文件系统,lvm和raid,磁盘管理命令和软件
- 文目管理:文件和目录的创建,文件访问时间,文件查找,压缩归档
- 进程管理:进程查看,后台进程,进程杀死
- 权限管理:文件访问权限,特殊权限位,文件访问控制列表,sudo
- 用户管理:用户和用户组的添加,修改,删除。
- 软件管理:软件安装,查找;软件源的配置;软件编译
- 网络管理:网络状态查看,网卡配置,路由信息
- 人机交互:bash基本语法及配置文件
- 服务管理:systemd,linux常用服务安装及配置。这个内容比较多,比如lamp环境搭建,ftp服务器搭建,samba共享服务,rsyslog日志服务等等。每个展开都是一本书。
6.总结
可以这样说,从来不存在什么“Linux系统”,存在的只是一堆文件和一个内核。然而就是这个内核和这些文件有机的组织在一起才形成了Linux系统。Linux系统管理就是配置和使用一系列软件,实现我们想要的功能,并对其进行维护的过程。Linux核心思想便是一切皆文件。所有的问题从文件入手,即可迎刃而解。
Linux初学者:从不同角度理解Linux系统的更多相关文章
- Linux内存管理(深入理解Linux内核)
Linux的内存管理,实际上是借助80x86的硬件分段和分页电路,将逻辑地址转化为物理地址的. 物理内存中,有一部分是一直(Permanently)映射给内核使用的,这部分主要用于保存内核的代码,以及 ...
- 献给初学者:谈谈如何学习Linux操作系统
本文出自 “技术成就梦想” 博客,请务必保留此出处http://ixdba.blog.51cto.com/2895551/569329. 为了能把这篇不错的文章分享给大家.所以请允许我暂时用原创的形式 ...
- 针对于linux初学者的学习(摘自网络端)
一. 选择适合自己的Linux发行版谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他 ...
- linux初学者-磁盘拉伸缩减篇
linux初学者-磁盘拉伸缩减篇 在系统的使用过程中,往往会出现这样的问题,由于刚开始无法估计需要的磁盘空间,导致后期磁盘空间不够,使得数据没地方存储,又或者后期磁盘空间过大,造成资源的浪费.这种在使 ...
- 从需求的角度去理解Linux系列:总线、设备和驱动
笔者成为博客专家后整理以前原创的嵌入式Linux系列博文,现推出以让更多的读者受益. <从需求的角度去理解linux系列:总线.设备和驱动>是一篇有关如何学习嵌入式Linux系统的方法论文 ...
- 深入理解linux系统下proc文件系统内容
深入理解linux系统下proc文件系统内容 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统. Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它 ...
- 读书笔记之Linux系统编程与深入理解Linux内核
前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...
- 理解Linux系统中的load average
理解Linux系统中的load average(图文版) 博客分类: Linux linux load nagios 一.什么是load average? linux系统中的Load对当前CPU工作 ...
- 深入理解linux系统的目录结构(总结的非常详细)
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
随机推荐
- jQuery <= 1.11.3 DomXSS漏洞
听团里说WordPress又爆跨站漏洞了:" XSS漏洞在Jetpack和二十五默认主题影响百万WordPress用户 ",分析发现原来是jQuery老版本的DOM XSS漏洞[错 ...
- ecshop二次开发秒杀、限时折扣、清仓等功能
限时抢购,秒杀商品的二次开发 1,先在后台admin/templates 中找goods_info.htm文件到促销部分,改为一个下拉列表的分别是促销,限时,秒杀,值分别是1,2,3这样,代码如下: ...
- WPF实现统计图(饼图仿LiveCharts)
WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织 每日一笑 下班和实习生一起回家,公交站等车,一乞丐把碗推向实习生乞讨.这时,实习生不慌不忙的说了句:&qu ...
- Superior Scheduler:带你了解FusionInsight MRS的超级调度器
摘要:Superior Scheduler是一个专门为Hadoop YARN分布式资源管理系统设计的调度引擎,是针对企业客户融合资源池,多租户的业务诉求而设计的高性能企业级调度器. 本文分享自华为云社 ...
- requirejs的加载原理 - 场景1. 定义一个require依赖a模块
我们学习一个新的技术,熟练的使用之后,就应该去探索它的原理.这篇文章我们来探索下requirejs的原理. 从4个场景来探索requirejs的原理 场景1. 定义一个require依赖b模块 场景2 ...
- Spring Boot引入Swagger并对界面进行美化
Swagger是一个接口文档生成工具,在前后端分离的开发中经常会用到,下面就来介绍下Swagger的使用: 引入依赖 <dependency> <groupId>io.spri ...
- 洛谷3233 HNOI2014(虚树+dp)
膜拜一发\(mts\_246,forever\_shi\) 这两位爷是真的无敌! 首先来看这个题,一看题目的数据范围和"关键点"字眼,我们就能得知这是一道虚树题 那就先一如既往的建 ...
- GoLang设计模式11 - 备忘录模式
备忘录模式是一种行为型设计模式.这种模式允许我们保存对象在某些关键节点时的必要信息,以便于在适当的时候可以将之恢复到之前的状态.通常它可以用来帮助设计撤销/恢复操作. 下面是备忘录设计模式的主要角色: ...
- PAT (Basic Level) Practice (中文)1026 程序运行时间 (15分)
1026 程序运行时间 (15分) 要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费 ...
- dubbo注册中心占位符无法解析问题
dubbo注册中心占位符无法解析问题 1.背景 最近搞了2个老项目,想把他们融合到一起.这俩项目情况简介如下: 项目一:基于SpringMVC + dubbo,配置读取本地properties文件,少 ...