鸟哥Linux私房菜基础学习篇学习笔记1

鸟哥Linux私房菜基础学习篇学习笔记1

第三章

  • 主导分区(MBR),当系统在开机的时候会主动去读取这个区块的内容,必须对硬盘进行分区,这样硬盘才能被有效地使用。
    • 所谓的分区只是针对64Bytes的分区表进行设置。
    • 分区的最小单位为柱面(cylinder)。
    • 扩展分区记录区也叫作逻辑分区。
    • BIOS是写入到主板上的固件,开机时计算机会主动执行的第一个程序。
  • 引导加载程序(Boot loader): 一支可读取内核文件来执行的软件。
  • 文件系统与目录树的关系(挂载):
    • 所谓挂载就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下。
  • NAT(达到路由器的功能): Linux通过NAT服务达到路由器。
  • Web(www服务器),www服务器几乎是所有网络都会安装的一个功能,www链接和网络主机上面的软件功能。
  • Proxy(代理服务器),Proxy将有效地解决带宽不足的问题。
  • FTP(文件传输服务器)进行网络数据传输。

第五章

  • 基础命令的操作:
    • 显示日期与时间的命令: date;
      • date +%Y/%m/%d格式化日期。
      • date +%H:%M格式化时间。
    • 显示日历的命令: cal;
    • 简单好用的计算器: bc;
  • 重要的热键;
    • TAB键进行补齐,包括文件补齐和命令补齐。
    • Ctrl+C这个组合键是中断当前程序。
    • Ctrl+d这个组合键代表键盘输入结束(End Of File)。
  • 在线求助man page 与info page:
    • man后面的数字的含义:
      • 1表示用户在shell环境中可以操作的命令或可以执行的文件。
      • 2表示系统内核可调用的函数与工具。
      • 3表示一些常用的函数与函数库(大部分是C的函数库)。
      • 4表示设备文件,在/dev文件夹下。
      • 5表示配置文件或者是某些文件的格式。
      • 6表示游戏(games).
      • 7表示惯例与协议,诸如Linux文件系统、网络协议,ASCII code等。
      • 8系统管理员所用的管理命令。
      • 9表示与kernel有关的文件。
    • man page中的查询:
      • /string向下查询string字符串;
      • ?string向上查询string字符串;
      • n继续向下查询,N继续向上查询;
      • q结束这次man page。
  • 正确的关机方法:
    • 查看系统的使用状态:
      • 查看网络联机状态: netstat -a;
      • 查看后台执行的程序: ps -aux;
      • 将数据写入硬盘中: sync
      • 惯用的关机命令: shutdown
        • shutdown -h now;
      • 重启和关机: reboot, halt, poweroff
  • root权限的密码忘记了,该怎么办?
    • 使用grub引导装载程序。

第六章

  • Linux的文件权限与目录配置
    • linux是一个多用户、多任务的操作系统,将文件分为3个类别: owner/group/others,且有read、write、execute的权限。
  • 用户与用户组:
    • 每个账号都可以有多个用户组的支持。
    • 王大毛的家就是用户组,王氏三兄弟就是用户。
    • 在Linux中的任意一个文件都具有User,Group及Others;
    • root权限就是万能的天神;
  • 账户信息都记录在/etc/passwd这个文件中,个人密码记录在/etc/shaow文件中,所有的组名都记录在/etc/group内。
  • 文件所有者的权限,同组用户的权限,其他非本用户组的权限。
  • 多少文件名连接到此节点(i-node)。
    • 所有者,所属用户组,文件大小,修改日期,文件名。
  • 如何改变文件属性与权限:
    • chgrp,改变文件所属用户组;
    • chown, 改变文件所有者;
      • 将目录下的所有子目录或文件同时更改所有者,需要添加一个-R选项。
      • chmod root:root install.log将install.log的所有者和用户组都改为root。
    • chmod,改变文件的权限。
      • r的值是4,w的值为2,e执行的值为1;
      • u代表user,g代表group,o代表others,a代表all。
      • +是加入, -是去除,=是设置。
  • Linux目录配置标准:FHS:
    • /usr软件放置处;
    • /etc配置文件;
    • /opt第三方软件;
    • /boot开机与内核文件;
    • /bin在单用户维护模式下还能被操作的命令;
    • /dev任何设备与接口都会存在于这个目录下;
    • /lib系统开机会用到的库函数;
    • /media中放置的是可删除的设备;
    • /mnt挂载额外的设备;
    • sbin给root用户的系统设置;
    • srv网络服务的数据目录;
    • tmp是用户或程序暂时放置文件的地方;
    • /var可变动的文件。
    • /lost+found当文件系统发生错误时, 将一些丢失的片段放到这个目录中。
    • /proc这是一个虚拟文件系统(virtual filesystem),它放置的数据都是在内存当中,系统内核,进程,网络状态,设备状态,本身不会占用磁盘空间;
      • /proc/cpuinfo, /proc/dma, /proc/interrupts。
    • /sys也是一个虚拟文件系统,主要记录与内核相关的信息;
      • 目前加载到内核中的内核模块;
      • 内核监测到的硬件设备信息;
  • 与开机相关的目录不能与根目录放到不同的分区中。

