Linux学习笔记
1、Linux目录介绍
最重要的是根目录:/
root:超级管理员目录
etc:配置文件目录
usr:软件安装目录
lib :系统函数库
var:软件下载目录
sbin:系统级可执行命令
bin:可执行命令目录
dev:设备目录
mvt:挂载点目录
tmp:临时文件目录
home:用户主目录
opt:可选软件安装目录
proc:虚拟文件目录
lost+found:系统异常临时存放目录
2、文件权限与目录配置
用户相对于文件、目录的角色:user、group、others;
普通权限分为:可读r、可写w、可执行x;
特殊权限分为:SUID(用户所有权)\SGID(用户组所有权)\SBIT(仅用户删除权);
隐藏属性attr分为:不可变动i、只准增加a、不可备份d、自动压缩c、硬删除s、软删除u;
一个文件只能属于一个user和一个group;
一个目录需要具有r+x权限才能被读取,w则可删除、修改目录里的文件;
- 修改文件属性和权限
chgrp:修改文件所属用户组
chown:修改文件所有者
chmod:修改文件权限 - 目录的四种形态:
可分享、不可分享、可变动、不可变动
主要分区:
根目录:/,不可分享、不可变动
软件安装区:/usr,可分享、不可变动
可变区:/var、可分享、可变动
home目录:/home,不可分享、可变动
3、文件与目录管理
- 相对路径与绝对路径
当前目录: ./
父目录:../ 目录命令
cd:切换目录
pwd:显示当前目录
mkdir:创建目录
rmdir:删除目录
ls:查看目录
mv:移动文件或目录
cp: 复制文件或目录
rm:删除文件或目录
basename:取文件名
dirname:取目录名设置目录的默认权限:umask
默认权限中,目录的最大权限是777,文件的最大权限是666
默认权限的值:0002,分别为attr\r\w\x权限;表示最大权限减去该值后则是文件或目录权限;
查看隐藏属性:lsattr
修改隐藏属性:chattr环境变量$PATH
不同用户的默认PATH是不同的;
修改PATH:PATH=”$PATH”: /newDir
4、磁盘与文件系统管理
每一个分区都有一个独立的文件系统;
硬盘的一些概念:
- 扇区:最小的存储单位,每个扇区是512byte。最重要的是第一扇区,包含了主引导记录MBR(446byte)、分区表(64byte,这决定了一个硬盘最多4个主分区)。
- 柱面:最小分区单位。
EXT文件系统的一些概念:
- 超级块superBlock:1024byte,记录整个文件系统的使用信息,包括inode/block总量、使用量、剩余量等;
- inode:记录文件的属性,每个128byte,一个文件对应一个inode,包括权限、用户组、时间、数据块指针(N个);
- block:数据块(N个)大小有1K、2K、4K,存放实际的文件数据,每个block最多只能放置一个文件的数据,可能会有浪费;
- 块 组:包含inodeTable、superBlock、block、inodeMap对应表、blockMap对应表,便于管理;
- inodeTable:存放inode、inodeNumber的对应关系,与目录块、inode相关;
- inodeMap对应表:记录inode分配与否;
- blockMap对应表:记录block分配与否;
- 目录块:每个目录都会有一个或N个block,存放文件名与该文件的inodeNumber;
注意:inode本身不记录文件名,文件名记录在目录的block中;
数据在内存中的状态:clean和dirty;sync将dirty内容同步回硬盘;
ext2是传统的文件系统(遍历硬盘检查异常数据并修复);
ext3是日志文件系统(采用日志修复数据);
新增磁盘需要进行以下操作:
- 分区:fdisk、parted
- 格式化(决定了inode、block的数量和位置):mkfs
- 挂载:mount、卸载umount
- 其他辅助,如磁盘检查fsck、badblocks
- 磁盘参数修改:mknod、e2label、tune2fs
挂载
挂载:指将分区(文件系统)跟目录关联;
命令:mount
开机自动挂载配置:
配置文件:/etc/fstab、/etc/mtab
文件系统的管理
VFS:虚拟文件系统,用来管理多个、不同的文件系统,对用户屏蔽差异性;
硬链接:多个文件名指向同一个inodeNumber;
软连接:新建一个inode,指向该文件的inode;
硬链接的限制:
- 不能跨分区;
- 不能连接到目录;
5、文件的压缩与打包
压缩的简单描述:
文件的btye中的bit大部分是没有被使用的或者重复的,利用算法将这些没被使用的、重复的bit精简下来,就是压缩技术。
解压缩的简单描述:
压缩的逆过程;
- 常见的压缩类型:gz、Z、bz2
- 打包类型:tar
- 打包加压缩:tar.gz、tar.bz2
压缩命令:gzip、bzip2,只能压缩文件,目录需要先打包成tar
解压缩命令: gzip -d、bzip2 -d
读取压缩的文本文件数据:zcat f.gz、bzcat f.bz2
打包的简单描述:
将一对文件、目录打包为一个文件xxx.tar;
打包+压缩为.gz:tar -zcvf pkg.tar.gz *
打包+压缩为bz2:tar -jcvf pkg.tar.bz2 *
排除部分文件不压缩: 增加 –exclude参数
解压缩.gz+解包:tar -zxvf pkg.tar.gz -C /tmp/ 指定解压目录/tmp/
解压缩.bz2+解包:tar -jxvf pkg.tar.bz2 -C /tmp/指定解压目录/tmp/
利用打包备份:tar -cvf /dev/st0 /home /etc /root
打包某时刻后的新文件:tar -jcvf pkg.tar.bz2 –newer-mtime=’2018/01/01’ /etc/*
利用管道或数据流,实现边打包、边解压缩到当前目录:
tar -cvf - /etc/* | tar -xvf -
备份工具dump
- 备份单一文件系统:全功能、完整备份+差异备份、crontab定时备份
- 备份目录 :有限制
全备份、本目录、不记录备份时间
备份命令:dump -0jf dumpFile.bk /root
恢复命令:restore -f dumpFile.bk
备份到光盘的步骤:
- 制作ISO备份文件:mkisofs
刻录到光盘:cdrecord
其他压缩和备份工具:
dd:dd if=inputFile of=outputFile
6、bash
简单描述bash:
bash就是个应用程序,可调用其他应用程序,通过操作系统提供的接口,调用内核程序,执行相应的操作。
bash的功能
- 命令记忆功能:history可查看当前用户曾调用的命令;~/.bash_history存放当前用户上一次登录所使用过的命令;
- 命令与文件补全功能:tab(2次)
- 别名功能:设置alias,alias lm=’ls -al’
- 作业控制、前台、后台:
- 脚本:
- 变量:包括环境变量:PATH\HOME\MAIL\SHELL\LANG\HISTSIZE\MAIL\RANDOM\等;自定义变量;
- 其他bash变量(不是环境变量):PS1$\?\OSTYPE\HOSTTYPE\MACHTYPE\
变量设置规则:实例
正确 | 错误 |
---|---|
var=abc | var = abc |
var=$PATH | 2var=$PATH |
var=’I love you’ | var=I love you |
var=”my home is $HOME” 取变量 | var=’my home is $home’ 纯文本 |
var=`uname -r` or var=$(uname -r) 执行命令 | var=uname -r |
PATH=$PATH:/home/bin 追加内容 |
设置环境变量:export VAR,子程序可以继承父程序的环境变量;相反则不行;
取消变量:unset VAR
查看环境变量:env
查看所有变量:set
`uname -r` | $(uname -r):两者等效,指优先执行其内的命令;
声明类型:declare、typeset