linux读书笔记_深入理解linux内核读书笔记 - CSDN
  • 12.1LINUX读书笔记

    2019-12-01 15:23:54
    硬件存储设备没有格式化,Linux系统无法在上面写入数据,因此,还需要继续格式化操作 mkfs.文件类型名称(不知道可以按TAB查看) 磁盘地址 创建一个用于挂载设备的挂载点目录 然后使用mount命令讲存储设备与挂载点...

    fdisk [磁盘名称]
    在这里插入图片描述
    ep: fdisk /dev/sda
    partprobe 手动将分区信息同步到内核,一般联系执行两次命令想过更好

    硬件存储设备没有格式化,Linux系统无法在上面写入数据,因此,还需要继续格式化操作
    mkfs.文件类型名称(不知道可以按TAB查看) 磁盘地址
    创建一个用于挂载设备的挂载点目录
    然后使用mount命令讲存储设备与挂载点进行关联;最后使用 df -h命令来查看挂载转改和磁盘使用量信息
    mkdir /newFS
    mount /dev/sdb1 /newFS/
    def -h

    du [选项] [文件] 查看一个或多个文件占用了多大的硬盘空间
    du -sh /* 查看Linux 系统根目录下所有一级目录分别占用的空间大小
    mount目录挂载的设备文件会在下一次重启的时候失效,如果想让这个设备文件的挂载永久有效,需要把挂载信息写入到配置文件的当中
    /dev/sdb1 /newFS xfs defaults 0 0

    SWAP(交换)分区是一种通过在硬盘中预先划分一定的空间,然后将把内存中暂时不常 用的数据临时存放到硬盘中,以便腾出物理内存空间让更活跃的程序服务来使用的技术,其设 计目的是为了解决真实物理内存不足的问题。但由于交换分区毕竟是通过硬盘设备读写数据的, 速度肯定要比物理内存慢,所以只有当真实的物理内存耗尽后才会调用交换分区的资源。

    ,root 管 理员就需要使用磁盘容量配额服务来限制某位用户或某个用户组针对特定文件夹可以使用的 最大硬盘空间或最大文件个数,一旦达到这个最大值就不再允许继续使用。可以使用 quota 命 令进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数。quota 命令还有软限制和硬限制的功能。
    ➢ 软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。
    ➢ 硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。
    RHEL 7 系统中已经安装了 quota 磁盘容量配额服务程序包,但存储设备却默认没有开启 对 quota 的支持,此时需要手动编辑配置文件,让 RHEL 7 系统中的/boot 目录能够支持 quota 磁盘配额技术。另外,对于学习过早期的 Linux 系统,或者具有 RHEL 6 系统使用经验的读者 来说,这里需要特别注意。早期的 Linux 系统要想让硬盘设备支持 quota 磁盘容量配额服务, 使用的是 usrquota 参数,而 RHEL 7 系统使用的则是 uquota 参数。在重启系统后使用 mount 命令查看,即可发现/boot 目录已经支持 quota 磁盘配额技术了
    edquota [参数] [用户] 修改用户的quota配额限制
    -u 表示对用户 -g 表示对用户组

    在 Linux 系统中存在硬链接和软连接两种文件。
    ➢ 可以将它理解为一个“指向原始文件 inode 的指针”,系统不为
    它分配独立的 inode 和文件。所以,硬链接文件与原始文件其实是同一个文件,只 是名字不同。我们每添加一个硬链接,该文件的 inode 连接数就会增加 1;而且只 有当该文件的 inode 连接数为 0 时,才算彻底将它删除。换言之,由于硬链接实际 上是指向原文件 inode 的指针,因此即便原始文件被删除,依然可以通过硬链接文 件来访问。需要注意的是,由于技术的局限性,我们不能跨分区对目录文件进行链 接。
    ➢ 仅仅包含所链接文件的路径名,因此能链
    接目录文件,也可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件 也将失效,从这一点上来说与 Windows 系统中的“快捷方式”具有一样的性质。

    ln [选项] 目标 创建链接文件
    在这里插入图片描述

    RAID (独立冗余磁盘阵列)
    RAID技术通过吧多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果
    RAID具有非常好的数据冗余备份功能,但同时他也提高了成本支出
    RAID不仅降低了硬盘设备损坏后丢失数据的几率,还提升了硬盘设备的读写速度

    RAID 0 技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成 一个大的卷组,并将数据依次写入到各个物理硬盘中。这样一来,在最理想的状态下,硬盘设 备的读写性能会提升数倍,但是若任意一块硬盘发生故障将导致整个系统的数据都受到破坏。 通俗来说,RAID 0 技术能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修 复能力。

    RAID 1 技术是把两块以上的硬盘设备进行绑定,在写入数据时,是将数据同时写入到多块硬盘设备上(可以将其视为数据的镜像或备 份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常 使用。

    RAID 5 磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到 除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺,换句话说,就是 RAID 5 技术实 际上没有备份硬盘中的真实数据信息,而是当硬盘设备出现问题后通过奇偶校验信息来尝试 重建损坏的数据。RAID 这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性 与存储成本问题。

    RAID 10 技术是 RAID 1+RAID 0 技术的一个“组合体”。 RAID 10 技术需要至少 4 块硬盘来组建,其中先分别两两制作成 RAID 1 磁盘阵列,以保 证数据的安全性;然后再对两个 RAID 1 磁盘阵列实施 RAID 0 技术,进一步提高硬盘设 备的读写速度。这样从理论上来讲,只要坏的不是同一组中的所有硬盘,那么最多可以损 坏 50%的硬盘设备而不丢失数据。由于 RAID 10 技术继承了 RAID 0 的高读写速度和 RAID 1 的数据安全性,在不考虑成本的情况下 RAID 10 的性能都超过了 RAID 5,因此当前成 为广泛使用的一种存储技术。

    在虚拟机添加硬盘设备一定要关闭系统之后,否则可能会因为计算机架构的不同而导致虚拟机系统无法识别添加的硬盘设备
    mdadm 命令用于管理 Linux 系统中的软件 RAID 硬盘阵列,格式为“mdadm [模式] <RAID 设备名称> [选项] [成员设备名称]”。
    在这里插入图片描述
    在确认有一块物理硬盘设备出现损坏而不能继续正常使用后,应该使用 mdadm 命令将其 移除,然后查看 RAID 磁盘阵列的状态,可以发现状态已经改变。
    在 RAID 10 级别的磁盘阵列中,当 RAID 1 磁盘阵列中存在一个故障盘时并不影响 RAID 10 磁盘阵列的使用。当购买了新的硬盘设备后再使用 mdadm 命令来予以替换即可,在此期间 我们可以在/RAID 目录中正常地创建或删除文件。由于我们是在虚拟机中模拟硬盘,所以先 重启系统,然后再把新的硬盘添加到 RAID 磁盘阵列中
    mdadm /dev/md0 -f /dev/sdb
    mdadm -D /dev/md0
    umount /RAID
    mdadm /dev/md0 -a /dev/sdb
    mdadm -D /dev/md0
    mount -a

    LVM(逻辑卷管理器)
    逻辑卷管理器是 Linux 系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建 初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进 行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。而 LVM 技术是在硬 盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行 卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分 区的动态调整。
    PV物理卷->VG卷组->LV逻辑卷->PE基本单元
    pvcreate 磁盘位置 添加硬盘设备
    cgcreate 卷组名字 磁盘位置
    lvcreate -n 名字 -l(一块默认大小4MB) 几块 卷组名字
    mkfs.ext4 逻辑卷位置
    写入配置文件中
    逻辑卷位置 用户目录 ext4 defaults 0 0

    扩展逻辑卷
    先umount 用户目录
    lvextend -L 扩展大小 逻辑卷位置
    e2fsck -f 逻辑卷位置 检查磁盘完整性
    resize2fs 逻辑卷位置 重置硬盘容量
    重新挂载 mount -a

    缩小逻辑卷
    先umount 用户目录
    e2fsck -f 逻辑卷位置 检查磁盘完整性
    resize2fs 逻辑卷位置 缩小至大小
    重新挂载 mount -a

    逻辑卷删除
    umount
    lvremove
    vgremove
    pvremove

    展开全文
  • shell接受键盘书输入的命令,传递给操作系统来执行,几乎所有的Linux都提供shell程序。 在终端仿真器中(Terminal Emulator)写shell命令。 在终端不要尝试ctrl-c或者ctrl-v,对于shell而言,鼠标中键是粘贴键。 ...

    第一章:shell是什么

    shell接受键盘书输入的命令,传递给操作系统来执行,几乎所有的Linux都提供shell程序。
    在终端仿真器中(Terminal Emulator)写shell命令。
    在终端不要尝试ctrl-c或者ctrl-v,对于shell而言,鼠标中键是粘贴键。
    简单的shell命令:

    data    //显式日期
    cal     //显示当月日历
    df      //当前磁盘的可用空间
    free    //显示可用内存
    clear   //清屏
    exit    //结束终端

    第二章:导航

    介绍文件导航系统:

    pwd     //查看当前工作目录
    cd      //改变目录      
    1. 绝对路径名:从根目录开始紧接一个又一个文件树分支。
    2. 相对路径名:点号代表.代表当前目录,符号..代表当前目录的父目录。
    cd ..   //回到当前目录的父目录
    cd bin  //当前目录的bin子目录
    cd ./bin    //和上面的命令作用一样

    常见的cd快捷方式:

    cd      //将当前目录转向主目录
    cd -     //将工作目录改编成先前的额工作目录

    第三章.Linux系统

    ls      //列出目录内容
    file    //确定文件类型
    less    //查看文件内容

    ls命令可以查看当前目录下的一系列子目录和文件:

    ls(选项)(参数)

    参数:要显示的目录,或者文件,可以是多个。
    选项:

    -l      //输出长格式显示
    -a      //列出所有文件,包括以点号开头的
    -d      //查看目录的详细信息而非内容,常与-l连用
    -F      //添加类型指定符
    -h      //长格式列出, 显示文件大小
    -r      //逆序
    -S      //文件大小排序
    -t      //修改时间排序

    长格式:

    -rwxrwxr-x 1 xxx xxx 9216 Jun 23 19:41 test
    -rwxrwxr-x   //对文件的访问权限
    1       //硬链接的数目
    xxx     //文件所有者用户名
    xxx     //文件所属用户组的名称
    9216    //字节数大小
    Jun 23 19:41    //上一次修改时间
    test        //文件名

    filelless命令:

    file filename   //打印文件内容的说明
    less filename   //查看文件内容,按q退出

    less命令中查看文件内容:

    page up或者b        //后翻一页
    page down或者Space  //前翻一页
    向上箭头            //向上一行
    向下箭头            //向下一行

    第四章:操作文件与目录

    1. 通配符(类似正则表达式):
    *                   匹配代表任意多个字符
    ?                  匹配单个字符
    [characters]        匹配一个属于该字符集的字符
    [!characters]       匹配一个不属于该字符集的字符
    [[:class:]]         匹配一个指定字符类的字符

    常用的字符类:

    [:alnum:]           匹配一个字母或者数字
    [:alpha:]           匹配一个字母
    [:digit:]           匹配一个数字
    [:lower:]           匹配一个小写字母
    [:upper:]           匹配一个大写字母

    例如:

    [![:digit:]]*       不以数字开头
    *[[:lower:]123]     以小写字母或者数字1,2,3任意一个结尾

    尽量避免使用类似于[A-Z]或者[a-z],这些在早期的Linux版本有效,现在不一定。

    1. mkdir:创建目录
      格式如下:
    mkdir dir...

    ...代表参数可以重复,下文统一这样约定。
    例如:

    mkdir dir1 dir2 dir3    //创建3个目录
    1. cp:复制文件和目录
      使用方式如下:
    cp item1 item2          //将文件或者目录item1复制到文件或者目录item2
    cp item... directory   //将多个项目(文件或者目录)复制进一个目录

    cp常见的选项:

    -v, --verbose           //复制时,显示消息
    -i, --interactive       //复制已经存在的文件,提示
    -r, --recursive         //用于目录复制
    -a, --archive           //复制所有权限
    -u, --update            //只复制更新的文件

    例如:

    cp -r dir1 dir2         //将dir1目录复制到dir2,如果dir2不存在,先创建之
    cp dir1/* dir2          //dir1总所有文件复制到dir2,dir2必须存在
    1. mv:移动或者重命名文件或者目录
      基本格式:
    mv item1 item2
    mv item... directory

    mv选项:-i, -u, -v,含义和cp一样。
    5. rm:删除文件或者目录

    rm item...

    rm选项-i, -r, -v, -f-f –force。
    6. ln:创建链接
    链接包括:符号链接(symbolic link)和硬链接(hard link)。
    符号链接类似于windows中的快捷方式,本质是文本文件,里面存放的是位置信息。
    硬链接通过索引节点来进行连接,硬链接和源文件公用一个索引节点。每一个文件均有一个硬链接,为文件起名,每当创建一个硬链接,也就为文件创建了一个额外的目录条目。硬链接有两个局限性:
    - 不能引用不在同一磁盘分区的文件
    - 无法引用目录
    基本格式:

    ln file link        //创建硬链接
    ln -s item link     //创建符号链接,可以是目录

    例如:

    ln file1 file2      //硬链接
    ln -s file1 file3   //符号链接

    删除file1,对file2无影响,file3失效;
    删除file2,对file1和file3都无影响;
    删除file3,对file1和file2都无影响;
    删除file1和file2,文件被真正删除。

    第五章:命令的使用(7月6日更新)

    1. 识别命令:type, which
      type是shell一个内置命令:
    type command        //显示command的类型
    which command       //显示command的位置,只适用于可执行程序,不适用内置命令和别名

    例如:

    type ls     //ls is aliased to `ls --color=auto'
    which ls    //bin/ls
    1. 获得命令文档:
      help命令:
    help command        //
    command --help      //只有一些可执行程序支持--help

    man: 显示程序的手册页

    man program     //program是需要查看的命令名称

    手册被分为多个部分:

    1       //用户命令
    2       //内核函数调用的程序接口
    3       //c库函数程序接口
    4       //特殊文件
    5       //文件格式
    6       //游戏和娱乐
    7       //其它杂项
    8       //系统管理命令

    例如:

    man 5 passwd        //

    apropos: 显示合适的命令,通过搜索参考手册列表

    apropos floppsy   //

    whatis: 显示命令的简要描述

    whatis ls   //ls (1)               - list directory contents

    info: 显示程序的info目录
    info页面可以通过info阅读器来显示。
    4. 使用别名 alias 来创建自己的命令
    多条命令可以用分号隔开:

    command1; command2; command3

    使用别名前最好type来验证是否被使用:

    type foo
    alias foo = 'cd /usr; ls; cd -'
    foo         //执行三个命令

    使用unalias删除别名:

    unalias foo

    第六章:重定向

    I/O重定向:从文件获取内容,输出结果重定向到文件。
    1. 标准输入,标准输出和标准错误
    >>>表示输入,前者表示从文件的开头重写,后者表示从文件的末尾开始写入。方式如下:

    command > file
    command >> file

    例如:

    ls -l > ls-output.txt   //命令ls -l不再输出到屏幕,而是写入文件ls-output.txt
    > ls-output.txt         //将文件清空或者创建一个空文件
    ls -l >> ls-output.txt

    文件描述符:in-0, out-1, err-2

    ls -l 2 > ls-error.txt

    使用&>将标准输出和标准错误重定向到同一个文件

    ls -l &> ls-output.txt

    处理不想要的输出,把输出丢弃:

    ls -l 2> /dev/null      //但是还是显示了,不知道为什么

    标准输入重定向:
    cat: 合并文件,cat读取一个或者多个文件,并把它们复制到标准输出文件中。
    格式:

    cat file...
    cat ls-output.txt   //作用和type一样

    假设我们有文件:file001,file002,file003

    cat file00* > file      //将文件连接在一起

    直接写cat

    cat

    看起来什么都没发生,实际正等待从键盘输入内容,完成后按ctrl+d,表示输入完毕,就会显示刚刚键盘输入。

    cat > flie

    上述命名执行后等待从键盘写入,ctrl+d完成写入。
    cat还接受标准输出:

    cat < file      //输出file的内容
    1. 管道
      管道操作符|可以把一个命令的标准输出传送到另外一个命令的标准输入。
    command1 | command2

    例如:

    ls -l | less    

    过滤器:管道功能经常对数据执行复杂的操作,也可以把多条命令合在一起构成一个管道,这种方式中用到的命令也称为过滤器。

    ls | sort | less    //排序并使用less读取内容

    uniq:忽略文件中重复的行:

    ls | sort | uniq | less    //排序并删除重复行,然后使用less读取内容

    wc: 打印行数,字数和字节数
    例如:

    wc output.txt         //

    grep: 打印匹配行

    grep pattern file...

    例如:

    ls | sort | uniq | grep zip     //搜索文件名中包含zip

    选项:

    -i      //忽略大小写
    -v      //只输出和模式不匹配行

    head/tail: 打印文件的开头部分或者结尾部分
    有时候只需输出前几行或者倒数几行,需要-n选项:

    head -n 5 output.txt        //打印前5行
    tail -n 10 output.txt       //打印倒数10行

    这些命令也可以用在管道上:

    ls | tail -n 5

    tail还可以用来刷新日志,使用-f选项监视文件,一旦添加了新行,就会立即显示在屏幕上:

    tail -f logfile

    tee: 从stdin读取数据,同时输出到stdout

    ls | tee ls.txt | grep zip

    第七章:透过shell看世界

    echo: 显示一行文本

    echo this is a test     //屏幕输出this is a test
    ech *       //等价于命令ls,将*扩展为当前目录下的所有文件名

    路径名扩展

    ls          //
    echo D*     //输出以D开头的文件名
    echo *s     //输出以s结尾的文件名
    echo [[:upper:]]*
    echo /usr/*/share

    波浪线(~)扩展:如果将其用在一个单词的开头,那么它将被扩展为指定用户的主目录名;如果没有指定用户名,则扩展为当前用户的主目录。
    算术扩展:表达式

    $((expression))

    常见的操作符:

    +, -, *, /, %, **       //前五个和C一样,**代表取幂

    例如:

    echo $((2 ** (3 - 1)))  //输出4

    花括号扩展
    例如:

    echo F{A,B,C}B    //输出FAB FBB FCB
    echo {Z..A}     //输出Z Y ... C B A

    花括号还支持嵌套:

    echo a{A{1,2}, B{3,4}}b     //输出aA1b aA2b aB3b aB4b

    应用:创建一系列文件或者目录

    参数扩展

    echo $(USER)

    命令替换:将一个命令的输出作为一个扩展模式使用:

    echo $(ls)      //
    
    1. 引用

    双引号:除了美元符号$,反斜杠\和反引号'其它特殊字符都失去特殊含义。因此,参数扩展,算术扩展和命令替换在双引号中依然有效,例如:

    echo "$((2 + 2)) this is"       //4 this is

    单引号: 抑制 所有扩展,例如:

    echo "$((2 + 2)) this is"       //$((2 + 2)) this is

    转义字符

    \\
    \&
    \$
    \!

    第八章:高级键盘技巧

    1. 光标移动:
    Ctrl+A          //移动光标到行首
    Ctrl+E          //移动光标到行尾
    Ctrl+F          //光标向前移动一个字符
    Ctrl+B          //光标向后移动一个字符
    Alt+F           //光标向前移动一个字
    Alt+B
    Ctrl+L          //等价于clear,但是不会清除当前正在输入的字符
    1. 修改文本:
    Ctrl+D          //删除光标处的字符
    Ctrl+T          //使光标处的字符和前面的字符对调
    Alt+T           //使光标处的字和前面的字符对调
    Alt+L           //从光标到字尾的字符转换成小写
    Alt+U           //从光标到字尾的字符转换成大写
    1. 剪切和粘贴文本:
    Ctrl+K          //剪切从光标到行尾的文本
    Ctrl+U          //剪切从光标到行首的文本
    Alt+D           //剪切从光标到当前词尾的文本
    Alt+Backspace   //剪切从光标到词头的文本,如果光标在词头,则剪切这个单词
    Ctrl+Y          //粘贴文本

    自动补齐功能:在输入命令时,按TAB键将自动触发自动补齐功能。
    使用历史命令:

    history | less
    history | grep /usr/bin         //搜索并打印 /usr/bin目录下的命令

    bash也支持以递增的方式搜索历史纪录,按下Ctrl+R,接着输入你要查找的内容,选定查找好的内容,按下enter表示执行该命令,按下Ctrl+J则表示把选定好的内容复制到当前命令行,要退出搜索按下Ctrl+C或者Ctrl+G即可。

    Ctrl+P          //移动到前一条历史命令,等价于向上箭头
    Ctrl+N          //移动到后一条历史命令 
    Ctrl+R          //逆向递增搜索
    Alt+P           //逆向非递增搜索,输入待搜索的字符,按下enter才执行
    Alt+N           //向前非递归搜索
    Ctrl+O          //执行列表中的当前项,执行完后跳到下一项

    历史纪录扩展:
    使用! string来重复历史命令

    !!              //重复最后一个执行的命令
    !number         //重复历史类记录中第number行的命令
    !string        //重复最近以string开头的历史命令
    !?string        //重复以string开头的历史命令    

    第九章:权限

    用户群组与权限
    每一个用户(user)都有一个唯一的用户标识符(uid),放在/etc/passwd中,为了用户间共享文件或者资源,引入了群组(group)的概念,Linux中的每个用户都属于群组,每一个群组都有一个群组标识符(gid),每个用户至少有一个同名的群组,当然也可以加入到其它群组。
    一般用户只能访问自己的文件和同群组中其它成员共享的文件,不能访问其它群组的成员的文件,root用户则不受此限制,root用户具有最高权限。
    在Ubuntu系统中:

    id          //uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

    使用ls -l命令得到的前十个字符表示文件的属性:

    文件属性 所有者权限 组权限 其它用户权限
    - rwx rw- r–

    文件属性分类:

    -               //普通文件
    d               //目录
    l               //符号链接,剩下的属性总是rwxrwxrwx
    c               //字符设备文件
    b               //块设备文件

    剩下的九个字符表示文件模式:

    r           //允许打开和读取文件
    w           //允许写入和阶段文件
    x           //允许把文件当作程序一样执行

    例如:

    -rwx------      //普通文件,文件所有者具有读取、写入和执行权限,其它没有任何访问权限

    chmod: 改变文件模式,通常使用八进制来表示:

    八进制 二进制 文件模式
    0 000
    1 001 –x
    2 010 -w-
    3 011 -wx
    4 100 r–
    5 101 r-x
    6 110 rw-
    7 111 rwx

    使用方式:

    chmon 600 file      //将文件file的文件模式改为600即rw-------

    符号表示法:

    u           //user简写
    g           //文件所属群组
    o           //other,其它所有用户
    a           //all u,g,o三者组合

    用法:

    chmod u-x file      //删除file文件的文件所有者的可执行权限
    chmod +x file       //等价于chmod a+x
    chmod go-rw file    //

    umask:设置默认权限。
    我的Ubuntu使用umask命令后得到的是:0002。四个数字,第一个数字代表特殊权限,后面三个数字都是八进制,假设是xyz,那么目录的权限为(7-x)(7-y)(7-z),文件的默认权限为(6-x)(6-y)(6-x),例如:

    ls -l foo.txt       //-rw-rw-r-- (664)

    更改身份:
    su:以root用户来运行shell,常见如:

    su -        //提示输入密码后,进入root权限,$变成#
    exit        //退出root权限
    su -c 'command'   //

    sudo:受限制的su,切换到root,命令执行完成后退回当前用户,不需要启动一个新的shell环境。
    chown:更改文件所有者和所属群组,格式:

    chown [owner] [:[group]] file...

    例如:

    sudo chown janet: ~tony/myfile.txt      //改变文件的所属者 

    chgrp:改变文件的所属群组。
    更改密码:passwd命令。

    主要参考自《Linux命令行大全》William E. Shotts, Jr. 著 郭光伟 郝记生 译 以及 Linux命令大全

    展开全文
  • linux相关读书笔记

    2020-01-11 08:55:21
    LINUX内核探秘 深入解析文件系统和设备驱动的架构与设计

    LINUX内核探秘 深入解析文件系统和设备驱动的架构与设计

    1. 在这里插入图片描述

    深入理解UNIX系统内核

    1. 在这里插入图片描述
    展开全文
  • linux基础篇读书笔记

    2016-08-30 17:02:49
    linux

    linux的档案权限和文件系统

    • chgrp:改变档案所属群组(change group的缩写)
    • chown:改变档案拥有者(change owner的缩写)
    • chmod:改变档案的权限,SUID,SGID,SBIT等

    档案的一般权限rwx

    权限的设定有两种方式,可以使用数字或者符号来改变权限。在linux中档案权限分为基本的read读(4),write写(2),execute执行权限(1),分别对应于rwx,使用ls -l可以查看文件权限,属主user(1),群组group(2),其他others(3),就可以用u、g、o来代表三种身份的权限。

    档案的特殊权限:SUID(4),SGID(2),SBIT(1)

    Set UID
    当s这个标志出现在档案拥有者的x权限上时,如(-rwsr-xr-x),此时就被称为Set UID,简称为SUID的特殊权限

    • SUID权限仅对二进制程序(binary program)有效;
    • 执行者对于该程序需要具有x的可执行权限;
    • 本权限仅在执该程序的过程中有效(run-time);
    • 执行者将具有该程序拥有者(owner)的权限。

    Set GID
    当s标志在档案拥有者的x项目为SUID,那s在群组的x时则称为Set GID,简称SGID。与SUID不同的是,SGID可以针对档案或目录来设定。如果是档案,SGID有如下功能:

    • SGID对二进制程序有用;
    • 程序执行者对于该程序来说,需具备x的权限;
    • 执行者在执行的过程中会获得改程序群组的支持。

    如果是目录设定了SGID权限后,具有如下功能:

    • 用户若对于此目录具有r与x的权限时,该用户能够进入此目录;
    • 用户在此目录下的有限群组(effective group)将会变成该目录的群组;
    • 用途:若用户在此目录下具有w的权限(可以新建档案),则使用者多建立的新档案,该新档案的群组与此目录的群组相同。

    Sticky Bit
    Sticky Bit,简称SBIT,目前只针对目录有效有权删除该档案,对于档案无效。SBIT对于目录的作用:

    • 当用户对于此目录具有wx权限,也就是说具有写入的权限时;
    • 当用户在该目录下建立档案或目录时,仅有自己与root才

    因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分割槽则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分割槽去!那哪些目录不可与根目录分开呢?以下目录:

    • /etc:配置文件
    • /bin:重要执行档
    • /dev:所需要的装置档案
    • /lib:执行档所需的函式库不核心所需的模块
    • /sbin:重要的系统执行文件

    几个常见的处理目录的指令:

    • cd:变换目录
    • pwd:显示当前目录
    • mkdir:建立一个新的目录
    • rmdir:删除一个空的目录

    档案查阅

    • cat 由第一行开始显示档案内容
    • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
    • nl 显示的时候,顺序输出行号!
    • more 一页一页的显示档案内容

    空格键 (space):代表向下翻一页;
    Enter :代表向下翻『一行』;
    /字符串 :代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;
    :f :立刻显示出文件名以及目前显示的行数;
    q :代表立刻离开 more ,不再显示该档案内容。
    b 或 [ctrl]-b :代表往回翻页,不过这动作只对档案有用,对管线无用。

    • less 不 more 类似,但是比 more 更好癿是,他可以往前翻页!

    空格键 :向下翻动一页;
    [pagedown]:向下翻动一页;
    [pageup] :向上翻动一页;
    /字符串 :向下搜寻『字符串』的功能;
    ?字符串 :向上搜寻『字符串』的功能;
    n :重复前一个搜寻 (与 / 或 ? 有关!)
    N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
    q :离开 less 这个程序;

    • head 叧看头几行(取出前面几行head [-n number] file -n:后面接数字,代表显示几行)
    • tail 查看尾部几行(同上)
    • od 以二进制的方式读取档案内容(具体使用可以使用od --help查看)

    umask 的用处与优点:
    umask 可以拿掉一些权限,因此,适当的定义 umask 有利于系统的安全, 因为他可以建立默认的目录或档案的权限。

    例如:假设umask为003,请问该umask情况下,建立的档案与目录权限为?
    umask为003,所以拿掉的权限是——-wx,因此:
    档案:(-rw-rw-rw)-(——-wx)=(-rw-rw-r–);
    目录:(drwxrwxrwx)-(——-wx)=(drwxrwxr–).

    chattr(配置文件案隐藏属性)

    chattr [+-=] \[ASacdisu](+增加某一个特定参数;-移除某一个特殊参数;=设定一定,且仅有后面接的参数。具体参数使用可以使用help命令查看)

    lsattr(显示隐藏属性)

    lsattr [-adR] [file or directory]

    -a:将隐藏文件的属性表现出来;
    -d:如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
    -R: 连同子目录的数据也一并列出来。

    磁盘与文件系统管理

    EXT2文件系统:
    superblock:记录此 filesystem 的整体信息,包括 inode/block 的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
    inode:记录档案的属性,一个档案占用一个inode,同时记录此档案的数据所在的 block 号码;
    block:实际记录档案的内容,若档案太大时,会占用多个 block 。

    df:列出文件系统的整体磁盘使用量;
    df [-akmhiHT] [file or directory](选项与参数使用--help查看即可。)
    du:评估文件系统的磁盘使用量(常用在推估目录所占容量)
    du [-ahskm] [file or directory]

    linux常见的压缩指令:

    • .Z compress 程序压缩的档案;
    • .gz gzip 程序压缩的档案;
    • .bz2 bzip2 程序压缩的档案;
    • .tar tar 程序打包的数据,并没有压缩过;
    • .tar.gz tar 程序打包的档案,其中并且经过 gzip 的压缩
    • .tar.bz2 tar 程序打包的档案,其中并且经过 bzip2 的压缩

    压 缩:tar -jcv -f filename.tar.bz2 要被压缩癿档案戒目录名称
    查 询:tar -jtv -f filename.tar.bz2
    解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩癿目录

    完整备份工具:dump
    dump在文件备份的时候可以指定不同的备份等级,完整备份(level 0),差异比较(level 1),差异比较(level 2)……
    如果想要备份的数据如下时,则有不同的限制情况:

    • 当待备份的资料为单一文件系统;
    • 如果是单一文件系统 (filesystem) ,那么该文件系统可以使用完整的 dump 功能,包括利用0~9 的数个 level 来备份, 同时,备份时可以使用挂载点或者是装置文件名 (例如 /dev/sda5之类的装置文件名) 来进行备份;
    • 待备份的数据只是目录,并非单一文件系统;例如你仅想要备份 /home/someone/ ,但是该目录并非独立的文件系统时。此时备份就有限制,包括:
      • 所有的备份数据都必项要在该目录 (本例为:/home/someone/) 底下;
      • 且仅能使用 level 0 ,亦即仅支持完整备份而已;
      • 不支持 -u 选项,亦即无法建立 /etc/dumpdates 这个各别 level 备份的时间记录文件

    dump常用指令:
    dump [-Suvj] [-level] [-f备份档案] 带备份资料
    dump -W

    -S:仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕;
    -u:将这次dump的时间记录到/etc/dumpdates档案中;
    -v:将dump的档案过程显示出来;
    -j:加入bzip2的支持,将数据进行压缩,默认bzip2压缩等级为2;
    -level:加入备份等级,从0~9共十个等级;
    -f:有点类似tar,后面接产生的档案,例如/dev/st0装置文件名等。
    -W:列出在/etc/fstab里面的具有dump设定的partition是否有备份过。

    备份复原restore

    restore -t [-f dumpfile] [-h]  -----用来察看dump文档
    restore -C [-f dumpfile] [-D挂载点]  -----比较dump与实际档案
    restore -i [-f dumpfile] ------进入互动模式
    restore -r [-f dumpfile] ------还原整个文件系统

    选项参数解释:
    相关的各种模式,各种模式不可混用,如不可以写-tC
    -t :此模式用在察看 dump 的备份文件中含有什么重要数据!类似 tar -t功能;
    -C :此模式可以将 dump 内的数据拿来跟实际的文件系统做比较,
    最终会列出『在dump档案内有记录的,且目前文件系统不一样』的档案;
    -i :进入互动模式,可以仅还原部分档案,用在 dump 目录时还原
    -r :将整个 filesystem 还原的一种模式,用在还原针对文件系统的 dump 备份;
    其他较常用到的选项功能:
    -h :察看完整备份数据中的 inode 不文件系统 label 等信息
    -f :后面就接你要处理的那个 dump 档案
    -D :与-C进行搭配,可以查出后面接的挂载点与dump内有不同档案

    光盘写入工具:mkisofs
    文本模式的刻录行为,具体做法:

    • 先将所需要备份的数据建置成为一个镜像文档(iso),利用mkisofs指令来处理;
    • 将该镜像文件刻录至光盘或DVD中,利用cdrecord指令来完成

    mkisofs:建立镜像文档
    mkisofs [-o 镜像档] [-rv] [-m file] 待备份文件.. [-V vol] -graft-point isodir=systemdir...

    选项参数:
    -o :后面接你想要产生的那个镜像档档名。
    -r :透过 Rock Ridge 产生支持 Unix/Linux 的档案数据,可记录较多的信息;
    -v :显示建置 ISO 档案的过程
    -m file :-m 为排除档案 (exclude) 的意思,后面的档案不备份到镜像档中
    -V vol :建立 Volume,有点像 Windows 在档案总管内看到的CD title的东西
    graft-point:graft有转嫁移植的意思。

    光盘刻录工具:cdrecord

    cdrecord -scanbus dev=ATA    ----侦测刻录机所在位置
    cdrecord -v dev=ATA:1,1,0 blank=fast   ----进行CD的刻录动作(0,先抹除原本内容)
    cdrecord -v dev=ATA:1,1,0 blank=fast   ----进行DVD-RW的刻录动作

    vim

    在linux系统下常用的文本编辑器有emacs,pico,nano,joe,vi,vim。但是使用范围最广,最常用的还是vi/vim,所有的unix like系统都会内建vi编辑器,vim具有程序编辑能力,可以主动地根据字体颜色辨别语法的正确性,提高程序设计效率。严格来讲vim是在vi基础功能上扩展而来的,vim是vi的进阶版。
    vi的使用
    vi共分为一般模式,编辑模式,指令命令模式。

    • 一般模式:使用vi打开一个档案就直接进入一般模式了,在这个模式中可以使用上下左右按键来移动光标,可以使用删除字符或删除整行来处理档案内容,也可以使用复制粘贴来处理文档内容。
    • 编辑模式:进入一般模式之后,需要按下[i,I,o,O,a,A,r,R]等任何一个字母之后才会进入编辑模式。在linux中,按下这些按键时,在画面的左下方会出现[insert 或 replace],此时进行内容编辑。推出编辑模式按下Esc即可。
    • 指令列命令模式:在一般模式中,输入[:/?]中的任何一个字符,就可以将光标移到最底下那一行。在这个模式当中,可以提供搜索功能,读取,存盘,替换字符,退出,显示行号….等都是在此模式中实现的。
    展开全文
  • linux读书笔记(一)

    2009-07-18 17:24:00
    skb的分配都只是移动指针分配函数skb_putskb_pushskb_pullskb_reserve设置网卡为混杂模式==========================================dev_set_promiscuity多播只适用于L2和L3netif_rx //数据包基层调用接收函数dev_...
  • linux读书笔记5

    2015-10-18 11:24:53
    根据拓展名分割文件名 获得文件名借助%,获取拓展名借助# filename=hello.txt name={filename%.*} echo name:{filename%.*} echo name: name extension={filename#*.} echo extension:{filename#*.} ...
  • linux读书笔记6

    2015-10-19 20:30:34
    grep的用法 echo -e “1 2 3 4\nhello\n5 6” | grep -c “[0-9]” 2 grep -v除了匹配行之外的所有行 grep -E接受正则表达式或则使用egrep 统计匹配数量 echo -e “1 2 3 4\nhello\n5 6” | egrep -o ...
  • 查看文件列表命令 ls 常用选项 *l:以长格式显示文件列表 *d:显示目录的详细信息,而非目录中文件列表 *a:显示隐藏文件 *k:显示文件大小时以k为单位 *S:按文件大小进行排序 *h:以更直观的方法显示 ...
  • Linux读书笔记

    2018-01-31 11:12:36
    《鸟哥的Linux私房菜》5-12章为主: 1. 指令、选项或参数之间不论空几个格,shell都视为一个空格。 2. 指令太长时,可以使用“\”(反斜杠)符号使指令连续到下一行。 3. Linux环境下,字母区分大小写。
  • linux读书笔记1

    2019-06-27 06:54:31
    (1)进入控制台命令快捷键:Ctrl+alt+F1~F7 转载于:https://www.cnblogs.com/dengyungao/p/8443219.html
  • linux读书笔记8

    2015-10-19 21:40:31
    linux判断 1、字符串判断str1 = str2 当两个串有相同内容、长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空) -z str1 当串的长度为0时为真(空串) str1 当串str1...
  • linux读书笔记

    2016-06-25 09:09:21
    每文一语:没有责任感伤害别人,太有责任感伤害自己
  • 路径 绝对路径:cd /home/python 相对路径:cd Downloads .表示当前路径 ..表示当前路径的上一层 ../..表示当前路径的上两层 注意:没有......ls Documents: 查看当前路径下的Documents文件夹下的所有东西 l...
  • 学习linux读书笔记

    2008-10-30 23:35:00
    都说写读书笔记能加深记忆,抱着这个目的我开通了csdn的blog。先说下背景,实验室要研究xen,因此我必须学linux,但是之前没有接触过linux(不要说我土),因此所有东西都得重新学。在装系统的时候我就遇到问题了,...
  • Linux : ext2 档案格式,Windows: FAT表。Linux可支持Windows。 磁盘组成: sector-> cyliner -> partitions 。磁盘扇区(sector)一般包括512个字节,扇区(sector)是磁盘的最小存储单位。partition:使用磁盘...
  • Linux那些事读书笔记

    2015-09-27 12:58:58
    1.在drivers/usb/core目录下放置一些核心的代码,包括初始化整个USB系统,初始化root hub,初始化host controller的代码。   2.在drivers/usb/storage目录下放置USB驱动程序,如usb.c文件。...
  • Linux内核设计与实现》读书笔记 - 目录 (完结) 读完这本书回过头才发现, 第一篇笔记居然是 2012年8月发的, 将近一年半的时间才看完这本书(汗!!!). 为了方便以后查看, 做个《Linux内核设计与实现》读书笔记...
  • linux C读书笔记

    2017-07-18 20:40:09
    完成最近的学习任务,把《linux C程序设计 王者归来》吴岳编著这本书自己不懂的和一些底层的知识点记录下来,好记性不如烂笔头,加油加油!
  • 1、Linux内核头文件:构建工具链所要用到的第一个组件是一组Linux内核头文件,目的是让应用程序设计者看到较好用的API,而不是原始的Linux内核系统调用,所以编译系统需要Linux内核头文件的一个子集。理论上:构建...
  • linux 读书笔记2

    2015-10-17 19:20:24
    linux数组 1.定义方式 1.1 array_var=(1 2 3 4 5) 1.2 array_var[0]=1 以清单方式打印数组所有值 echo arrayvar[∗]打印数组长度echo{array_var[*]} 打印数组长度 echo {#array_var[*]} 2.关联数组 ...
1 2 3 4 5 ... 20
收藏数 11,864
精华内容 4,745
关键字:

linux读书笔记