第七章

  • rmdir删除一个空的目录;
  • 关于执行文件路径的变量: $PATH;
    • $PATH中那个目录先被查询,就会先被执行这个目录下的命令。
  • basename就是取得最后的文件名;
    • dirname就是取得目录名。
  • 文件内容查阅:
    • cat由第一行显示文件内容;
    • tac从最后一行开始显示,是cat的倒写形式;
    • nl显示的时候随便输出行号;
    • more一页一页地显示文件内容;
      • 空格键(space)向下翻一页;
      • Enter向下滚动一行;
      • /string,向下查找string的字符串;
      • :f立即显示出文件名以及目前显示的行数;
      • q离开more,不再显示该文件内容;
      • b对文件往回翻页;
    • lessmore类似,但比more更好的是它可以往前翻页;
    • head只看头几行;
    • tail只看尾几行;
    • od以二进制的方式读取文件内容。
  • 修改文件时间或创建新文件: touch命令。
  • 文件与目录的默认权限与隐藏权限:
    • 文件默认权限: umask;
      • 与一般权限有关的是后面三个数字;
      • umask -S(Sybolic)以符号类型的方式来显示出权限。
    • 文件隐藏属性: chattr, lsattr;
      • lsattr命令显示文件隐藏属性;使用chattr设置后,利用lsattr来查看隐藏属性;
  • 查看文件类型: file命令;
    • 脚本文件名的查询,which这个命令查询执行文件;
    • 文件名的查找,whereis,寻找特定文件;
      • Linux系统的所有文件都记录在一个数据库文件里;
    • locate查找查找文件的部分名称;
      • -i忽略大小写的差异;
      • -r后面可接正则表达式的显示方式。
    • find命令:
      • find [PATH] [option] [action]
      • find的功能就是能够进行额外的动作(action);
      • 不但可以指定查找的目录,并且还可以利用额外的参数来找到最正确的文件名。
  • 权限与命令间的关系
    • 让用户进入某目录称为"可工作目录"的基本权限是什么:
      • 可使用的命令,cd;
      • 目录所需权限,至少需要具有x的权限;
      • 利用ls命令还需要r权限;
    • 让一个用户可以创建一个文件的基本权限是需要w;
  • 文件特殊权限: SUID, SGID, SBIT:
    • SUID只能用于二进制程序上,不能用在shell script上面;
    • SGID(Set GID),对二进制程序有用, 程序执行者对该程序来说要具有x的执行权限;
      • 执行者在执行的过程中将获得该程序用户组的支持;
    • SBIT(Sticky Bit)只针对目录有效;
    • 4位SUID,2位SGID,1为SBIT。

