linux学习(2)

1 AUG TUE
P146 - P153
6.2.2 如何改变文件属性与权限

  • 改变权限 chmod
    r: read 4
    w: write 2
    x: execute 1
    [-rwxrwx—] is 7 7 0
    chmod [-R] xyz filename/directory -R 为递归的持续更改,即子目录下的所有文件都会更改

    对于以vim编辑一个shell的文字批处理文件后,它的权限通常是“-rw-rw-r–”(664),要把它变成可执行文件,并且不让其他人修改此文件的话,就需要改成[-rwxr-xr-x]755.

  • 另一种方法修改权限:

chmodu(user) g(group) o(others) a(all)+(加入)-(除去)=(设置)r,w,x文件或目录

eg chmod u=rwx,go=rx filename
eg chmod a+x filename means adding execute permission to all

6.2.3 目录与文件的权限意义
对于文件而言:
- read. 可读取此文件的实际内容,如读取文本文件的文字内容等
- write. 可以编辑新增或者修改改文件的内容(但不含删除该文件)
- execute. 可以被执行

对于目录而言:
- read. 有读取目录结构列表的权限,比如可以用ls命令把该目录的内容显示出来
- write. 有更改该目录结构列表的权限,如:新建文件或目录,删除文件或目录(不管文件的权限如何),重命名,转移该目录内的文件、目录位置。(反正目录的w权限与该目录下面的文件名变动有关)
- x. access directory. 代表用户能否进入该目录成为工作目录。比如说cd。

cat filename 可以把文件内容读出来。

2 AUG WED
P154-P196
6.4
- 有五个目录不可与根目录放在不同的分区,分别为/etc, /bin, /lib, /dev, /sbin
- chown username filename 修改文件所有者
- chgrp groupname filename 修改文件用户组

Linux中重启的两个命令:reboot和init 6之间的区别
reference
init命令用于改变操作系统的运行级别。
Init 6是重新启动机器。
reboot也是重新启动机器。
那么这两个命令到底有什么区别呢?
对这两个操作使用man命令看到的内容如下:
“init 6” 基于一系列/etc/inittab文件,并且每个应用都会有一个相应shutdown脚本。
‘init 6’ 调用一系列shutdown脚本(/etc/rc0.d/K*)来使系统优雅关机;
‘reboot’并不执行这些过程,reboot更是一个kernel级别的命令,不对应用使用shutdown脚本。 .

  • 所有目录下面都会存在的两个目录,分别是”.”和”..”,分别代表当前层目录与上一层目录。(根目录“/”的“.”和“..”是同一个目录)
  • cd 切换目录
    • cd ~ 切换回到当前用户的主文件夹
  • pwd 显示当前目录 print working directory
    • pwd -P可以显示链接文件的实际目录。
  • mkdir 新建一个新的目录
    • mkdir -p test/test2/test3/test4 使用-p可以自行创建多层目录
    • mkdir -m 711 test2 使用-m可以强制设置属性
  • rmdir 删除一个空的目录remove empty directory
    • 如果文件夹不为空,则不能删除
    • rmdir -p test1/test2/test3/test4 可以用-p将连同上层“空的”目录也一起删除。如这里可以最后把四个文件夹都删除。
  • rm -r 删除非空文件夹
  • 环境变量$PATH, 每个目录中间用冒号(:)来隔开,每个目录是有顺序的。
    • 把某目录添加到PATH中: PATH="$PATH":yourdirectory(eg. /root)

7.2 文件与目录管理
ls -h将文件容量以KB,GB之类人类易读方式列出来
ls -l列出长数据串,包含文件的属性与权限等数据
ls -r将排序结果反向输出,如从小到大变成从大到小
ls -t以时间排序,而不是用文件名

7.2.2 cp, rm, mv

  • cp [options] sourcefile destfile/directory

    • -r 递归持续复制,多用于复制文件夹
    • -i 若目标文件(destination)已存在时,在覆盖时会先询问操作的进行
    • -p 连同文件的属性一起复制过去,而非使用默认属性
    • 注意: 默认条件中,cp的源文件与目的文件的权限是不同的,目的文件的所有者通常是命令操作者本身。所以,复制的时候要注意特殊权限文件,必须要加上-a或者是-p等可以完整复制文件权限的参数才行。
  • 用通配符*,可以进行正则匹配。如rm -i bashrc*可以把所有开头为bashrc的文件名全部删除。

  • rm -r directoryname 会询问是否要删掉此目录,要输入‘y’或者‘n’操作。如果想直接删除目录而不要询问,则在命令前加上反斜杠\rm -r /tmp/etc,同理的还有\cp -r /etc/ .
  • mv可以用来移动文件与目录,或者重命名。
    • mv [-fiu] source destination -f: (force)强制的意思,如果目标文件已经存在,不会询问而直接覆盖;-i,(inform)如果目标文件已经存在,会先询问;-u:(update)若目标文件存在,且source比较新,才会更新
    • mv [options] source1 source2 source3 ... directory
  • 使用rename进行大量文件名的批量修改: 匹配关键字 替代字 所有匹配的文件名(正则):
    • rename from to file
      examples of rename

