Linux中---一切皆为文件(在linux中对文件和目录的管理就是对于系统的管理)
目录的产生可以让我们的管理更加的清晰和明确
Windows下的目录结构:
最上边的计算机其实不算是结构里边的,它只是一个工具而不是一个根目录,在工具中有很多盘符
Linux中的目录结构:/ 是根目录,其他的目录及文件都在根目录中
解释器:
客户<--->应用程序(语言相通)、内核<---->硬件(语言相通),应用程序跟内核需要语言相通就需要一解释器------这个解释器就叫做shell(其实也是一个一个应用程序,只不过每次开启服务系统会自动开启shell解释器)
内部命令和外部命令:
张三、李四、王五
李四让张三翻译对王五说你丫傻X,张三对王五说,刚才李四让我替他翻译说你丫傻X(日语),蓝色字体是张三说的就叫内部命令,红色字体是张三说的就叫外部命令
1.1 什么是linux?
Linux是运行于多种平台(PC、工作站等)之上、源代码公开、免费、遵循 GPL精神、遵守POSIX标准的、与UNIX兼容的操作系统。Linux是微机版的UNIX。
具有现代操作系统的所有特征:
l 真正的抢先式多任务处理,支持多用户
l 虚拟内存
l 支持对称多处理机
l 网络功能
l 图形用户界面和桌面环境
l 速度和稳定性
GPL(General public License)软件--公共许可软件。此类软件的开发不是为了经济目的,而是不断开发并传播新的软件,并让每个人都能获得、拥有。该类软件遵循一定的规则:
1. 传播者不能限制购买软件的用户自由权。即如果用户买了一套GPL软件,就可以免费复制和传播或自己出售。
2. 传播者必须清楚告诉用户该软件属于GPL软件。
3. 传播者必须免费提供软件的完整源代码。这样为用户提供了修改的条件 。
允许个人或组织为盈利而传播,获得利润。但不允许剥夺购买者的传播能力。
POSIX标准: UNIX发展过程中,出现了许多变种(BSD,System V 等)。为统一标准,出现了POSIX系列标准,它定义了一套标准的操作系统接口和工具。从理论上说,POSIX标准代码很容易移植到任何遵守POSIX的操作系统中。今天,几乎所有的正式操作系统都以支持POSIX标准为目标。
1.2 Linux内核的技术特性
1.1抢先式多任务
Linux将CPU的运行周期分配给多个应用程序,允许多个用户同时执行不同的程序。并且可以给紧急任务以较高的优先级,从而大大提高了CPU资源的利用率。
1.2 进程管理
Linux采用新技术使得进程在创建时不是复制父进程物理空间中的内容,而是复制父进程的页表。从而使得父子进程共享物理空间,并将这些物理空间标记为只读,当父进程或子进程的其中一个要进行写操作时才对所要写的页进行复制,其余内容并不复制。这种进程调度算法十分科学,对系统资源的利用亦比Unix更为有效。
1.3 存储管理
在存储管理方面,Linux独具特色,内核支持按需调页(demand paging)。当程序被加载运行时,Liunx只为它分配虚拟空间,只有当访问某一虚拟空间而发生页中断时,才分配物理内存并从磁盘上读取相应的程序段,这种管理方式最大限度地利用了物理存储器。Liunx的多个进程可以同时使用同一段内存,当其中某个进程要对内存进行写操作时,此段内存页会被复制到别的地方,即Copy-on-write技术。以此加快运行速度,同时又减少内存开销 。Linux还支持虚拟内存技术,为了增加可用内存Linux使用磁盘分页技术。当需要使用更多的物理内存时,系统可以将内存中一些暂时不用的页交换到硬盘上的交换区,从而腾出更多的物理内存空间。虚拟内存使用页方式进行交换,而不是将整个进程都交换到磁盘上的交换分区或文件系统的交换文件中。
1.4 文件系统
Linux 现在采用的是ext2文件系统,具有较高的系统效率。通过VFS(虚拟文件系统),Linux还可以支持ext、msdos、minix、vfat、hpfs、iso9660等文件系统。
1.5 网络支持
在网络方面,Linux支持TCP/IP网络,包括FTP、TELNET、NFS、DNS、POP等服务,支持AppleTalk服务器、NetWare服务器及客户端、Lan Manager服务器及客户端,支持多种网络协议如Ipv4、Ipv6、X.25、IPX、NetBEU、IDDP等。
在局域网中可以把Linux用作文件服务器、打印服务器、应用服务器等,还可以把其用作Web服务器、域名服务、防火墙、FTP服务器、邮件服务器甚至当作代理服务器使用。
网络安全是网络的生命所在,Linux代码的完全开放性有助于它的网络安全。
1.3 Linux内核发展史
1991年9月,芬兰赫尔辛基大学的大学生Linus Benedict Torvalds为改进MINIX操作系统开发了Linux 0.01版(内核)。该版本不能运行,只是一些源程序。
1991年底, Linus Torvalds 首次在internet上发布基于Intel 386体系结构的Linux 源代码,这时越来越多的人开始在这个系统上工作。 Linux逐渐成为一个基本稳定可靠,功能比较完善的操作系统。
一些软件公司,如Red Hat,InfoMagic也不失时机的推出自己的以Linux为核心的操作系统版本,从而大大推动了Linux 的商品化。 Linux还被移植到Alpha APX,PowerPC,Mips以及Sparc等微处理机的系统。
Linux的商品应用逐渐增多,代替商品化UNIX和Windows NT作为Internet服务器使用是Linux的一项重要应用:以Linux和Apache为基础的Internet和Intranet服务器价格低廉,性能卓越,易于维护。
大量的系统软件专家共同对Linux进行改进和提高。到现在为止,Linux已成为具有全部UNIX特征的POSIX兼容的操作系统。
1998年7月是Linux的重大转折点,Linux赢得了包括许多大型数据库公司包括:Oracle、Informix、Ingres的支持。从而促进Linux进入大、中型企业的信息系统。
2000年,最新的内核稳定版本是2.2.10,由150万行代码组成,估计拥有1000万用户。(现在Linux的内核有两种:稳定的内核,它的版本号的第二位数是偶数如2.2.6; 开发的内核,相对来说不稳定,它的版本号的第二位数是奇数如2.3.6。)据报道,目前要推出的Linux 2.4 支持用户数为2的32次方,文件长度可大于2G, 并支持32个CPU, 64G内存,16块网卡。
Linux存在的问题
有待标准化: Linux有可能分裂成许多有差别的版本,重导UNIX覆辙。
Linux的商业化倾向:对软、硬件公司来说,利润是唯一的目标(有违初衷)。
不是一个分布式操作系统,而且没有线程机制。
安全性的因素(源码公开)。
由免费分发造成的问题:用户担心得不到技术支持。
Linux与UNIX和Windows NT的比较
UNIX是Linux的前身,两者有许多共同的特征。
性能:就同等级的硬件水平来说,Linux超过Windows NT。从支持用户数目来说,要高出许多倍。
可靠性: Linux的稳定性强于Windows NT,很少死机。
系统管理: Windows NT的GUI易于入手,Linux的CLI让人有抗拒感,但情况正在改善。
安全性:尚无定论,各有所长。
功能:据报道, Linux或UNIX可完成Windows NT所有功能,反之不然。如支持LDM(Loadable Device Module)(不必在启动时加载设备,而只在用到时加载)。
Linux成为一个十分优秀的操作系统的原因:
它基于一组优秀的概念。Unix是一个简单却非常优秀的模型。在Linux创建之前,Unix已经有20年的发展历史。Linux从Unix的各个流派中不断吸取成功经验,模仿Unix的优点,抛弃Unix的缺点。这样做的结果是Linux成为了Unix系列中的佼佼者:高速、健壮、完整,而且抛弃了历史包袱。
Linux最强大的生命力还在于其公开的开发过程。每个人都可以自由获得内核源程序,每个人都可以对源程序加以修改,而后其他人也可以自由获取你修改后的源程序。
1.4 常见Linux 的版本
RedHat Linux
Slackware Linux
Debian Linux
Turbo Linux等。
它们分别由一些团体或企业开发,主要进行集成工作:将Linux内核与一些支持Linux的工具和应用程序集成,制成安装光盘发布。
1.5 Linux的文件系统结构
Linux的文件系统和MS-Windows的文件系统有很大的不同。
linux只有一个文件树,整个文件系统是以一个树根“/”为起点的所有的文件和外部设备都以文件的形式挂结在这个文件树上,包括硬盘,软盘,光驱,调制解调器等,这和以“驱动器盘符”为基础的MS-Windows系统是大不相同的.
Linux的文件结构体现了这个操作系统简洁清析的设计,通常我们能够接触到的linux发行版本的根目录大都是以下结构:
“/”根目录中有以下目录
/bin /etc /lost+found /sbin /var /boot /root /home /mnt /tmp /dev /lib /proc /usr
简要的介绍:
1.6 linux 内核源程序目录结构
源程序存放于 /usr/src/linux 目录下:
1. /document :保存帮助文档
2. /arch :包含多个子目录,每个存放与特定体系结构相关的代码。如arch/i386(intel 386 体系结构),arch/sparc,arch/alpha等。每个子目录下至少又包含三个子目录:kernel(存放支持该体系结构特有的诸如信号处理和SMP之类特征的实现);
lib(存放该体系结构特有的诸如Strlen和memcpy之类的高效率函数)
mm(存放该体系结构特有的诸如内存管理程序的实现)
3. /drivers :该目录占内核代码一半以上,包括显卡、网卡、SCSI适配器、软驱、PCI设备和其他外设的软件驱动程序。
/fs : 包含linux支持的文件系统。
/include : 包含源程序中大部分包含(.h)文件。
/init : 包含main.c,保存大部分协调内核初始化的代码。
/ipc : 实现了SYSTEM V的进程间通讯IPC。
/kernel : 包含linux最重要的部分:实现平台独立的基本功能,包括Sched.c、fork.c、exit.c
/lib : 存放字符串和内存操作函数。
/mm : 包含与体系结构无关的内存管理代码。
/net : 包含了linux应用的网络协议代码。
/script : 包含用来配置内核的脚本。
一,登录界面
1、字符登录:
A) 图形界面---->字符终端:Ctrl+Alt+Fn
B) 字符终端---->字符终端:Alt+Fn
C) 字符终端---->图形界面:Alt+F7
上图 ~]# w 查看账户进入字符终端或图形界面的信息
2、伪字符终端
A)图形界面右键点击桌面 gnome-terminal
二,Linux目录结构【Linux中---一切皆为文件(在linux中对文件和目录的管理就是对于系统的管理)目录的产生可以让我们的管理更加的清晰和明确】
1、树型目录结构
2、最顶层:根目录
/bin 二进制可执行文件,login ,Shells ,文件操作实用程序,系统实用程序,压缩工具
/dev 设备特殊文件
/etc
系统管理和配置文件(若想服务开启或者生效某项功能,修改的文件/etc中-默认情况)
这个目录一般用来存放程序所需的整个文件系统的配置文件,其中的一些重要文件如下:
passwd shadow fstab hosts motd profile shells services lilo.conf
/etc/rc.d 启动的配置文件和脚本
/home 用户主目录的基点(创建新用户zhangsan ,zhangsan其家目录默认/home/zhangsan
/lib 标准程序设计库
/sbin 超级管理命令,通常存放基本的系统和系统维护程序
fsck fdisk mkfs shutdown lilo init
存放在这两个目录中的程序的主要区别是:/sbin中的程序只能由root(管理员)来执行.
/tmp 公共的临时文件存储点
/root 公共管理员的主目录(有时将文件放到了/root家中,普通账户没有访问权限)
/mnt 系统提供这个目录主要是让用户临时挂载其他的文件系统
/lost+fount 这个目录平时时空的,系统正常关机而留下“无家可归的文件”
/proc 虚拟的目录,是系统内存的映射,我们在这里可以看到由当前运行的进程号组成的一些目录,还有一个记录当前内存内容的kernel文件。
/var 某些大文件的溢出区(存放动态文件的地方)
/usr 应用程序和文件几乎都在这个目录
/zip 如果我们要使用这些特定设备,我们需要用mount命令从/dev目录中将外部设备挂接过来。
/dev 存放着各种外部设备的镜像文件,记住第一个软盘驱动器的名字是fd0;第一个硬盘的名字是hda,硬盘中的第一个分区是hda1,第二个分区是hda2;第一个光盘驱动器的名字是hdc;此外,还用modem和其他外设的名字,在这么多的名字中,我们只需要记住最最常用的那几个外设就可以了
三 系统命令:
1、Linux命令:用于实现某一类功能的指令或程序 命令的 执行依赖于解释器程序(shell)
2、Linux命令分类
A)内部命令:属于shell解释器的一部分
B)外部命令:独立于Shell 解释器之外的程序文件
3、通用的命令格式
A) 命令字 [选项] [参数]
I. 选项:用于调节命令的具体功能
Ii. 参数:命令操作的对象,如文件、目录名等
4、常用辅助快捷键
A) Tab键:自动补齐
B) 反斜杠“\”:强制换行
C) 快捷键 Ctrl+U:清空至行首
D) 快捷键 Ctrl+K:清空至行尾(包括光标)
E) 快捷键 Ctrl+L:清屏
F) 快捷键 Ctrl+C:取消本次命令编辑
5、查看帮助
A) help -help man info 等
# Help cd... 只能查看内部命令帮助信息
# man cd或pwd或ls..... 查看帮助 将命令信息列出 点击q退出
# info cd.... 也是查看帮助 格式没有man 好 信息也不够
**********************************************************
四:常用命令
1、uname 查看喜用信息及其内核
A) -a:先是主机名,内核版本,硬件平台等详细信息
B) -r:显示内核版本
C) -s:显示内核名字
2、hostname
功能一 查看主机名
功能二 临时修改主机名 重启机器后还原
3、ifconfig 查看网络信息
Ifconfig eth0 单独查看某一网卡
Ifconfig eth0 down 对某一网卡禁用
Ifconfig eth0 up 对某一网卡开启
4、shutdown -h now |poweroff|init 0 关闭计算机
5、shutdown -r now |reboot|init 6 重启计算机
6、pwd 显示当前在工作的目录
7、cd 切换工作目录
8、ls 显示目录的内容
A) -l:以长格式显示
B) -a:显示所有子目录和文件的信息,包括隐藏文件(文件名带“.”,“..”是隐藏文件)
C) -A:类似于“-a”,但不显示“.”和“..”目录的信息
D) -d:显示目录本身的属性(查看的是目录本身而不是里边的内容)
E) -h:以更易读的字节单位(K、M等)显示信息
F) -R:递归显示内容
G) --color:以颜色区分不同的类型的文件(当执行 ls 时等同于执行 ls --color)
注:ls -l -a -A -d 短格式选项可以连着写 ls -lad
9、du 统计目录及文件的空间占用的情况---要注意与ls显示大小对比
A) -h 人性化显示
B) -s 只统计每个参数所占空间的大小(目录和其中的东西共有多少,没有统计其中东西各占多少)
C) -a 统计所有文件
10、mkdir 创建目录
A) -p 创建嵌套的多层目录结构
例:mkdir abc bca 可以直接创建两个目录
11、touch 创建文件 linux中文件没有后缀名概念
# touch file1 file2 file3 一次创建3个文件
# touch /root/Desktop/file{1..100}
12、Ln 创建链接文件(所谓链接就相当于快捷方式)
A) -s:建立符号链接文件
B) 软连接(符号链接):指向原始文件所在的路径【删除原始文件软连接将打不开】
C) 硬连接:只想原始文件对应的数据存储位置,不能为目录建立硬连接文件,硬连接与原始文件必须位于同一分区(文件系统)中【删除原始文件后硬连接照样打开】
13、cp 复制
A) -r:递归复制整个目录树(不能直接复制目录,需要加-r)
B) -p:保持源文件的属性不变
C) -f:强制覆盖目标同名文件或目录
D) -i:需要覆盖文件或目录时进行提醒
14、rm 删除
A) -f:强行删除文件或者目录,不进行提醒
B) -i:删除文件或者目录时提醒用户确认
C) -r:递归删除整个目录树
15、mv 移动 也叫重命名 例如:mv passwd /root/Desktop/nw.hehe
16、cat 查看文件
cat text 显示text这个文件
cat file1 file2 依顺序显示file1,file2的内容
cat file1 file2>file3 把file1,file2的内容结合起来,再“重定向 > ”到file3文件中,如果 〉左边没有文件的名称,而右边有文件名,例如:
cat >file1
结果是会“空出一行空白行”,等待你输入文字,输入完毕后再按[Ctrl]+[c]或[Ctrl]+[d],就会结束编辑,并产生file1这个文件,而file1的内容就是你刚刚输入的内容。这个过程和dos里面的copy con file1的结果是一样的。
“〉”是一个非常有趣的符号,是往右重定向的意思,就是把左边的结果当成是输入,然后输入到file3这个文件中。这里要注意一点是file3是在重定向以前还未存在的文件,如果file3是已经存在的文件,那么它本身的内容被覆盖,而变成file1+file2的内容
另外,如果你使用如下的指令:
cat file1>>file2
这将变成将file1的文件内容“附加”到file2的文件后面,而file2的内容依然存在,这种重定向符〉〉比〉常用,可以多多利用。
17、more 分页查看文件(从头开始往下看,空格是往下翻,按回车键是向下翻一行,不能向上翻)
18、less 分页查看文件(从头开始看,按回车键向下翻一行,按空格是向下翻,pgup pgdn 是上下翻页,还有上下键)
19、head 查看文件头 默认头10行 # head -2 头2行
20、tail 查看文件尾 # tail -5 /etc/passwd
21、wc 统计
A) -l:统计行数(一般有多少行就有多少东西)
B) -w:统计单次个数
C) -c:统计字节数
压缩以及归档
.gz gzip 压缩工具压缩的文件
.bz2 bzip2 压缩工具压缩的文件
.tar tar 打包程序打包的文件(tar并没有压缩功能,只是把一个目录合并成一个文件)
.tar.gz 可以理解为先用tar打包,然后再gzip压缩
.tar.bz2 同上,先用tar打包,然后再bzip2压缩
22、gzip,bzip 压缩 例如:给hehe.txt 进行压缩 # gzip hehe.txt
【gzip】
gzip [-d#] filename 其中#为1-9的数字
A)-# :压缩等级,1压缩最差,9压缩最好,6为默认
B) -9:表示高压缩比,多在创建压缩包时使用
C) -d:用于解开已经压缩过的文件(解压 # gzip -d passwd.gz)
注:压缩是将文件压缩,压缩后源文件将不存在
要注意的是,gzip不可以压缩目录
【bzip2】
语法:bzip2 [-dz] filename
-d :解压缩
-z :压缩
其 实-z参数是可以省略掉的,你不妨试试
跟gzip的解压类似,也是用-d解压。
23、Tar 归档(将一堆东西归档成一个文件)
A) -c:创建 .tar 格式的包文件
B) -x:解开.tar 格式的包文件
C) -v:输出详细信息
D) -f:表示使用归档文件
E) -p:打包时保留原始文件及目录的权限
F) -t:列表查看包内的文件
G) -C:解包时制定释放的目标文件夹
H) -z:调用gzip 程序进行压缩或者释放
I) -j:调用bzip2程序进行压缩或者解压
J) --exclude filename :在打包或者压缩时,不要将filename文件包括在内。(不常用)
首先在test目录下建立test111目录,然后在test111目录下建立test2.txt,并写入”nihao”到test2.txt中,接着是用tar把test111打包成test111.tar。请记住-f参数后跟的是打包后的文件名。
删除原来的test111目录,然后解包test111.tar,不管是打包还是解包,原来的文件是不会删除的。
打包的同时使用gzip压缩
用-tf 跟包名来查看包或者压缩包内的文件都有哪些
先删除test111,然后用tar -zxvf 来解压.tar.gz的压缩包。
-jcvf 打包的同时用bzip2压缩,-tf同样可以查看.tar.bz2的压缩包
-jxvf解压缩.tar.bz2的压缩包
--exclude参数的作用就是打包的时候过滤掉某些文件,如果想过滤多个文件怎么办
只能是继续跟 --exclude filename了
例如:# tar zcf hehe.tar.gz etc/将etc归档压缩并改名为hehe.tar.gz
解压:tar zxf hehe.tar.gz 释放到当前目录
tar zxf hehe.tar.gz -C /root/Desktop/ 释放到桌面
五:VIM编译器
1、工作模式:命令模式、输入模式、末行模式
2、光标移动:
操作类型 操作键 功能
光标移动方向 上下左右键 上下左右
翻页 Page Down 或Ctrl +F 向下翻动一整页内容
Page up 或Ctrl +B 向上翻动一整页内容
行内快速跳转 Home键或”^“或数字”0“ 跳转至行首
End键或”$“键 跳转至行尾
行间快速跳转 1G或者gg 跳转到文件的首行
G 跳转到文件的末尾行
#G 跳转到文件的第#行
行号显示 :set nu 在编辑器中显示行号
:set nonu 取消编辑器中的行号显示
3、复制、粘贴、删除
操作类型 操作键 功能
删除 X或Del 删除光标处的单个字符
dd 删除当前光标所在行
#dd 删除从光标处开始的#行内容
d^ 删除当前光标之前到行首的所有字符
d$ 删除当前光标处到行尾的所有字符
复制 yy 复制当前行整行的内容到剪切板
#yy 复制从光标处开始的#行内容
粘贴 p 将缓冲区中的内容粘贴到光标位置处之后
P大写 粘贴光标位置处之前
4、文件内容查找
操作键 功能
/word 从上而下在文件中查找字符”word“
?word 从下而上在文件中查找字符”word“
n 定位下一个匹配的被查找字符串
N 定位上一个匹配的被查找字符串
5、撤销编辑及保存退出
操作键 功能
u 按一次取消最近的一次操作,多次重复按u键,恢复已经进行的多步操作
U 用于取消对当前行所做的所有编辑
ZZ 保存当前的文件内容并退出vi编辑器
6、保存文件及退出vi编辑器
功能 命令 备注
保存文件 :w 保存
:w /root/newfile 另存为其他文件
退出vi :q 未修改退出
:q! 放弃对文件内容的修改,退出
保存文件退出vi :wq 保存退出
7、打开新文件或读入其他文件内容
命令 功能
: e ~/install.log 打开新的文件进行编辑
:r /etc/filesystems 在当前文件中读入其他文件内容
8、文件内容替换
命令 功能
:s /old/new 将当前行中查找的第一个字符串”old”替换为”new”
:s /old/new/g 将当前行中查找的所有字符串”old”替换为”new”
:#,#
s/old/new/g 在行号”#,#”范围内替换所有的字符串”old”为”new”
:% s/old/new/g 在整个文件范围内替换所有字符串”old”为”new”
:s /old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
目录的产生可以让我们的管理更加的清晰和明确
Windows下的目录结构:
最上边的计算机其实不算是结构里边的,它只是一个工具而不是一个根目录,在工具中有很多盘符
Linux中的目录结构:/ 是根目录,其他的目录及文件都在根目录中
解释器:
客户<--->应用程序(语言相通)、内核<---->硬件(语言相通),应用程序跟内核需要语言相通就需要一解释器------这个解释器就叫做shell(其实也是一个一个应用程序,只不过每次开启服务系统会自动开启shell解释器)
内部命令和外部命令:
张三、李四、王五
李四让张三翻译对王五说你丫傻X,张三对王五说,刚才李四让我替他翻译说你丫傻X(日语),蓝色字体是张三说的就叫内部命令,红色字体是张三说的就叫外部命令
1.1 什么是linux?
Linux是运行于多种平台(PC、工作站等)之上、源代码公开、免费、遵循 GPL精神、遵守POSIX标准的、与UNIX兼容的操作系统。Linux是微机版的UNIX。
具有现代操作系统的所有特征:
l 真正的抢先式多任务处理,支持多用户
l 虚拟内存
l 支持对称多处理机
l 网络功能
l 图形用户界面和桌面环境
l 速度和稳定性
GPL(General public License)软件--公共许可软件。此类软件的开发不是为了经济目的,而是不断开发并传播新的软件,并让每个人都能获得、拥有。该类软件遵循一定的规则:
1. 传播者不能限制购买软件的用户自由权。即如果用户买了一套GPL软件,就可以免费复制和传播或自己出售。
2. 传播者必须清楚告诉用户该软件属于GPL软件。
3. 传播者必须免费提供软件的完整源代码。这样为用户提供了修改的条件 。
允许个人或组织为盈利而传播,获得利润。但不允许剥夺购买者的传播能力。
POSIX标准: UNIX发展过程中,出现了许多变种(BSD,System V 等)。为统一标准,出现了POSIX系列标准,它定义了一套标准的操作系统接口和工具。从理论上说,POSIX标准代码很容易移植到任何遵守POSIX的操作系统中。今天,几乎所有的正式操作系统都以支持POSIX标准为目标。
1.2 Linux内核的技术特性
1.1抢先式多任务
Linux将CPU的运行周期分配给多个应用程序,允许多个用户同时执行不同的程序。并且可以给紧急任务以较高的优先级,从而大大提高了CPU资源的利用率。
1.2 进程管理
Linux采用新技术使得进程在创建时不是复制父进程物理空间中的内容,而是复制父进程的页表。从而使得父子进程共享物理空间,并将这些物理空间标记为只读,当父进程或子进程的其中一个要进行写操作时才对所要写的页进行复制,其余内容并不复制。这种进程调度算法十分科学,对系统资源的利用亦比Unix更为有效。
1.3 存储管理
在存储管理方面,Linux独具特色,内核支持按需调页(demand paging)。当程序被加载运行时,Liunx只为它分配虚拟空间,只有当访问某一虚拟空间而发生页中断时,才分配物理内存并从磁盘上读取相应的程序段,这种管理方式最大限度地利用了物理存储器。Liunx的多个进程可以同时使用同一段内存,当其中某个进程要对内存进行写操作时,此段内存页会被复制到别的地方,即Copy-on-write技术。以此加快运行速度,同时又减少内存开销 。Linux还支持虚拟内存技术,为了增加可用内存Linux使用磁盘分页技术。当需要使用更多的物理内存时,系统可以将内存中一些暂时不用的页交换到硬盘上的交换区,从而腾出更多的物理内存空间。虚拟内存使用页方式进行交换,而不是将整个进程都交换到磁盘上的交换分区或文件系统的交换文件中。
1.4 文件系统
Linux 现在采用的是ext2文件系统,具有较高的系统效率。通过VFS(虚拟文件系统),Linux还可以支持ext、msdos、minix、vfat、hpfs、iso9660等文件系统。
1.5 网络支持
在网络方面,Linux支持TCP/IP网络,包括FTP、TELNET、NFS、DNS、POP等服务,支持AppleTalk服务器、NetWare服务器及客户端、Lan Manager服务器及客户端,支持多种网络协议如Ipv4、Ipv6、X.25、IPX、NetBEU、IDDP等。
在局域网中可以把Linux用作文件服务器、打印服务器、应用服务器等,还可以把其用作Web服务器、域名服务、防火墙、FTP服务器、邮件服务器甚至当作代理服务器使用。
网络安全是网络的生命所在,Linux代码的完全开放性有助于它的网络安全。
1.3 Linux内核发展史
1991年9月,芬兰赫尔辛基大学的大学生Linus Benedict Torvalds为改进MINIX操作系统开发了Linux 0.01版(内核)。该版本不能运行,只是一些源程序。
1991年底, Linus Torvalds 首次在internet上发布基于Intel 386体系结构的Linux 源代码,这时越来越多的人开始在这个系统上工作。 Linux逐渐成为一个基本稳定可靠,功能比较完善的操作系统。
一些软件公司,如Red Hat,InfoMagic也不失时机的推出自己的以Linux为核心的操作系统版本,从而大大推动了Linux 的商品化。 Linux还被移植到Alpha APX,PowerPC,Mips以及Sparc等微处理机的系统。
Linux的商品应用逐渐增多,代替商品化UNIX和Windows NT作为Internet服务器使用是Linux的一项重要应用:以Linux和Apache为基础的Internet和Intranet服务器价格低廉,性能卓越,易于维护。
大量的系统软件专家共同对Linux进行改进和提高。到现在为止,Linux已成为具有全部UNIX特征的POSIX兼容的操作系统。
1998年7月是Linux的重大转折点,Linux赢得了包括许多大型数据库公司包括:Oracle、Informix、Ingres的支持。从而促进Linux进入大、中型企业的信息系统。
2000年,最新的内核稳定版本是2.2.10,由150万行代码组成,估计拥有1000万用户。(现在Linux的内核有两种:稳定的内核,它的版本号的第二位数是偶数如2.2.6; 开发的内核,相对来说不稳定,它的版本号的第二位数是奇数如2.3.6。)据报道,目前要推出的Linux 2.4 支持用户数为2的32次方,文件长度可大于2G, 并支持32个CPU, 64G内存,16块网卡。
Linux存在的问题
有待标准化: Linux有可能分裂成许多有差别的版本,重导UNIX覆辙。
Linux的商业化倾向:对软、硬件公司来说,利润是唯一的目标(有违初衷)。
不是一个分布式操作系统,而且没有线程机制。
安全性的因素(源码公开)。
由免费分发造成的问题:用户担心得不到技术支持。
Linux与UNIX和Windows NT的比较
UNIX是Linux的前身,两者有许多共同的特征。
性能:就同等级的硬件水平来说,Linux超过Windows NT。从支持用户数目来说,要高出许多倍。
可靠性: Linux的稳定性强于Windows NT,很少死机。
系统管理: Windows NT的GUI易于入手,Linux的CLI让人有抗拒感,但情况正在改善。
安全性:尚无定论,各有所长。
功能:据报道, Linux或UNIX可完成Windows NT所有功能,反之不然。如支持LDM(Loadable Device Module)(不必在启动时加载设备,而只在用到时加载)。
Linux成为一个十分优秀的操作系统的原因:
它基于一组优秀的概念。Unix是一个简单却非常优秀的模型。在Linux创建之前,Unix已经有20年的发展历史。Linux从Unix的各个流派中不断吸取成功经验,模仿Unix的优点,抛弃Unix的缺点。这样做的结果是Linux成为了Unix系列中的佼佼者:高速、健壮、完整,而且抛弃了历史包袱。
Linux最强大的生命力还在于其公开的开发过程。每个人都可以自由获得内核源程序,每个人都可以对源程序加以修改,而后其他人也可以自由获取你修改后的源程序。
1.4 常见Linux 的版本
RedHat Linux
Slackware Linux
Debian Linux
Turbo Linux等。
它们分别由一些团体或企业开发,主要进行集成工作:将Linux内核与一些支持Linux的工具和应用程序集成,制成安装光盘发布。
1.5 Linux的文件系统结构
Linux的文件系统和MS-Windows的文件系统有很大的不同。
linux只有一个文件树,整个文件系统是以一个树根“/”为起点的所有的文件和外部设备都以文件的形式挂结在这个文件树上,包括硬盘,软盘,光驱,调制解调器等,这和以“驱动器盘符”为基础的MS-Windows系统是大不相同的.
Linux的文件结构体现了这个操作系统简洁清析的设计,通常我们能够接触到的linux发行版本的根目录大都是以下结构:
“/”根目录中有以下目录
/bin /etc /lost+found /sbin /var /boot /root /home /mnt /tmp /dev /lib /proc /usr
简要的介绍:
1.6 linux 内核源程序目录结构
源程序存放于 /usr/src/linux 目录下:
1. /document :保存帮助文档
2. /arch :包含多个子目录,每个存放与特定体系结构相关的代码。如arch/i386(intel 386 体系结构),arch/sparc,arch/alpha等。每个子目录下至少又包含三个子目录:kernel(存放支持该体系结构特有的诸如信号处理和SMP之类特征的实现);
lib(存放该体系结构特有的诸如Strlen和memcpy之类的高效率函数)
mm(存放该体系结构特有的诸如内存管理程序的实现)
3. /drivers :该目录占内核代码一半以上,包括显卡、网卡、SCSI适配器、软驱、PCI设备和其他外设的软件驱动程序。
/fs : 包含linux支持的文件系统。
/include : 包含源程序中大部分包含(.h)文件。
/init : 包含main.c,保存大部分协调内核初始化的代码。
/ipc : 实现了SYSTEM V的进程间通讯IPC。
/kernel : 包含linux最重要的部分:实现平台独立的基本功能,包括Sched.c、fork.c、exit.c
/lib : 存放字符串和内存操作函数。
/mm : 包含与体系结构无关的内存管理代码。
/net : 包含了linux应用的网络协议代码。
/script : 包含用来配置内核的脚本。
一,登录界面
1、字符登录:
A) 图形界面---->字符终端:Ctrl+Alt+Fn
B) 字符终端---->字符终端:Alt+Fn
C) 字符终端---->图形界面:Alt+F7
上图 ~]# w 查看账户进入字符终端或图形界面的信息
2、伪字符终端
A)图形界面右键点击桌面 gnome-terminal
二,Linux目录结构【Linux中---一切皆为文件(在linux中对文件和目录的管理就是对于系统的管理)目录的产生可以让我们的管理更加的清晰和明确】
1、树型目录结构
2、最顶层:根目录
/bin 二进制可执行文件,login ,Shells ,文件操作实用程序,系统实用程序,压缩工具
/dev 设备特殊文件
/etc
系统管理和配置文件(若想服务开启或者生效某项功能,修改的文件/etc中-默认情况)
这个目录一般用来存放程序所需的整个文件系统的配置文件,其中的一些重要文件如下:
passwd shadow fstab hosts motd profile shells services lilo.conf
/etc/rc.d 启动的配置文件和脚本
/home 用户主目录的基点(创建新用户zhangsan ,zhangsan其家目录默认/home/zhangsan
/lib 标准程序设计库
/sbin 超级管理命令,通常存放基本的系统和系统维护程序
fsck fdisk mkfs shutdown lilo init
存放在这两个目录中的程序的主要区别是:/sbin中的程序只能由root(管理员)来执行.
/tmp 公共的临时文件存储点
/root 公共管理员的主目录(有时将文件放到了/root家中,普通账户没有访问权限)
/mnt 系统提供这个目录主要是让用户临时挂载其他的文件系统
/lost+fount 这个目录平时时空的,系统正常关机而留下“无家可归的文件”
/proc 虚拟的目录,是系统内存的映射,我们在这里可以看到由当前运行的进程号组成的一些目录,还有一个记录当前内存内容的kernel文件。
/var 某些大文件的溢出区(存放动态文件的地方)
/usr 应用程序和文件几乎都在这个目录
/zip 如果我们要使用这些特定设备,我们需要用mount命令从/dev目录中将外部设备挂接过来。
/dev 存放着各种外部设备的镜像文件,记住第一个软盘驱动器的名字是fd0;第一个硬盘的名字是hda,硬盘中的第一个分区是hda1,第二个分区是hda2;第一个光盘驱动器的名字是hdc;此外,还用modem和其他外设的名字,在这么多的名字中,我们只需要记住最最常用的那几个外设就可以了
三 系统命令:
1、Linux命令:用于实现某一类功能的指令或程序 命令的 执行依赖于解释器程序(shell)
2、Linux命令分类
A)内部命令:属于shell解释器的一部分
B)外部命令:独立于Shell 解释器之外的程序文件
3、通用的命令格式
A) 命令字 [选项] [参数]
I. 选项:用于调节命令的具体功能
Ii. 参数:命令操作的对象,如文件、目录名等
4、常用辅助快捷键
A) Tab键:自动补齐
B) 反斜杠“\”:强制换行
C) 快捷键 Ctrl+U:清空至行首
D) 快捷键 Ctrl+K:清空至行尾(包括光标)
E) 快捷键 Ctrl+L:清屏
F) 快捷键 Ctrl+C:取消本次命令编辑
5、查看帮助
A) help -help man info 等
# Help cd... 只能查看内部命令帮助信息
# man cd或pwd或ls..... 查看帮助 将命令信息列出 点击q退出
# info cd.... 也是查看帮助 格式没有man 好 信息也不够
**********************************************************
四:常用命令
1、uname 查看喜用信息及其内核
A) -a:先是主机名,内核版本,硬件平台等详细信息
B) -r:显示内核版本
C) -s:显示内核名字
2、hostname
功能一 查看主机名
功能二 临时修改主机名 重启机器后还原
3、ifconfig 查看网络信息
Ifconfig eth0 单独查看某一网卡
Ifconfig eth0 down 对某一网卡禁用
Ifconfig eth0 up 对某一网卡开启
4、shutdown -h now |poweroff|init 0 关闭计算机
5、shutdown -r now |reboot|init 6 重启计算机
6、pwd 显示当前在工作的目录
7、cd 切换工作目录
8、ls 显示目录的内容
A) -l:以长格式显示
B) -a:显示所有子目录和文件的信息,包括隐藏文件(文件名带“.”,“..”是隐藏文件)
C) -A:类似于“-a”,但不显示“.”和“..”目录的信息
D) -d:显示目录本身的属性(查看的是目录本身而不是里边的内容)
E) -h:以更易读的字节单位(K、M等)显示信息
F) -R:递归显示内容
G) --color:以颜色区分不同的类型的文件(当执行 ls 时等同于执行 ls --color)
注:ls -l -a -A -d 短格式选项可以连着写 ls -lad
9、du 统计目录及文件的空间占用的情况---要注意与ls显示大小对比
A) -h 人性化显示
B) -s 只统计每个参数所占空间的大小(目录和其中的东西共有多少,没有统计其中东西各占多少)
C) -a 统计所有文件
10、mkdir 创建目录
A) -p 创建嵌套的多层目录结构
例:mkdir abc bca 可以直接创建两个目录
11、touch 创建文件 linux中文件没有后缀名概念
# touch file1 file2 file3 一次创建3个文件
# touch /root/Desktop/file{1..100}
12、Ln 创建链接文件(所谓链接就相当于快捷方式)
A) -s:建立符号链接文件
B) 软连接(符号链接):指向原始文件所在的路径【删除原始文件软连接将打不开】
C) 硬连接:只想原始文件对应的数据存储位置,不能为目录建立硬连接文件,硬连接与原始文件必须位于同一分区(文件系统)中【删除原始文件后硬连接照样打开】
13、cp 复制
A) -r:递归复制整个目录树(不能直接复制目录,需要加-r)
B) -p:保持源文件的属性不变
C) -f:强制覆盖目标同名文件或目录
D) -i:需要覆盖文件或目录时进行提醒
14、rm 删除
A) -f:强行删除文件或者目录,不进行提醒
B) -i:删除文件或者目录时提醒用户确认
C) -r:递归删除整个目录树
15、mv 移动 也叫重命名 例如:mv passwd /root/Desktop/nw.hehe
16、cat 查看文件
cat text 显示text这个文件
cat file1 file2 依顺序显示file1,file2的内容
cat file1 file2>file3 把file1,file2的内容结合起来,再“重定向 > ”到file3文件中,如果 〉左边没有文件的名称,而右边有文件名,例如:
cat >file1
结果是会“空出一行空白行”,等待你输入文字,输入完毕后再按[Ctrl]+[c]或[Ctrl]+[d],就会结束编辑,并产生file1这个文件,而file1的内容就是你刚刚输入的内容。这个过程和dos里面的copy con file1的结果是一样的。
“〉”是一个非常有趣的符号,是往右重定向的意思,就是把左边的结果当成是输入,然后输入到file3这个文件中。这里要注意一点是file3是在重定向以前还未存在的文件,如果file3是已经存在的文件,那么它本身的内容被覆盖,而变成file1+file2的内容
另外,如果你使用如下的指令:
cat file1>>file2
这将变成将file1的文件内容“附加”到file2的文件后面,而file2的内容依然存在,这种重定向符〉〉比〉常用,可以多多利用。
17、more 分页查看文件(从头开始往下看,空格是往下翻,按回车键是向下翻一行,不能向上翻)
18、less 分页查看文件(从头开始看,按回车键向下翻一行,按空格是向下翻,pgup pgdn 是上下翻页,还有上下键)
19、head 查看文件头 默认头10行 # head -2 头2行
20、tail 查看文件尾 # tail -5 /etc/passwd
21、wc 统计
A) -l:统计行数(一般有多少行就有多少东西)
B) -w:统计单次个数
C) -c:统计字节数
压缩以及归档
.gz gzip 压缩工具压缩的文件
.bz2 bzip2 压缩工具压缩的文件
.tar tar 打包程序打包的文件(tar并没有压缩功能,只是把一个目录合并成一个文件)
.tar.gz 可以理解为先用tar打包,然后再gzip压缩
.tar.bz2 同上,先用tar打包,然后再bzip2压缩
22、gzip,bzip 压缩 例如:给hehe.txt 进行压缩 # gzip hehe.txt
【gzip】
gzip [-d#] filename 其中#为1-9的数字
A)-# :压缩等级,1压缩最差,9压缩最好,6为默认
B) -9:表示高压缩比,多在创建压缩包时使用
C) -d:用于解开已经压缩过的文件(解压 # gzip -d passwd.gz)
注:压缩是将文件压缩,压缩后源文件将不存在
要注意的是,gzip不可以压缩目录
【bzip2】
语法:bzip2 [-dz] filename
-d :解压缩
-z :压缩
其 实-z参数是可以省略掉的,你不妨试试
跟gzip的解压类似,也是用-d解压。
23、Tar 归档(将一堆东西归档成一个文件)
A) -c:创建 .tar 格式的包文件
B) -x:解开.tar 格式的包文件
C) -v:输出详细信息
D) -f:表示使用归档文件
E) -p:打包时保留原始文件及目录的权限
F) -t:列表查看包内的文件
G) -C:解包时制定释放的目标文件夹
H) -z:调用gzip 程序进行压缩或者释放
I) -j:调用bzip2程序进行压缩或者解压
J) --exclude filename :在打包或者压缩时,不要将filename文件包括在内。(不常用)
首先在test目录下建立test111目录,然后在test111目录下建立test2.txt,并写入”nihao”到test2.txt中,接着是用tar把test111打包成test111.tar。请记住-f参数后跟的是打包后的文件名。
删除原来的test111目录,然后解包test111.tar,不管是打包还是解包,原来的文件是不会删除的。
打包的同时使用gzip压缩
用-tf 跟包名来查看包或者压缩包内的文件都有哪些
先删除test111,然后用tar -zxvf 来解压.tar.gz的压缩包。
-jcvf 打包的同时用bzip2压缩,-tf同样可以查看.tar.bz2的压缩包
-jxvf解压缩.tar.bz2的压缩包
--exclude参数的作用就是打包的时候过滤掉某些文件,如果想过滤多个文件怎么办
只能是继续跟 --exclude filename了
例如:# tar zcf hehe.tar.gz etc/将etc归档压缩并改名为hehe.tar.gz
解压:tar zxf hehe.tar.gz 释放到当前目录
tar zxf hehe.tar.gz -C /root/Desktop/ 释放到桌面
五:VIM编译器
1、工作模式:命令模式、输入模式、末行模式
2、光标移动:
操作类型 操作键 功能
光标移动方向 上下左右键 上下左右
翻页 Page Down 或Ctrl +F 向下翻动一整页内容
Page up 或Ctrl +B 向上翻动一整页内容
行内快速跳转 Home键或”^“或数字”0“ 跳转至行首
End键或”$“键 跳转至行尾
行间快速跳转 1G或者gg 跳转到文件的首行
G 跳转到文件的末尾行
#G 跳转到文件的第#行
行号显示 :set nu 在编辑器中显示行号
:set nonu 取消编辑器中的行号显示
3、复制、粘贴、删除
操作类型 操作键 功能
删除 X或Del 删除光标处的单个字符
dd 删除当前光标所在行
#dd 删除从光标处开始的#行内容
d^ 删除当前光标之前到行首的所有字符
d$ 删除当前光标处到行尾的所有字符
复制 yy 复制当前行整行的内容到剪切板
#yy 复制从光标处开始的#行内容
粘贴 p 将缓冲区中的内容粘贴到光标位置处之后
P大写 粘贴光标位置处之前
4、文件内容查找
操作键 功能
/word 从上而下在文件中查找字符”word“
?word 从下而上在文件中查找字符”word“
n 定位下一个匹配的被查找字符串
N 定位上一个匹配的被查找字符串
5、撤销编辑及保存退出
操作键 功能
u 按一次取消最近的一次操作,多次重复按u键,恢复已经进行的多步操作
U 用于取消对当前行所做的所有编辑
ZZ 保存当前的文件内容并退出vi编辑器
6、保存文件及退出vi编辑器
功能 命令 备注
保存文件 :w 保存
:w /root/newfile 另存为其他文件
退出vi :q 未修改退出
:q! 放弃对文件内容的修改,退出
保存文件退出vi :wq 保存退出
7、打开新文件或读入其他文件内容
命令 功能
: e ~/install.log 打开新的文件进行编辑
:r /etc/filesystems 在当前文件中读入其他文件内容
8、文件内容替换
命令 功能
:s /old/new 将当前行中查找的第一个字符串”old”替换为”new”
:s /old/new/g 将当前行中查找的所有字符串”old”替换为”new”
:#,#
s/old/new/g 在行号”#,#”范围内替换所有的字符串”old”为”new”
:% s/old/new/g 在整个文件范围内替换所有字符串”old”为”new”
:s /old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认