第八章

  • inode、block和superblock等文件系统;
    • super block记录此文件系统的整体信息,包括inode、block的总量、使用量和剩余量,以及文件系统的格式与相关信息;
    • inode记录文件属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;
    • block实际记录文件的内容,若文件太大时,会占用多个block。
  • 索引式文件系统(indexed allocation), FAT格式的文件系统(每个block号码都记录在前一个block当中)。
  • 在文件系统中,文件系统最前面有一个启动扇区(boot sector),这个扇区可以安装引导装载程序。
    • 数据块(data block), 用来放置文件内容的地方。
      • 每个block上最多只能放置一个文件的数据;
      • inode table(inode 表格): 每个文件都会占用一个inode而已;
      • 总额: 将直接、间接、双间接、三间接加总。
    • Superblock(超级块):Superblock是记录整个文件系统相关信息的地方,没有Superblock就没有这个文件系统了。
      • File system Description(文件系统描述说明);
      • block bitmap(块对照表);
      • inode bitmap(inode 对照表);
      • dumpe2fs [-bh] 设备文件名,dumpe2fs可以查询到非常多的信息;
      • df这个命令可以调出目前挂载的设备;
      • ls -li可以查看文件所占用的inode号码。
    • 将inode table与data block称为数据存放区域。
  • 系统会不定时地讲内存中设置为Dirty的数据写回磁盘,以保持磁盘与内存数据的一致性。
  • 挂载点(mount point)一定是目录,该目录是进入该文件系统的入口。
  • 传统文件系统,日志文件系统, 网络文件系统:
    • ls -l /lib/modules/$(uname -r)/kernel/fs --- 查看Linux支持的文件系统有哪些。
    • cat /proc/filesystems系统目前已加载到内存中支持的文件系统;
    • Linux VFS(Virtual Filesystem Switch),整个Linux的系统都是通过一个虚拟文件系统的内核功能去读取文件系统,整个Linux认识的文件系统都是VFS进行管理,VFS会帮助用户做好读取的操作。
  • 文件系统的简单操作:
    • 磁盘的目录的内容: df, du;
      • df: 列出文件系统的整体磁盘使用量;
      • dh: 评估文件系统的磁盘使用量(常用于评估目录所占容量)。
    • 连接文件: ln, 硬连接(hard link,实际连接)和软连接(symbolic link, 符号连接);
      • 文件名只与目录有关,但文件内容必须由inode的记录来指向;
      • hard link只是在某个目录下新建一条文件名连接到某inode号码的关联记录而已;
      • hard link不能跨文件系统,不能连接到目录。
      • symbolic link就是在创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件名,相当于window下的快捷方式;
      • symbolic link所创建的文件未一个独立的新文件,所以会占用掉inode与block。
      • ln -sf 源文件 目标文件
  • 磁盘的分区、格式化、检验与挂载:
    • fdisk -l 设备名称;fdisk还可以直接秀出系统内的所有分区。
    • partprobe强制让内核重新找一次分区表;
    • 磁盘格式化: 文件系统的格式化为mkfs命令;
      • mkfs -t 文件系统格式 设备文件名
    • 磁盘监测: fsck,badblocks;
      • fsck [-t 文件系统] [-ACay] 设备名称
      • badblocks -[svm] 设备名称
    • 磁盘挂载与卸载:
      • 单一文件系统不应该被重复挂载在不同的挂载点(目录)中;
      • 单一目录不应该重复挂载多个文件系统;
      • 作为挂载点的目录理论上应该都是空目录。
      • mount -amount [-t 文件系统] [-L Label名] [-o 额外选项]
      • umount [-fn] 设备文件名或挂载点
    • 磁盘参数的修改:
      • 主设备代码(major),次设备代码(minor),通过mknod命令进行设置。
      • mknod 设备文件名 [bcp] [Major] [Minor];
      • e2label命令用于修改卷标;
      • e2label 设备名称 新的Label名称
      • tune2fs -l 设备代号
      • hdparm [-icdmXTt] 设备名称
  • 开机挂载:
    • 设置开机挂载可以在/etc/fstab中进行设置,(file system table).
    • 特殊设备loop挂载:
      • mount -o loop /home/loopdev /media/cdrom
    • 内存交换空间:
      • swap的功能就是在应付物理内存不足的情况下所造成的内存扩展记录的功能。
      • free可以检查swap空间的大小。
  • 太多小文件会造成非常多的磁盘空间浪费;
  • boot sector(启动扇区)与super block是独立的,第一个block内就含有一个boot sector与superblock。
  • GUN项目的parted命令也可以用于分区;
    • parted [设备] [命令 [参数]]