7.3 文件内容查阅

  • cat 从第一行开始显示文件内容, -n 可以显示行号,-A:列出一些特殊字符,结尾断行字符用$显示,【TAB】用^I显示。
  • tac 从最后一行开始显示(把cat倒写)
  • nl 显示的时候,顺便输出行号
  • more一页一页地显示文件内容
  • less与more相似,但是可以往前翻页
  • head -n number filename只看头几行(如果要求不打印后100行,只打印之前的,则-n -100
  • tail -n number filename只看结尾几行(对很大型的几百MB的log很有用)。持续监测某文件内容,可以用-f指令,直到输入ctrl+c退出
  • od 以二进制的方式读取文件内容
  • touch用来创建一个空的文件;还可以将某个文件日期修改为目前日期(mtime: modification time与atime: access time)

7.4.1 文件默认权限: umask
umask 对于root用户,一般是 0022,意思是“该默认值需要减掉的权限”。一般看后面三个数“022”:user没有被减掉权限,group被减掉write权限,others被减掉write权限。注意不是用777对这个022相减,而是根据实际情况减掉权限。

  • 新建文件时:[-rw-rw-rw-] - [—–w–w-]==[-rw-r–r–]
  • 新建目录时:[drwxrwxrwx]-[d—-w–w-]==[drwxr-xr-x]

如何修改umask的值?
umask targetvalue –> umask 002

7.4.3 文件特殊权限 SUID, SGID, SBIT

  • SUID: SetUID e.g. -rwsr-xr-x,说明用户自己执行文件时,会暂时获得root权限. SUID仅可用在二进制程序上,而且对于目录是无效的。
  • SGID:SetGID e.g -rwx--s--x,SGID可以针对文件或目录来设置。
  • SBIT:Sticky Bit. 只针对目录有效。

如何修改文件特殊权限:
- SUID:u+s
- SGID:g+s
- SBIT:o+t

7.4.4 查看文件类型file

7.5.1 脚本文件名的查询

  • which : 寻找“执行文件”
    • which [-a] command
    • -a表示将所有由PATH目录中可以找到的命令都列出,而不只是第一个被找到的命令名称。
    • which是根据用户所设置的PATH变量内的目录去查找可执行文件的,所以不同的用户(eg root and common users)的PATH设置内容找到的内容指令有可能不一样。
    • alias为命令别名。

7.5.2 文件名的查找

  • whereis 寻找特定文件
    eg. whereis ifconfig

  • locate寻找相关的文件名/文件夹(只需要提供文件的部分名称) 相当方便!!
    eg. locate passwd
    会比find指令快很多,因为locate是经由数据库来查找的。linux系统会将系统内的所有文件都记录在一个数据库文件里面,每天执行一次更新,所以有可能出现新建文件之后查找该文件,然后locate会显示“找不到”。于是要手动更新数据库。

  • updatedb 用来更新locate数据库(需要root权限)

  • find 指令:find [PATH] [option] [action]
    • 与时间有关的参数
      eg. 找出过去24小时以内有改动的文件: find / -mtime 0
      eg. 找出3天前的24小时以内有改动的文件:find / -mtime 3
      最后一个参数3,表示3天前;0则表示从今天开始算的过去24小时。
      eg. find / -mtime -4 这里-4表示小于等于4天内的文件。即从四天前到今天;同理,+4表示大于等于5天前的文件。
    • 与用户或组名有关的参数
      eg. -uid n, -gid n, -user name, -group name,-nouser(不存在的用户), -group name(不存在的用户组)
      eg. find /home -user username 查找/home下面属于username用户的文件

练习
groupadd project 增加新的用户组”project”
useradd -G project userA -G 表示创建该用户自己的分组,并放入project分组中,若为-g,则直接放入project分组中,不会创建自己的分组。
useradd -G project userB

3 AUG THU
P197-207

  • 索引式文件系统indexed allocation.

    • super block: 记录此文件系统的整体信息,包括inode/block总量、使用量、剩余量…
    • inode: 记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码
    • block:实际记录文件的内容,若文件太大时,会占用多个block
  • FAT格式

    • 没有inode存在,所以没办法将整个文件的所有block在一开始就读取出来
    • 每一个block号码都记录在前一个block当中。

碎片整理
原因:文件写入的block太过于离散了,此时文件读取的性能将变得很差。这个时候通过碎片整理将同一个文件所属的block汇合在一起,这样数据的读取会比较容易。FAT的文件系统需要经常碎片整理。

  • data block 数据块

    • 用来放置文件内容的地方,ext2文件系统支持的block大小有1KB,2KB , 4KB三种。
    • block的大小和数量在格式化完了之后就不能够再改变了(除非重新格式化)
    • 每个block内最多只能够放置一个文件的数据
    • 如果文件大于block的大小,则一个文件会占用多个block数量
    • 如果文件小于block的大小,则剩余的空间也不会再被使用了(磁盘空间会浪费)
  • inodetable(inode表格)

    • 直接,间接,双间接,三间接
  • df -h 列出目前挂载的设备

  • dumpe2fs -h deviceName 只列出superblock的数据 ,eg. dumpe2fs /dev/sda1

  • inode本身并不记录文件名,文件名的记录是在目录的block中。inode用来指向block。

  • 数据存放区域:inode table, data block

  • 中间数据metadata:super block, block bitmap, inode bitmap. 因为他们的数据是经常变动的,每次添加删除编辑时都有可能影响到这三个部分的数据,因此成为中间数据。

4 AUG FRI
P208-P238

8.2 文件系统的简单操作

  • df 列出文件系统的整体磁盘使用量
    • -h 用GB.MB.KB等易读的格式显示
    • -i 不用硬盘容量,而以inode的数量来显示
  • du 评估文件系统的磁盘使用量(用于评估目录所占用量)

    • -s 列出总量而已,而不列出每个个别的目录占用容量
    • eg. du -sm /* 检查根目录下面每个目录所占用的容量
  • 连接文件:ln

    • hard link 硬连接或实际连接
      • 有多个文件名对应到同一个inode号码
      • 如果将任何一个“文件名”删除,其实inode与文件实际内容的block还是存在的。
      • 无论用哪个“文件名”来编辑,最终的结果都会写入相同的inode与block中,均能进行数据的修改。
      • hard link不能跨文件系统,不能连接到目录(因为如果使用hard link连接到目录时,连接的数据需要连同被连接目录下面的所有数据都建立连接,复杂度很大)
    • symbolic link 符号连接(也就是快捷方式)
      • 就是创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。
      • 当源文件被删除之后,symbolic link的文件会“开不了”,表示“无法打开某文件”。实际上就是找不到它的源文件。symbolic link 的文件记录的其实是目标文件的“文件名(含路径)”,它会根据文件名连接到正确的目录去取的目标文件的inode,最终就能读到正确的数据了。
      • eg. ln -s 源文件 目标文件 如果不加任何参数就进行连接,那就是hard link, 加上-s就是symbolic link

8.3.1 磁盘分区 fdisk
- fdisk [-l] deviceName 参数-l作用是输出后面接的设备所有的分区内容。若仅有fdisk -l时, 则系统将把整个系统内能找到的设备的分区列出来。
- eg. 先找出系统中的根目录所在磁盘:df /,加入找到的是/dev/hdc2,则fdisk /dev/hdc(这里不要加上数字)

8.3.2 磁盘格式化 mkfs - make file system

  • mkfs [-t 文件系统格式] 设备文件名 eg. mkfs -t ext3 /dev/hdc6
  • mke2fs [-b block大小] [-i block大小] [-L 卷标] [-cj] deviceName

8.3.3 磁盘检验:fsck, badblocks

  • fsck [-t 文件系统] -[ACay] deviceName 检验文件系统是否出错,对发生错乱的文件系统进行分析
  • badblocks -[svw] deviceName 检查硬盘或软盘扇区有没有坏轨

8.3.4 磁盘挂载与卸载

  • 单一文件系统不应该被重复挂载不同的挂载点(目录)中
  • 单一目录不应该重复挂载多个文件系统
  • 作为挂载点的目录理论应该都是空目录才是:如果要用来挂载的目录里面并不是空的,那么挂载了文件系统之后,原目录下的东西就会暂时消失(被隐藏了)。

  • mount

    • eg. mount /dev/hdc6 /mnt/hdc6把/dev/hdc6(分区)挂载到/mnt/hdc6(空文件夹)上面
    • eg. mount -a 按照配置文件/etc/fstab的数据将所有未挂载的磁盘都挂载上来
    • eg. mount -l 查看目前已挂载的文件系统,包含各文件系统的label名称
    • eg. 重新挂载根目录mount -o remount,rw,auto / 对/进行重新挂载为读写方式
    • eg. mount --bind /home /mnt/home把/home这个目录暂时挂载到/mnt/home下面(把两者连接到同一个inode)
  • umount 将设备文件卸载 umount [-fn] 设备文件名或花在点 -f:强制拆卸

  • 使用Label name进行挂载的方法
    • eg. dumpe2fs -h /dev/hdc6找出/dev/hdc6的label name
    • eg. mount -L "label name" /mnt/hdc6

8.4 设置开机挂载
修改/etc/fstab开机时的配置文件
- 根目录/要先于其他mount point被挂载进来
- 其他挂载点必须为已新建的目录
- 如果要进行卸载,不许先把工作目录移到挂载点(及其子目录)之外
- 设置完毕务必使用mount -a测试语法正确否

8.4.2 特殊设备loop挂载
创建大型文件以制作loop设备文件,解决分区不良的情况。如:在分区时,只分出一个根目录,但是没有多余的空间可以进行额外的分区。
dd if=/dev/zero of=/home/loopdev bs=1M count=512
ll -h /home/loopdev
mkfs -t ext3 /home/loopdev
mount -o loop /home/loopdev /media/cdrom

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值