美文网首页
[Linux]入门笔记

[Linux]入门笔记

作者: 胖三斤66 | 来源:发表于2019-02-28 21:23 被阅读0次

    以下所有内容均摘抄自 Linux达人养成计划 I

    1. 发展历史

    Unix ⋙ Minix ⋙ Linux

    Minix 是某个教授为了教授 Unix 操作系统而开发的操作系统,开源并了解操作系统较好的平台。

    查看某网点服务器的 OS :www.netcraft.com

    2. Linux 与 Windows 不同

    • Linux 严格区分大小写
    • Linux 中所有内容以文件形式保存,包括硬件
    • Linux 不靠扩展名区分文件类型,以文件权限区分文件类型。但 Linux 有一些约定俗成的扩展名,这些扩展名其实只是为了方便人们管理而已,对于 Linux 本身是没有意义的。
    约定俗成的扩展名

    3. 分区和挂载(回头好好学习)

    磁盘分区是使用分区编辑器再磁盘上划分几个逻辑部分。碟片一旦划分成数个分区,不同类的目录与文件可以存储在不同的分区中

    分区类型:

    • 主分区:最多只能有 4 个(这是由硬盘结构决定的,不是 OS 决定的)
    • 扩展分区:将其中一个主分区当作扩展分区,扩展分区的出现也是为了解决只允许 4 个主分区的限制
      1. 一块硬盘也最多只能由 1 个扩展分区
      2. 主分区加扩展分区最多有 4 个分区
      3. 不能写入数据,只能包含逻辑分区
    • 逻辑分区
    上面的分区模式称为 MBR。还有一种新的分区模式 GPT,它解决了 MBR 中的一些限制。 GPT 分区模式和 MBR 分区模式

    格式化,又称为逻辑格式化,他是指根据用户选定的文件系统(如 FAT16、FAT32、NTFS、EXT2 等),在磁盘的特定区域写入特定数据,在分区中画出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。 简单理解,格式化就是重新将分区划分为若干个等大小(大小是由文件系统决定的)的数据块(block),并创建文件分配表、目录表用于文件管理磁盘。显示的效果就是清空了分区的数据然后再重新整理分区

    总之,格式化作用就是(重新)指定分区的文件系统类型

    硬盘设备文件名: /dev/....

    • /dev/hda1 : h 代表是 IDE 硬盘接口,a 代表是第一个硬盘,1 代表是第一个分区
    • /dev/sda1 : s 代表是 SCSI 硬盘接口或 SATA 硬盘接口
    • 其中编号 1-4 是留给主分区使用,编号 5 以后才指的是逻辑分区

    Linux 中目录作为挂载点(见下图),所谓挂载就是把一个目录挂在某一个硬盘分区(如 /dev/sda1)上的过程。官方点的说法,挂载就是给每个分区分配挂载点。挂载更广的定义是为物理设备分配挂载点

    物理设备如果不进行挂载,就没法使用。

    必须分区:

    • /:根分区
    • swap 分区:理解成虚拟内存。当你的实际内存小于等于 4G 时,swap 推荐大小是实际内存的 2 倍;而实际内存大于 4G 时,swap 推荐大小等于实际内存大小即可。

    推荐分区(即不必需但最好这样):

    • /boot:启动分区,存放系统启动所需文件 。为了避免这种情况:不独立出来就会存放在根分区中,当根分区填满了数据时,系统就无法启动。解决方案就是将启动文件从根分区中独立分区。
    Linux 文件系统结构示例图与挂载点的理解

    4. 安装

    安装日志

    virtualbox 连网 :https://cizixs.com/2017/03/09/virtualbox-network-mode-explained/

    5. 常用命令

    5.1 命令基本格式

    命令提示符

    家目录:对于 root 用户,家目录为 /root ;对于一般用户,家目录为 /home/<username>/

    命令格式

    ls 命令

    ls 命令

    ls -a 可以看到隐藏文件,隐藏文件的文件名是以 . 开头。隐藏文件的意义在于表示该文件是系统文件,一般情况都不需要去操作它,隐藏起来避免误操作。


    # ls
    # ls -l
    # ls -l /etc/
    # ls -lh
    

    需要注意的是,ls -l 中会显示文件的权限信息。

    ls -l 命令所展示的内容详解

    上面的解读:该文件的类型是一个文件,其所有者拥有读写权限,其所有者所在的用户组只拥有读权限,其他用户只拥有读权限。

    Linux 文件类型有 7 种:文件、目录、软链接文件、块设备文件、字符设备文件、套接字文件和管道文件


    ls -i 显示出文件的唯一编号(相当于文件的 id)

    6. 常见目录的作用

    根目录下的常见目录的作用:

    • /bin : 命令保存目录,保存所有用户都能使用的命令
    • /sbin : 超级用户使用的命令保存目录。
    • /boot : 启动目录,保存系统启动有关的文件
    • /dev : 设备文件目录,保存系统设备文件
    • /etc : 配置文件目录,保存系统配置文件
    • /home : 普通用户的家目录
    • /lib : 系统库目录,保存系统库文件
    • /mnt : 系统挂载目录,一些外设的挂载点
    • /media : 挂载目录,同上,作用相同
    • /tmp : 临时文件目录
    • /proc : 内存的挂载点
    • /sys : 同上
    • /var : 系统相关文档文件目录
    • /usr : 系统软件资源目录

    7. Shell

    • shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求一遍运行程序的界面系统级程序,用户可以用 shell 来启动、挂起、停止甚至编写一些程序
    • shell 还是一个功能相当强盗的编程语言,也是解释执行的脚本语言,在 shell 中可以直接调用 Linux 系统命令。
    shell、用户、内核的关系

    举例子,用户想要给内核传递计算机命令,首先会在命令行界面(这也是 shell)输入命令;然后,shell 按照 ASCII 码表把命令翻译成机器语言 (即 01) 后;然后,shell 将翻译好的机器语言传给内核;然后,内核调用硬件处理指令;当硬件处理完返回结果给内核;接着,内核将结果返回给 shell,此时结果还是机器语言;接着,shell 将结果按照 ASCII 码表翻译;最后,将翻译结果返回给用户。

    shell 的作用:合起来就是起到一个命令行解释器的作用

    1. 接收用户输入的命令,即命令行界面。
    2. 用户与内核中间的翻译官:把命令翻译成机器学习,再传递给内核;内核的结果返回给 shell,shell 进行翻译后返回给用户。
    shell 类型

    Linux 使用的是 B shell,Unix 使用的是 C shell。使用 echo $SHELL 查看当前使用的 shell 类型

    [root@localhost home]# echo $SHELL  // 查看当前使用的 shell 类型
    /bin/bash
    [root@localhost home]# sh  // 切换成 sh 类型的 shell
    sh-4.1# exit
    exit
    [root@localhost home]# csh  // 切换成 csh 类型的 shell
    [root@localhost /home]# exit
    exit
    

    7.2 shell 脚本执行

    shell 脚本最大的优势:可以调用系统命令

    #!/bin/bash
    # the first program hello.sh
    
    echo "hello"  # 直接调用系统命令
    

    第一行的代码 #!/bin/bash 作用是标记这是一个 shell 脚本。在纯 shell 语言填写的脚本,加不加都能正常运行。但是如果脚本包含其他语言,不加也会无法执行。所以要求加上且写在第一行。

    两种执行脚本的方法

    8. 用户和用户组

    • /etc/passwd :存放当前系统中所有用户信息。该文件每行数据的含义 用户名:密码占位符:用户名编号:用户组编号:用户注释信息:用户家目录:shell 类型(一般为 /bin/bash)
    • /etc/shadow :存放当前系统中所有用户的密码信息。该文件每行数据的含义 用户名:密码
    • /etc/group : 存放当前系统中所有用户组信息。该文件每行数据的含义 组名:组密码占位符:组编号:组中用户名列表
    • /etc/gshadow : 存放当前系统中用户组的密码信息。该文件每行数据的含义 组名:组密码:组管理者:组中用户名列表

    用户可以同时属于多个组,但是只能属于一个主要组,多个附属组。

    密码单独存放的原因:用户组/用户普通信息和密码信息的敏感度不同,造成了两者读取权限要求不同。故此,划分为两个文件存放是满足两者读取权限要求

    如果需要暂时暂停除了 root 之外,所有普通用户登陆系统(如系统维护时),则创建一个 /etc/nologin 文件即可实现。

    创建用户并赋予 sudo 权限

    # groupadd developer
    # useradd -g developer hhx
    # passwd hhx
    # visudo
    

    visudo 打开 /etc/sudoers 文件,并增加一行 %developer ALL = (ALL) ALL 让整个组都具有 sudo 权限或者 hhx ALL=(ALL) ALL 仅让该用户有 sudo 权限

    相关文章

      网友评论

          本文标题:[Linux]入门笔记

          本文链接:https://www.haomeiwen.com/subject/oskxuqtx.html