1 认识Linux及Linux主机规划与安装
1.1 什么是Linux
1.1.1 核心Kernel
操作系统最底层的的东西,必须管理一下事项:
系统调用接口:System Call Interface
进程控制:Process Control
内存管理:Memory Management
文件管理系统:File System Management
设备驱动程序:Device Drivers
1.1.2 名词缩写
GNU: GNU’s Not UNIX GNU并不是UNIX
GPL: GNU General Public License 通用公共许可证
GCC: GNU C
glibc: GNU C Library
GUI: Graphical User Interface 图形用户界面
LSB: Linux Standard Base Linux标准基础
FHS: File system Hierarchy Standard 文件系统层次标准
BIOS: Baisc Input/Output system 基本输入/输出系统
NAT: Network Address Translation 网络地址转换
MBR: Master boot recorder 主引导分区
Partition table 磁盘分区表
1.2 如何学习Linux
1.2.1 Linux 操作模式
X-window 图形界面
Command Line 命令行
1.2.2 Linux的应用
网络服务器: 例如WWW,邮件服务器,文件服务器,FTP服务器
工作站计算机: 工作站计算机本身不应提供Internet服务,通常面对比较重要的应用,如软件开发人员的工作平台
台式计算机: 桌面系统
嵌入式系统: 微型计算机等消费小型电子设备的系统
1.3 Linux主机的规划
1.3.1 Linux 设备号
在Linux中,每一台设备都被当成一个文件来对待,几乎所有的硬件设备号文件都在/dev目录中。
设备 Linux中的设备号
IDE硬盘 /dev/hd[a~d]
SCSI硬盘 /dev/sd[a~p]
U盘 /dev/ sd[a~p](与SCSI硬盘一样)
CDROM /dev/cdrom
软驱 /dev/fd[0~1]
打印机 /dev/lp[0~2]
鼠标 /dev/mouse
磁带机 /dev/ht0(IDE)或/dev/st0(SCSI)
1.3.2 Linux的主机服务:
NAT: (类似IP共享的功能)申请一个固定的IP地址,然后通过IP共享(IP Sharing)
SAMBA: (类似网上邻居功能)Linux和windows共享,需要使用SAMBA
Mail: (邮件服务器)提供Sendmail和Postfix邮件服务
Web: (WWW服务器)
DHCP: (提供自动获取IP地址的功能)
Proxy: (代理服务器)
FTP:
1.3.3 大硬盘分区
将引导分区规范在小于1024以内,简单可以划分3个分区:
/boot (只需要100MB以内即可,并且要放到整块硬盘的最前面)
/
Swap
1.4 安装FC4与多重启动技巧
1.4.1 磁盘号
IDE1(Primary) /dev/hda /dev/hdb
IDE2(Secondary) /dev/hdc /dev/hdd
1.4.2 硬盘分区
硬盘分为2个区域:
MBR:主引导分区(引导程序和磁盘分区表)
文件数据放置的区域
硬盘分区:实际上是修改MBR里面的分区表
一个硬盘最多有4个( 主+扩展)分区:P+P+P+P or P+P+P+E
扩展分区其实就是“指向”正确的额外分区表,本身扩展分区是不能在任何系统上使用的,还需要额外奖扩展分区分成逻辑分区才能使用
IDE硬盘 :逻辑分区的号码可达63号
SCSI硬盘 :逻辑分区的号码可达15号
主分区1~4号已经被预留,所以第一个逻辑分区的代号从5开始。
举例说明:
安装在IDE1的主盘,分成6个分区:
1.1 启动关机,在线求助与执行命令的方式
1.1.1 切换X Window与命令行模式
ALT+CTRL+Backspace :重新启动X Window
ALT+CTRL+F1~F6: 命令行登入tty1~tty6终端
ALT+CTRL+F7: 图形界面桌面
1.1.2 重要热键Tab,CTRL+C,CTRL+D
Tab: 命令补全,文件补齐
CTRL+C: 中断正在执行中的命令
CTRL+D: 键盘输入结束(End of file),EOF,输入结束(End of input)
Man page的数据是放在/usr/share/man
Info命令的数据时放在/usr/share/info
1.1.3 常用的关机命令
/sbin/shutdown –h now à立刻关机
/sbin/shutdown –h 10:25à10:25关机
/sbin/shutdown –h +10 à再过10分钟后关机
/sbin/shutdown –h 10 ‘I will shutdown after 10 mins’ –>10分钟后关机,并显示信息
/sbin/shutdown –r now à立刻重新启动
/sbin/shutdown –r +30 ‘The system will reboot after 30min’ –>30分钟后,重启,并显示信息
/sbin/shutdown –k now ‘The system will reboot’ –>仅发出警告,并不关机
Reboot/halt/poweroff
1 Linux文件,目录和磁盘格式
1.6 Linux的文件属性和目录配置
1.6.1 用户和用户组
用户/用户组/其他人(owner/group/other),定义不同权限read/write/excute
所有系统账户与一般身份用户及root相关信息都记录在/etc/passwd文件中
密码记录在/etc/shadow文件中
Linux所有用户组名称都记录在/etc/group文件内
1.6.2 Linux文件属性
drwxrwx---
[d]: 目录文件
[-]: 普通文件
[l]: 连接文件(link file)
[b]: 块设备(设备文件中可供存储的接口设备)
[c]: 字符设备(设备文件中串行端口设备)
对于只有r权限的目录文件,不能够进入该目录,只能列出目录下的文件名
drwxr--r--. 3 root root 4096 Feb 28 18:27 test
[msdn@localhost tmp]$ ll ./test
ls: cannot access ./test/test1: Permission denied
ls: cannot access ./test/test.txt: Permission denied
total 0
d????????? ? ? ? ? ? test1
-????????? ? ? ? ? ? test.txt
1.6.3 更改文件权限
chgrp 更改所属用户组,要更改的用户组名称必须在/etc/group存在
chgrp [–r] 用户组 文件或目录
-r 进行递归的持续更改,连同子目录下的所有文件,目录都更新成这个用户组
chown 更改文件拥有者,要更改的用户名称必须在/etc/passwd存在
chown [-r] 用户:用户组 文件或目录
chmod 更改文件属性
chmod [-r] xyz 文件或目录
chmod (u/g/o/a)(+/-)=(r/w/x) 文件或目录
chmod u=rwx,go=rw filename
1.6.4 目录配置的内容
目录 | 应放置的文件内容 |
/ | 根目录,一般建议在根目录下面只有目录,不要直接有文件 |
/bin | 都是放置“用户可执行的二进制文件的目录” |
/boot | 放置Linux启动时用到得文件,启动时会用到Linux的核心文件vmlnuz |
/dev | 任何设备都以文件类型放在此目录下 |
/etc | 放置系统的主要设置文件,一般只有root有权限修改, |
/home | 系统默认的用户家目录 |
/lib | 系统使用的库函数的目录 |
/lost+found | 系统出现异常,产生错误时,会将一些遗失的片段放于此目录下 |
/mnt | 软盘和光盘的载入点 |
/opt | 给主机额外安装软件所放置的目录 |
/proc | 虚拟文件系统,数据放置在内存中,不占硬盘空间 |
/root | 系统管理员的家目录 |
/sbin | 放一些系统管理员才会用到的执行命令,例如fdisk,mke2fs,fsck,mkswap,mount… |
/srv | 一些服务启动之后,这些服务需要访问的数据目录 |
/tmp | 一般用户或者是正在执行的程序临时放置文件的地方 |
/usr | 包含系统的主要程序,图形界面所需要的文件,额外的函数库,本机自行安装的软件,以及共享的目录与文件 |
/var | 主要放置系统执行过程中经常变化的文件,如缓存或者是随时更改的登录文件 |
1.1 Linux文件和目录管理
1.1.1 pwd/mkdir/rmdir
pwd [-P]
‘-P’显示出实际路径,而非使用连接(link)路径
mkdir –p test1/test2/test3/test4
mkdir –m 711 test1
默认属性由umask来决定
rmdir –p test1/test2/test3/test4
PATH=”$PATH”:/root
1.1.2 cat/tac/nl/more/less/head/tail
nl [-bnw] filename
-b:行号的指定方式
-b a:不论是否为空行,均输出行号
-b t:如果有空行,空行不要列出行号
-n:列出行号的表示方法
-n ln:行号在屏幕的最左方显示
-n rn:行号在屏幕的最右方显示,并不加零
-n rz:行号在屏幕的最右方显示,且加零
-w:行号字段站的位数
1.1.3 文件时间
modification time: mtime 修改时间 更改文件内容,会更新此时间
status time: ctime 状态时间 更改文件权限和属性,会更新此时间
access time: atime 访问时间 读取文件内容,会更新此时间
ls -al /etc/man.config
ls -al --time=ctime /etc/man.config
ls -al --time=atime /etc/man.config
touch -t 1202191200 bashrc
[root@localhost tmp]# ll bashrc ;ll --time=atime bashrc;ll --time=ctime bashrc
-rw-r--r--. 1 root root 176 Feb 19 12:00 bashrc
-rw-r--r--. 1 root root 176 Feb 19 12:00 bashrc
-rw-r--r--. 1 root root 176 Feb 29 17:28 bashrc
atime和mtime都修改了,但是ctime记录仍然是当前的时间
1.1.4 文件默认权限
[root@localhost tmp]# umask;umask -S
0022
u=rwx,g=rx,o=rx
[root@localhost tmp]# touch test;mkdir test1
[root@localhost ~]# touch test1;mkdir test2
[root@localhost ~]# ll
-rw-r--r--. 1 root root 0 Feb 29 17:41 test1
drwxr-xr-x. 2 root root 4096 Feb 29 17:41 test2
1.1.5 文件特殊权限SUID/SGID/Sticky Bit
创建s和t的权限,是为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限
SUID:
SUID仅可用在’二进制文件binary file’,不能用在批处理文件(shell script)上
SUID对目录是无效的
SGID:
文件:如果SGID设置在二进制文件上, 不论用户是谁,在执行改程序的时候,它的有效用户组将会变成改程序的用户组所有者
目录:如果SGID设置在A目录上,则在该目录内所建立的文件或目录的用户组,将会是此A目录的用户组
一般来说,SGID多用在特定的多人团队的项目开发上,在系统中用的较少。
Sticky Bit:
SBit只是针对目录有效,对文件没有效果。
/tmp 本身的权限是drwxrwxrwt ,任何人都可以再/tmp内增加或修改文件,但仅有该文件/目录的建立者与root能够删除自己的目录或文件。
1.1.6 搜索文件
which [-a] command 寻找执行文件
whereis [-bmsu] 寻找特定文件
locate
find
1.2 Linux 磁盘与文件系统管理
1.2.1 硬盘物理组成
柱面(cylinder)是分区的最小单位
扇区(sector)是硬盘片上最小的存储物理量,大小是512Byte
硬盘的存储量=柱面*磁头*扇区*512Byte
逻辑块(block)是在分区时进行文件系统的格式化时所指定的“最小存储单位”
块的大小为扇区的2n倍数,一个块最多能容纳一个文件
每个分区就是一个文件系统,而每个文件系统开始位置的那个块就称为超级块(Superblock)
1.2.2 Linux ext2文件系统
文件分成两个部分来存储:
à文件的属性(放置在inode中)
à文件的内容(放置在块中)
块是记录文件内容的区域
inode则是记录该文件相关属性,以及文件内容放在哪一个块内.(一个inode大小是128Byte)
inode本身并不记录文件名,而是记录文件的相关属性,文件名则记录在目录所属的块区域。
文件和目录的关系如同前面提到的,文件的相关连接会记录在目录的块区域。
所以要读取一个文件的内容,Linux会先有根目录/获取该文件的上层目录所在的inode,再由该目录所记录的文件关联性(在该目录所属的块区域)获取该文件的inode,最后通过inode内提供的块指针,来获取最终文件内容。
Ext2/ext3文件系统在建立(format)就已经设置好固定的inode数与块数目了
格式化Linux的ext2文件系统,可以使用mke2fs程序来执行
Ext2允许的块大小为1KB,2KB,4KB
一个分区(文件系统)所能容许的最大文件数与inode数量有关,因为一个文件至少占用1个inode
目录下面的文件数如果太多,导致一个块无法容纳所有的关联数据时,Linux会给与该目录多个块,来继续记录关联数据
SuperBlock(超级块):记录整个文件系统的相关信息的地方,没有它,就没有这个文件系统
Group Description(组描述):记录此块由何处开始记录
Block bitmap(块位图):记录块是否使用
Inode bitmap(inode位图)此处记录inode是否使用
Inode table(inode表):为每个inode的数据存放区
Data blocks(数据块):为每个块的数据存放区
数据存放区:inode table和data block
元数据metadata:superblock,inode bitmap,block bitmap
df
du
dumpe2fs /dev/sda1
fdisk
mke2fs
badblocks
1.1 2.9文件的压缩与打包
1.1.1 修改磁盘参数
mknod
e2label
tune2fs
hdparm
在Linux中,所有的设备都是以文件来表示的,就是通过文件的主(major)与次(minor)数值来表示,此两数值有特殊意义,不能随意设置
硬盘代号 主major 次minor
/dev/hdb 3 64~127
/dev/hdc 22 0~63
/dev/hdd 22 64~127
1.2 文件的压缩与打包
gzip bzip2 tar dd
2 学习Shell和Shell脚本
2.1 Vi的使用
Vi有3种模式:一般模式,编辑模式,命令行命令模式
通过设置文件来设置vim环境,vim设置值一般式放在/etc/vimrc文件中,不过,建议不要修改它。可以修改~/.vimrc文件(默认不存在,请自行手动建立)举例说明
[root@localhost ~]# vi ~/.vimrc
:set nu
set hlsearch
:set backspace=2
:set autoindent
:set ruler
:set showmode
:syntax on
2.2 认识Bash Shell
type [-tpa] name