版本
- Kernel
发行版
- redhat
- CentOS
- ubuntu
- fedora
Linux 与 Windows 区别
- Linux 严格区分大小写
- Linux 中所有的内容以文件形式保存,包括硬件、用户和文件
Linux 不靠扩展名来区分文件类型,靠权限来区分,但是有一些约定的扩展名,是给管理员看的
- 压缩包
.gz
.bz2
.tar.bz2
.tgz
- 二进制文件
.rpm
- 网页文件
.html
.php
- 脚本文件
.sh
- 配置文件
.conf
- 压缩包
- Windows 下的程序不能直接在 Linux 中安装和运行
Linux 更多使用字符界面
- 占用系统资源更少
- 减少出错和被攻击的可能性,会让系统更稳定
Linux 启动
- BIOS (Basic Input/Output System)
计算机通电后,首先就是读取刷入 ROM 芯片的开机程序 硬件自检
- BIOS 程序首先检查计算机硬件是否满足运行的基本条件,即硬件自检(Power-On Self-Test)
- 如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出 CPU、内存、硬盘等信息。
启动顺序
- 硬件自检完成后,BIOS 将控制权交给下一阶段的启动程序
- BIOS 有一个外部储存设备的排序,排在前面的就是优先转交控制权的设备(启动顺序,Boot Sequence)
主引导记录
- 计算机读取该设备的第一个扇区(前
512
字节),如果 521 字节的最后两个字节是0x55
和0xAA
,表明这个设备可以用于其启动;如果不是,表明设备不能用于启动,控制权于是被转交给启动顺序
中的下一设备 - 前面的
512字节
即 主引导记录(MBR, Master boot record)
- 计算机读取该设备的第一个扇区(前
主引导记录结构
- 1-446 字节:记录系统的启动信息,调用操作系统的机器码
- 447-510 字节:分区表,将硬盘分成若干个区
- 511-512 字节:主引导记录签名(0x55 和 0xAA)
分区表
- 磁盘分区是使用分区编辑器在磁盘上划分几个逻辑部分
- 磁盘一旦划分成多个分区,不同类的目录与文件可以存储进不同的分区
- 主引导记录必须知道将控制权交给哪个分区
- 分区表的长度为 64 个字节,里面分成四项(每项 16 个字节),因此一个硬盘最多分四个一级分区(主分区)
扇区
- 扇区是硬盘存储上的概念,盘片划分为若干扇形区域即扇区
- 扇区是硬盘上最小的读写单位,由硬盘决定不是操作系统决定
- 目前硬盘逻辑扇区大小等于物理扇区大小
- 物理扇区:硬件意义上的扇区
逻辑扇区
- 在物理扇区之上,操作系统划分的逻辑扇区,是为了方便操作系统读取写入硬盘数据而设置的,其带下与具体地址都可以通过一定的公式和物理地址对应
- 如果出现坏扇区,系统可以通过逻辑扇区,将物理上的坏扇区地址重新定位到备用的好扇区,以延长硬盘使用寿命
硬盘启动
- 计算机的控制权就要转交给硬盘的某个分区
- 四个主分区中,只有一个是激活的。计算机会读取激活分区的第一个扇区,即 卷引导记录(Volume boot record,VBR)
操作系统
- 控制权交给操作系统后,操作系统的内核首先被载入内存
- Linux,先载入
/boot
下的kernel
。内核加载成功后,第一个运行的程序是/sbin/init
。它根据配置文件产生 init 进程(Linux 启动后的第一个进程,pid 为 1,其他进程都是它的后代) - 然后,
init
线程加载系统的各个模块,如窗口程序和网络程序,直至执行/bin/login
程序,跳出登录界面,等待用户输入用户名和密码
硬件设备文件名
- 只要插入硬盘,Linux 会自动检测和分配名称
- 一个硬盘可以分成多个分区,每个分区都会有一个系统分配的名称
- 第一块 SCSI 硬盘叫
sda
,它的第一个分区叫sda1
硬件 | 设备文件名 |
---|---|
IDE硬盘 | /dev/hd[a-d] |
SCSI/SATA/USB 硬盘 | /dev/sd[a-p] |
光驱 | /dev/cdrom or /dev/hdc |
软盘 | /dev/fd[0-1] |
打印机(25针) | /dev/lp[0-2] |
打印机(USB) | /dev/usb/lp[0-15] |
鼠标 | /dev/mouse |
分区
- 磁盘分区是使用分区编辑器在磁盘上划分几个逻辑部分
- 磁盘一旦划分成多个分区,不同类的目录与文件可以存储进不同的分区
- 分区表的长度为 64 个字节,里面分成四项(每项 16 个字节),因此一个硬盘最多分四个一级分区(主分区)
扩展分区
- 规定有且仅有一个区可以被定义成扩展分区
- 扩展分区内又分成多个区,子分区叫逻辑分区
- 不能写入数据,只能包含逻辑分区,逻辑分区最多是 23 个(逻辑分区中可以写入)
- 故一个硬盘最多可以分 26 个区(3 个主分区 + 23 个逻辑分区)
格式化
- 根据用户选定的文件系统(如 FAT16(2G), FAT32(4G), NFTS, EXT2, EXT3, EXT4)对分区进行划分
- 目的是为了更好地写入和读取数据
- 主要是将整个分区切分成等大小的数据块,每个数据块是 4KB,是存放文件的最小空间
- 微软操作系统(DOS, Windows 等)中磁盘文件存储管理的最小单位叫
簇
- 在分区中划出一批用于存放文件分配表,目录表等用户文件管理的磁盘空间
- 格式化会清空数据
挂载点
- 为了让 Linux 系统中可以访问这些分区,需要把这些分区挂载到对应的目录上
- 在 Linux 是把目录称为
挂载点
- 把目录和分区链接在一起的过程称为
挂载
/
为根目录,必须挂载到一个分区上, 默认所有子目录都会写入这个分区- 同一级目录下的所有子目录可以有自己的独立存储空间
必须有的分区
- / 根分区
- swap 分区(交换分区,虚拟内存,一般为内存的 2 倍,不要超过 2G)
推荐分区
- /boot (启动分区,200M)单独分区,避免分区写满造成系统无法启动
挂载示例
/dev/sd2
挂载到/
目录上,即向/
目录下写文件就是往/dev/sd2
分区里写文件
常用命令
常见目录
- / 根目录
- /boot 启动目录,启动相关文件
- /dev 设备文件
- /etc 配置文件
- /home 普通用户的 home 目录,可以操作
- /lib 系统库保存目录
- /mnt 移动设备挂载目录
- /media 光盘挂载目录
- /misc 磁带机挂载目录
- /root 超级用户的 Home 目录,可以操作
- /tmp 临时目录,可以操作
- /proc 正在运行的内核信息映射,主要输出进程信息、内存资源信息和磁盘分区信息等
- /sys 硬件设备的驱动程序信息
- /var 变量
- /bin 普通的基本命令,如 ls,chmod 等,一般的用户也可以使用
- /sbin 基本的系统命令,如 shutdown,reboot,用于启动系统,修复系统,只有管理员才可以运行
- /usr/bin 后期安装软件的运行脚本
- /usr/sbin 放置一些用户安装的系统管理的必备程序
命令基本格式
命令提示符
[root@myhost ~]#
- root 当前登录用户
- myhost 主机名
- ~ 当前工作目录,默认是当前用户的 Home 目录(root 是 /root,普通用户是 /home/用户名)
- 提示符 超级用户是#,普通用户是 $
命令基本格式
- 命令 [选项] [参数]
- 当有多个选项是可以写在一起
- 一般参数有简化和完整写法两种
-a
和--all
等效
ls
- 查询目录中的内容
- ls [选项] [文件或目录]
选项
- -a 显示所有文件,包括隐藏文件
- -l 显示详细信息
- -d 查看目录本身的属性而非子文件 ls /etc/
- -h 人性化的方式显示文件大小
- -i 显示 inode,也就是 i 节点,每个节点都有 ID 号
- 默认当前目录下的文件列表
文件处理命令
mkdir 建立目录 make directory
- mkdir -p [目录名] (-p 递归创建)
cd 切换所在目录 change directory
- cd [目录]
- ~ home 目录
- . 当前目录
- .. 上级目录
- 相对路径是参照当前所在目录
- 绝对路径是从根目录开始
- 按 TAB 键可以补全命令和目录
- pwd 显示当前目录
rmdir 删除目录 remove empty directory
- rmdir [目录名]
rm 删除文件或目录
- rm [文件或目录]
- -r 删除目录
- -f 强制删除
- rm -rf [文件或目录] 递归强制删除所有目录
cp 复制命令 copy
- cp [源文件或目录] [目标文件]
- -r 复制目录,默认是复制文件
- -p 连带文件属性复制
- -d 若源文件是链接文件,则复制链接属性
- -a 相当于 -rpd
mv 修改文件或改名 move
- mv [源文件或目录] [目标文件]
ln 链接命令,生成链接文件
link
- 硬链接
- ln -s [源文件] [目标文件] (软链接)
文件搜索命令
locate
- 在后台数据库中按文件名搜索,速度较快
- 数据保存在
/var/lib/mlocate
后台数据库,每天更新一次 - 可以
updatedb
立即更新数据库 - 只能搜索文件名
/etc/updatedb.conf
建立索引的配置文件
whereis
- 搜索 命令 所在路径以及帮助文档所在位置
whereis ls
-b 只查找可执行文件 -m 只查找帮助文件
which
- 可以看到命令别名
which ls
- 能看到的都是外部安装的命令
- 无法查看 shell 自带的命令,如
which cd
- 可以看到命令别名
环境变量
- 定义系统搜索命令的路径
- 查看
echo $PATH
find 文件搜索命令
find [搜索范围] [搜索条件]
- 按名称搜索(避免大范围搜索,会非常耗性能)
find / -name aaa.log
- 通配符
find . -name "ab[cdef]"
(*
匹配任意内容,?
匹配任意一个字符,[]
匹配任意一个中括号内的字符) - -i 忽略大小写
- -user 按所有者进行搜索
find /root -user root
- 按时间搜索(-atime 文件访问时间,ctime 改变文件属性,mtime 修改文件内容)
- 按大小搜索(
find . -size 100k
) - 按 i 节点搜索
find . -inum 1234
- 按名称搜索(避免大范围搜索,会非常耗性能)
- grep 在文件中匹配符合条件的字符串
grep "10" access.log
帮助命令
- man [命令] 获取指定命令的帮助,如
man ls
压缩与解压缩
.zip
- 压缩文件
zip 压缩文件名.zip 源文件
- 压缩目录
zip -r 压缩目录名.zip 源目录
- 解压
unzip 压缩目录名.zip
- 压缩文件
gzip
命令 示例 含义 gzip 源文件 gzip a.txt 压缩为 .gz 文件,源文件会消失 gzip -c 源文件 > 压缩文件 gzip -c yum.txt > yum.txt.gz 压缩为 .gz 文件,源文件不会消失 gzip -r 目录 gzip -r xx 把目录下的每个子文件夹都变成压缩包,并删除原文件,当前目录无变化 gzip -d 压缩文件名 gzip -d yum.txt.gz 解压缩文件,不保留压缩包 gunzip 压缩文件 gunzip yum.txt.gz 解压缩文件,不保留压缩包 .bz2
压缩能力更强,不能压缩目录命令 示例 含义 bzip2 源文件 bzip2 1.txt 压缩为 .bz2 格式的文件,不保留源文件 bzip2 -k 源文件 bzip2 -k 1.txt 压缩为 .bz2 格式的文件,保留源文件 bzip2 -d 压缩文件名 bzip2 -d 1.txt bz2 解压压缩包,不保留压缩包 bunzip2 压缩文件名 bunzip2 1.txt.bz2 解压压缩包,不保留压缩包 tar
- 打包命令,只打包并不压缩
tar -cvf 打包文件名 源文件
- -c 打包
- -v 显示过程
- -f 指定打包后的文件名
tar -xvf book.tar
-x 解包
tar.gz
- zip 可以压缩目录但压缩效率不高,gzip 和 bzip2 压缩率高但不支持目录
- 可以先打包为
.tar
格式,再压缩为.gz
格式
命令 示例 含义 tar -zcvf 压缩包名.tar.gz 源文件 tar -zcvf book.tar.gz book 先打包为 .tar
格式,再压缩为.gz
格式tar -zxvf 压缩包名.tar.gz tar -zxvf book.tar.gz 解压 tar.gz 压缩包 tar -jcvf 压缩包名.tar.bz2 源文件 tar -jcvf book.tar.bz2 book 先打包为 .tar
格式,再压缩为.bz2
格式tar -jxvf 压缩包名.tar.bz2 tar -jxvf book.tar.bz2 解压 tar.bz2 压缩包
关机和重启
shutdown
- -c 取消前一个关机命令
- -h 关机
- -r 重启
init
init 0 # 关机 init 6 # 重启
- logout 退出登录
查看登录用户信息
w
- USER 用户名
- TTY 登录的终端
- FROM 登录的 IP
- LOGIN 登录的时间
- IDLE 用户闲置时间
- JCPU 该终端所有进程占用的时间
- PCPU 当前进程所占用的时间
- WHAT 正在执行的命令
- who 查看登录用户信息(只显示 USER,TTY, LOGIN)
- last 查看当前登录和过去登录的用户信息
- lastlog 查看所有用户的最后一次登录时间
磁盘管理
df 查看磁盘分区使用状况
参数 描述 -l 仅显示本地磁盘(默认) -a 显示所有文件系统的使用情况 -h 以 1024 进制计算最合适的单位显示磁盘容量 -H 以 1000 进制计算最合适的单位显示磁盘容量 -T 显示磁盘分区类型 -t 显示指定类型文件系统的磁盘分区 -x 不显示指定类型文件系统的磁盘分区 du 统计磁盘上的文件大小
参数 描述 -b 以 byte 为单位 -k 以 KB 为单位 -m 以 MB 为单位 -h 以 1024 为单位 -H 以 1000 为单位 -s 指定统计目标
文件查看命令
cat 连接文件并打印到标准输出设备上
cat [-AbeEnstTuv] [--help] [--version] fileName
- -n or --number 由 1 开始对所有输出的行数编号
more
- 类似于 cat,但会以一页一页的形式显示,方便逐页阅读
- head 显示开头某个数量的文字区块(查看前几行)
head -5 readme.txt
tail
tail [参数] [文件]
查看文件的内容(查看后几行)- -f 循环读取
- -n<行数> 显示文件的尾部 n 行内容