• Linux 教程学习笔记


    本文石墨链接:https://shimo.im/docs/pD68dP3PP9PxwKj3

    本文全部整理自:
    Linux 系统启动过程 | 菜鸟教程 https://www.runoob.com/linux/linux-system-boot.html

    一、Linux 系统启动过程

    1、分为 5 个阶段

    1. 内核的引导
      打开电源 → BIOS 开机自检 → 按 BIOS 中设置的启动设备(通常是硬盘)来启动→ 操作系统接管硬件 → 首先读入 /boot 目录下的内核文件。
    2. 运行 init
    3. init 进程
      init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。
      init 程序首先读取配置文件 /etc/inittab。
    4. 运行级别(7 个:0-6。)
      Linux 允许为不同的场合,分配不同的开机启动程序,这就叫做 "运行级别"(runlevel)。
      也就是说,启动时根据 "运行级别",确定要运行哪些程序。
    5. 系统初始化
    6. init 的配置文件执行/etc/rc.d/rc.sysinit
      主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。
    7. rc.sysinit中l5:5:wait:/etc/rc.d/rc 5
    • 以 5 为参数运行 /etc/rc.d/rc,/etc/rc.d/rc 是一个 Shell 脚本,它接受 5 作为参数,去执行 /etc/rc.d/rc5.d/ 目录下的所有的 rc 启动脚本。
    • /etc/rc.d/rc5.d/ 目录中的这些启动脚本实际上都是一些连接文件,而不是真正的 rc 启动脚本,真正的 rc 启动脚本实际上都是放在 /etc/rc.d/init.d/ 目录下。
    1. 建立终端
    2. rc 执行完毕后,返回 init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。
    3. init 接下来会打开 6 个终端,以便用户登录系统。
      注:为什么会是6个终端?
    4. 用户登录系统
    5. 登录方式有三种
      1. 命令行登录
        2. ssh 登录
        3. 图形界面登录

    2、Linux 关机

    正确的关机流程为:sync > shutdown > reboot > halt。

    3、shell、操作系统、内核的关系

    • 操作系统是一个整体,包括shell、内核和其他没说明的东西;
    • 内核是操作系统最重要的部分;
    • shell 是用户交互界面。

    4、参考:

    shell、操作系统、内核是一个东西吗-知乎 https://www.zhihu.com/question/37695460

    二、Linux 系统目录结构

    图片

    每个目录的作用直接看原文吧,没必要重复整理。

    Linux 系统目录结构 | 菜鸟教程 https://www.runoob.com/linux/linux-system-contents.html

    三、Linux 文件基本属性

    1、Linux文件属性

    图片

    注:"-" 字符表示没有权限。

    文件类型还有:

    • d表示目录
    • -表示文件
    • l表示链接文档 (link file)
    • b表示装置文件里面的可供储存的接口设备 (可随机存取装置)
    • c表示装置文件里面的串行端口设备,例如键盘、鼠标 (一次性读取装置)

    2、Linux用户的划分。

    在 Linux 系统中,用户是按组分类的,一个用户属于一个或多个组。(一个而用户必定属于一个组么?有没有不属于任何组的用户?)

    • 用户自身(对文件所有者来说,又叫属主)
    • 同组用户(对文件所有者来说,又叫属主)
    • 其他用户(对文件所有者来说,就是其他组的用户和其他用户)

    root 用户来说,一般情况下,文件的权限对其不起作用。

    3、更改文件属性:

    见原文。注意用数字更改文件属性,很精妙的一种实现。

    四、Linux 文件与目录管理

    1、绝对路径和相对路径

    • 绝对路径:以/开始
    • 相对路径:不以/开始
      • ..表示父级
      • .表示自己

    2、常用命令说明

    文件和目录操作

    ls
    cd
    pwd
    mkdir
    redir
    cp
    rm
    mv
    
    • 注意命令对于文件和目录的操作不同,有时候对文件和目录需要不同的选项。

    文件查看

    cat
    tac
    nl
    more
    less
    head
    tail
    

    五、Linux 用户和用户组管理

    1、用户管理

    • 添加新用户:useradd
    • 删除帐号:userdel
    • 修改帐号:usermod
    • 密码(口令)管理:passwd

    2、用户组管理:

    • 添加用户组:groupadd
    • 删除用户组:groupdel
    • 修改用户组的属性:groupmod
    • 用户切换用户组:newgrp

    用户组的属性:组标识号、组名

    组标识号(GID)是什么?同用户号。多个组名可以有同一个组标识号。Linux系统内部实际是根据组标识号进行区分的。

    3、用户的属性和常用文件解读

    用户名,用户主目录,用户组,用户附加组,用户登录Shell,用户号,口令,注释性描述

    • 用户名
    • 用户标识号:
      • 一般情况下它与用户名是一一对应的。
      • 如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录 Shell 等。
    • 主目录:用户的起始工作目录。
    • 用户登录Shell
      • 什么是Shell?
        • Shell 是用户与 Linux 系统之间的接口。
        • Linux 的 Shell 有许多种,每种都有不同的特点。常用的有 sh (Bourne Shell), csh (C Shell), ksh (Korn Shell), tcsh (TENEX/TOPS-20 type C Shell), bash (Bourne Again Shell) 等。
        • 所以,实际Shell就是用户登陆后使用的具体某个软件。
      • 用户登录Shell:即指定用户登陆后使用的软件。
        • 如果不指定 Shell,那么系统使用 sh 为默认的登录 Shell,即这个字段的值为 /bin/sh。
        • 如果登录 Shell 为空,则用户无法登录。(就是伪用户)
    • 伪用户
      • 常用伪用户
    • 用户组和用户附加组:
      • 当一个用户同时是多个组中的成员时,在 /etc/passwd 文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

    常用文件解读:

    • /etc/passwd 文件 :存放用户信息
    • /etc/passwd:存放用户口令信息
    • /etc/group:存放用户组的所有信息

    4、添加批量用户操作

    具体见原文

    六、Linux 磁盘管理

    1、常用命令

    • df:列出文件系统的整体磁盘使用量
      • 检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
    • du:检查磁盘空间使用量
      • 与 df 命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看
    • fdisk:用于磁盘分区
      • 格式化:mkfs
    • 磁盘检验:fsck
    • 磁盘挂载与卸除:
      • 挂载使用 mount 命令
      • 卸载使用 umount 命令

    2、关于磁盘分区和挂载

    • 磁盘:
      • 就是你买的硬件,比如你买的1T影盘
    • 分区:
      • 逻辑上将该磁盘分为几部分,一个部分就是一个区。
      • 为什么要分区?
        • 便于管理和使用。
          • 不分区,一个磁盘就是一整块。
          • 分区后,磁盘被分成了多个部分,每个部分户部干扰。
          • 虽然物理上他们都是同一个磁盘,但逻辑上互不干扰。是不是很方便。
          • 同时分区还有其他作用,比如分区能提高文件系统管理效率,然后操作系统启动时也需要从特定分区加载系统文件等等。不是很清楚,先不写了,不过这些不影响对分区的理解。
    • 挂载:
      • 以Linux的文件系统来说明。
        • Linux的树形文件结构只是逻辑上的结构,一个文件可以在这个树上,但这个文件本身必须保存在磁盘的某个分区上。
        • 而树形结构要和磁盘的某个分区之间有一个映射关系。这个关系的建立就是挂载。
          • 比如你创建一个文件,实际上有两块:
            • 第一步,文件系统中有这个文件;
            • 第二步:磁盘上有这个文件本身。
          • 如果你不挂载,你就无法创建文件。想一想呀,文件该存在哪里呢?空气中么?
          • 但为什么你不挂载依然可以创建文件。
            • 因为操作系统启动时肯定有一个你没有手动操作的挂载(这个步骤可能不叫挂载,不过和挂载作用一致,就是建立映射关系)。
            • 然后,即使你不主动指定挂载,当你创建文件时,系统会一直向上找,直到找到一个可用的挂载,然后创建文件。
          • 如果你想指定另外的挂载
            • 使用挂载命令即可。解除挂载就使用解除挂载命令。
          • 挂载操作之后有什么影响?
            • 当你将一个已有目录挂载到新的分区上。即使文件系统中有这个我呢见,但是文件系统会找不到。因为文件实际在之前的分区上。新的分区上可能就是空白。
            • 所以:你更换了分区,也就破坏了联系,就无法在找到之前的文件了。
            • 如果你在新的挂载分区上创建新的文件和目录,就没有任何问题。

    参考:

    1. Linux 系统分区和挂载浅谈 - CC 的技术专栏 - CSDN 博客 https://blog.csdn.net/cc_net/article/details/2894510
    2. Linux 文件系统下的分区和挂载 - 小小呆的博客 - CSDN 博客 https://blog.csdn.net/gui951753/article/details/79032190
      注:详细讲解了为什么要分区,以及分区的到底是什么?
      挂载就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,进入该目录就可以读取该分区。
    3. 能否通俗易懂,深入浅出地解释一下linux中的挂载的概念? - 知乎 https://www.zhihu.com/question/266907637
    4. Linux 学习笔记(二):什么是挂载?mount 的用处在哪? - Machine Learning with Peppa - CSDN 博客 https://blog.csdn.net/qq_39521554/article/details/79501714

    七、Linux vi/vim

    Vim的使用:

    1、各命令模式

    图片

    2、常用按键说明:

    图片

    见原文。

    八、linux yum 命令

    yum 实际就是软件的安装,更新,卸载等操作。

    以Window为例,来理解yum

    当我们想安装一个软件时:

    • 首先需要一个应用商店,提供所有的团结。
      • 在Linux中,应用商品就是 yum 源
    • 软件有名字,我们也能根据名字找到软件。
      • 在Linux中,软件名在就是package
    • 然后,下载、安装、更新、卸载
      • Linux中。安装(install)时,会根据package同时执行查询、下载和安装操作。
      • 其他更新就是更新,卸载就是移除。

    更换 yum 源就相当于更换应用商店,因为有的不好用。而且,为了防止总从yum源中后去,我们可以本地生成一个缓存。

  • 相关阅读:
    ContextLoaderListener作用详解
    @Autowired与@Resource的区别
    使用SimpleDateFormat时的日期和时间模式
    git将本地内容传送到远程仓库出现![rejected] master -> master (fetch first)错误
    使用SSH框架遇到的错误总结
    struts2 action中字符串转json对象出错 java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
    2017百度web前端实习生在线笔试题
    学习模型-视图-控制器MVC模式
    DOM元素加载之前执行的jQuery代码
    使用$.post和action或servlet交互 URL出现 http://localhost:8080/../[object%20Object] 错误的问题解决
  • 原文地址:https://www.cnblogs.com/buwuliao/p/11650405.html
Copyright © 2020-2023  润新知