Linux 的核心原型是 1991 年由托瓦兹(Linus Torvalds)写出来的,但是托瓦兹为何可以写出 Linux 这个操作系统?为什么 Linux 的发展可以这么迅速?又为什么 Linux 是免费的? 以及目前为何有这么多的 Linux 版本呢?
1 - Linux 介绍
Linux 实际上起源于 Unix。
早在 Linux 出现之前的十年(大约在 1970 年代),就有一个相当稳定而成熟的操作系统存在了----Unix。Unix 的前身是由贝尔实验室(Bell lab.) 的 Ken Thompson 利用汇编语言写成的, 后来在 1971-1973 年间由 Dennis Ritchie 以 C 程序语言进行改写,才称为 Unix。Unix 被慢慢发展成了商业性产品。
Linux 的历史
-
1977 年由 Bill Joy 开发 BSD (Berkeley Software Distribution 伯克利软件套件),这些称为 Unix-like 的操作系统。
-
1984 年由 Andrew Tannenbaum 制作出 Minix 操作系统,该系统可以提供原始码以及软件;为教学科研提供一个操作系统。Minix 具有较多UNⅨ 的特点,但与 UNⅨ 不完全兼容。
-
1991年10月5日,
Linus
为了给 Minix 用户设计一个比较有效的 UNⅨ PC 版本,自己动手写了一个“类Minix” 的操作系统。Linus Torvalds
将它发到了 Minix 新闻组,很快就得到了反应。Linus Torvalds
在这种简单的任务切换机制上进行扩展,并在很多热心支持者的帮助下开发和推出了 Linux 的第一个稳定的工作版本。 -
1991年11月,Linux0.10版本推出,0.11版本
-
随后在1991年12月推出,当时将它发布在Internet上,免费供人们使用。当Linux非常接近于一种可靠的/稳定的系统时,Linus 决定将 0.13 版本称为 0.95 版本。
-
1994年3月,正式的Linux 1.0出现了,这差不多是一种正式的独立宣言。
Linux 是什么
Linux Is Not Unix
的缩写
Linux 就是一个操作系统,它实际上叫做基于内核的一个操作系统,Linux 的创始人其实就写内核。
-
内核,简单说,就是管理着最核心的机器硬件的内部小程序,比如内存、硬盘、网络、CPU、线程调度等等
2 - Linux 的主要特性
优点
-
基本思想
Linux的基本思想有两点:第一,一切都是文件;第二,每个文件都有确定的用途。
-
稳定的系统 Linux 本来就是基于 Unix 概念而发展出来的操作系统,因此,Linux 具有与 Unix 系统相似的程序接口跟操作方式, 当然也继承了 Unix 稳定并且有功率的特点。常听到安装 Linux 的主机连续运做一年以上而不曾当机、 不必关机是稀松平常的亊;
-
免费或少许费用 Linux 是一款免费的操作系统,任何人都可以自由获得,并可以任意修改其源代码。 至于一些『安装套件』的发行者, 他们发行的安装光盘也仅需要些许费用即可获得!
-
可移植性
Linux 由于是 Open Source 的操作系统,所以他的程序代码可以被修改成适合在各种机器上面运行的, 也就是说,Linux 是具有『可移植性』
-
安全性、漏洞的快速修补 如果你常玩网络的话,那么你最常听到的应该是『没有绝对安全的主机』! 没错!不过 Linux 由于支持者日众,有相当多的热心团体、个人参与其中的开发, 因此可以随时获得最新的安全信息,并给予随时的更新,亦即是具有相对的较安全!
-
多任务、多用户
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现代电脑最主要的一个特点,Linux 可以使多个程序同时并独立地运行。
-
使用者不群组的规划 在 Linux 的机器中,档案的属性可以分为『可读、可写、可执行』 等参数来定义一个档案的适用性,此外,这些属性还可以分为三个种类, 分别是『档案拥有者、档案所属群组、其他非拥有者与群组者』。 这对于项目计划或者其他计划开发者具有相当良好的系统保密性。
-
相对比较不耗资源的系统 Linux 只要一部 P-III 以上等级的计算机就可以安装并且使用愉快啰!还不需要到 P-4 或 AMD K8 等级的计算机呢!不过,如果你要架设的是属于大型的主机(服务上百人以上的主机系统), 那么就需要比较好一点的机器了。不过,目前市面上任何一款个人计算机均可以达到这一个要求啰!
-
适合需要小核心程序的嵌入式系统 由于 Linux 只要几百 K 不到的程序代码就可以完整的驱动整个计算机硬件并成为一个完整的操作系统, 因此相当适合于目前家电或者是小电子用品的操作系统呢!那就是当红炸子鸡『嵌入式』系统啦! Linux 真的是很适合例如手机、数字相机、PDA、家电用品等等的微电脑操作系统。
-
整合度佳且多样的图形用户接口(GUI) Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的桌面系统,用户可以使用鼠标对其进行操作。
缺点
不过虽然 Linux 具有这样多的好处,但是他先天上有一个足以致命的地方,使他的普及率受到很大的限制,就是 Linux 需要使用『指令列』的终端机模式进行系统的管理! 虽然近年来有很多的图形接口开发使用在 Linux 上面,但毕竟要熟悉 Linux 还是以指令列来使用是比较好的, 因此要接受 Linux 的玩家必须比较要能熟悉对计算机下指令的行为,而不是用鼠标点一点 icon 就行, Linux 还可以改进的地方:
-
没有特定的支持厂商 因为在 Linux 上面的所有套件几乎都是自由软件,而每个自由软件的开发者可能并不是公司团体, 而是非营利性质的团体。如此一来,在你 Linux 主机上面的软件若发生问题,该如何是好? 好在由于目前 Linux 商业界的整合还不错,目前在台湾比较具名的 Red Hat 与 SuSE 均有设立了服务点。
-
游戏的支持度不足: 很多游戏开发商并没有在 Linux 平台上面开发大型游戏,这间接导致 Linux 无法进入一般家庭
-
专业软件的支持度不足: 很多专业绘图软件公司所推出的专业软件并不支持Linux 操作系统
-
教育训练作的还不够好: 这些缺点绝大部分都不是 Linux 本身的问题,倒是一些政策面与商业方面的考虑,才是最大的困扰。 不过,Linux 与其他的操作系统一样,就是一个工具而已!
Linux 服务器
Linux 服务器是设计出来进行业务处理应用的,在网络和计算机系统当中有广泛的应用,可以提供数据库管理和网络服务等内容,是一种性能非常高的和开源的服务器,在我国的计算机系统的客户端当中,有很多采用的就是Linux 系统,其使用的范围非常广泛,用户体验反应较好。但是对于一些希望计算机应用性能比较高的单位而言,windows 系统需要经常进行资源整合和碎片化管理,系统在配置的时候经常需要重新启动,这就无法避免产生停机的问题。同时,由于Linux系统的处理能力非常强悍,具备不可比拟的稳定性特征,因而 Linux 系统就不用经常进行重启,Linux 系统的变化可以在配置的过程中实现,所以 Linux 服务器出现故障的概率比较小,所以很多企业组织在计算机配置的过程中经常使用 Linux 系统,从而降低服务器发生崩溃的可能性,很多企业在配置 Linux 系统的时候,都是通过减少服务器的故障发生率,实现企业业务的高效运转。
3 - Linux 版本
-
内核的版本 官网:The Linux Kernel Archiveshttp://www.kernel.org The Linux Kernel Archives
-
发行版本
Linux 的核心丢到网络上提供大家下载,使用者可以自由的执行、复制、再发行、学习、修改与强化自由软件
-
有名的 Red Hat、SuSE、Ubuntu、Fedora、Debian 等等,每个 Linux distributions 除了架构的严谨度与选择的套件内容外, 其实差异并不太大
4 - Linux安装
-
首先得装虚拟机 虚拟机:用现有的硬件虚拟出来的一台机器
-
安装 Linux 操作系统
5 - 文件系统
文件系统(File System)是操作系统用来存储和管理文件的方法。从系统角度来看,文件系统对文件存储空间进行组织和分配,并对文件的存储进行保护和检查。从用户角度来看,文件系统可以帮助用户建立文件,并对文件的读、写和删除操作提供保护和控制。 不同的操作系统对文件的组织方式各有不同,其所支持的文件系统数量和种类也不一定相同。Linux文件系统的组织方式称做Filesystem Hierarchy Standard(文件系统分层标准,简称FHS),即采用层次式的树状目录结构。在此结构的最上层是根目录 “/”(斜杠),然后在此根目录下是其他的目录和子文件。
windows 也采用目录树的结构,但是与Linux的略有不同,如图
windows下,分区是最大的目录,而在Linux下,分区则可能是比根目录低两三级的目录。
-
windows以每个分区为树根,由于有多个分区,所以形成了多个树并列的情形。
-
Linux所有的文件系统安装在一个根树上,不仅将分区安装为一个目录,而且其他的硬件设备都安装成一个个设备文件,对设备的操作是通过文件的操作完成的。
linux 的目录
-
/:根目录
-
/bin:系统命令的目录
-
/boot:内核及开机引导系统程序所需要的文件
-
/dev:设备文件,比如声卡、磁盘
-
/etc:系统配置文件目录,比如服务器的配置文件、用户账号及密码
-
/home:普通用户的主目录
-
/lib:库文件存放目录
-
/sbin:大多是涉及系统管理的命令,是超级用户root可执行的命令,普通用户无权限执行
-
/tmp:临时文件目录,运行程序时,会产生一些临时文件
-
/sys:系统设备和文件层次结构,向用户提供详细的内核数据信息
-
/usr:系统存放程序的目录
-
/var:存放很多不断变化的文件,比如系统日志文件
-
/media:即插即用型存储设备的挂载点自动在这个目录下创建,比如U盘
-
/mnt:存放挂载储存设备的挂载目录
-
/proc:操作系统运行时,进程信息及内核信息
-
/root:超级用户root的主目录
-
/opt:可选文件和程序的存放目录
-
/srv:存储系统提供的服务数据
6 - Virtual 网络类型
VirtualBox
虚拟机网络配置的4种方式
-
网络地址转换模式 NAT(Network Address Translation)
虚拟主机访问网络的所有数据是由主机去提供的。但是虚拟主机并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到虚拟主机的存在。
-
只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机
-
虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此
-
-
桥接模式(Bridged Adapter)
通过主机网卡,建立了一个桥梁,直接连入网络中。因此,虚拟机也能被分配到一个网络中独立的
IP
,所有网络功能完全和网络中的真实机器一样。-
因为虚拟机在真实网络段中有独立IP,虚拟机与所有网络其他主机处于同一网络段中,彼此可以通过各自IP相互访问
-
虚拟机与虚拟机可以相互访问
-
-
内部网络模式(Internal)
虚拟机与外网完全断开,只实现虚拟机与虚拟机之间的内部网络模式
-
虚拟机与其他主机不能相互访问,彼此不属于同一个网络
-
-
Host-only Adapter 主机模式
这是一种比较复杂的模式,可以理解为在主机中模拟出一张专供虚拟机使用的网卡,所有虚拟机都是连接到该网卡上的,我们可以通过设置这张网卡来实现上网及其他很多功能,比如(网卡共享、网卡桥接等)。
-
虚拟机与网络中其他主机不能相互访问,双方不属性同一网络段中,host-only 网上默认 ip 段为
192.168.56.X
、子网掩码为255.255.255.0
,后面的虚拟机被分配到的也都是这个网段 -
虚拟机与虚拟机之间可以相互访问,都是同处于一个网段
-
7 - Linux 基本命令
Linux 提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在 Linux 系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解 Linux 系统。
-
安装和登录命令
-
文件处理命令
-
系统管理相关命令
-
网络操作命令
-
系统安全相关命令
-
其他命令
pwd
查看当前处于什么目录
例:如果当前目录为 /root,则 [root@localhost /root] # pwd /root
cd
改变路径
-
cd /
进入根目录 -
cd
切换到当前用户的主目录 -
cd ~用户名
切换到指定用户的主目录 -
cd 目录名
进入某个目录(绝对路径与相对路径) -
cd ..
返回上一级目录 -
cd -
返回上一次所在目录
ls
查阅当前目录下有哪些文件或目录
主要选项:
-
-a
显示指定目录下的所有子目录与文件,包括隐藏文件 -
-l
以长格式显示文件的详细信息,简写成ll
drwxrwxr-x 7 tarena tarena 4096 12月 21 12:01 test
-
说明:
-
文件属性:drwxrwxr-x
-
链接数:7
-
拥有者:tarena
-
所属者group:tarena
-
文件大小:4096
-
修改日期:12月 21 12:01
-
文件名:test
-
-
-p
子目录后带 “/”
ls –a
注:蓝色的为目录,绿色的为可执行文件
mkdir
创建新目录
-
mkdir 目录名
在当前目录下创建一个子目录 -
mkdir 目录路径/目录名
在指定目录下创建一个子目录 -
mkdir –p 目录名1/目录名2
递归式去创建一些嵌套目录
#在当前目录下新建一个目aa mkdir /root/aa mkdir aa
touch
创建文件
-
touch 路径/文件名
在指定路径下创建一个指定的文件 -
touch 文件名1 文件名2 ...
在当前目录下创建一个或多个文件
rm
删除文件或目录
-
rm 文件名
删除文件 -
rm –r 目录名
删除目录
#删除目录 f不要询问 r里面的子文件夹也删除 rm -fr apps #删除文件 rm /root/file1.c #删除空目录 rmdir /root/aa rmdir aa
mv
移动文件或目录
改名
#文件名由 file1 改为 file2 mv file1 file2 #将文件 file2 移至目录/usr下 mv file2 /usr
cp
将源文件或目录复制到目标文件或目录中
主要选项:
-
-i
在覆盖目标文件之前将给出提示要求用户确认,回答y时目标文件将被覆盖 -
-r
递归式拷贝,主要用于拷贝目录 -
-f
替换已经存在的上标文件而不提示 -
-a
保留链接、文件属性,并递归地拷贝目录 -
-p
把其修改时间和访问权限也复制到新文件中 -
-l
不作拷贝,只是链接文件
#当前文件夹下复制一个文件 cp 3.txt 4.txt #将bin目录复制到2目录下 cp -r bin a/ #将当前目录下的txt复制到根目录下 cp *.txt /
groupadd
创建用户组
groupadd user2
useradd
在系统中创建一个新的账号。将在根目录下的home目录下创建用户目录,每个账号都有个目录
可选参数有:
-
-m
表示为用户创建一个用户目录 -
-g
表示为用户指定一个初始组 -
-G
表示为用户指定一个附加组
创建账号 useradd redhat
userdel
删除用户
userdel redhat
passwd
修改密码
#修改 redhat 用户的密码 passwd redhat
su
使用其他账号
su redhat
exit
退出当前用户
whoami
显示当前用户的用户名
who
显示当前登录用户的用户名、登录终端、登录时间
chmod
改变文件或目录的权限
用 ls - l
(简写 ll
)命令显示的详细信息中,开头是由10个字符构成的字符串
drwxr-xr-x. 2 root root 60 Dec 20 21:34 vfio
第一个字符表示文件类型,它可以是:
-
-
普通文件 -
d
目录 -
l
链接文件 -
b
块设备文件 -
c
字符设备文件 -
s
套接字文件
后面的9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件所有者的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字 符分别表示对文件的读、写和执行权限。
-
r
读 -
w
写 -
x
执行。对于目录,表示进入权限
权限控制
-
u
表示 “用户(user)”,即文件或目录的所有者。 -
g
表示 “同组(group)用户”,即与文件属主有相同组ID的所有用户。 -
o
表示 “其他(others)用户”。 -
a
表示 “所有(all)用户”,它是系统默认值。
操作符号可以是:
-
添加某个权限。
-
取消某个权限。
chmod u+rwx 1.sh chmod g-rwx 1.sh chmod o-rwx 1.sh chmod o+w file1
chown
改变文件所属的用户和所属的组
chown root:root 1.sh
普通的账号不能操作 root 账号和组的文件,权限不够
zip
创建压缩包
zip one.zip a.txt b.txt
unzip
解压缩包
unzip one.zip
reboot
电脑重启
shutdown
关闭计算机,它的使用权限是超级用户。
#立刻关机 shutdown now #5分钟后关机 shutdown +5 #在10:30关机 shutdown 10:30
logout
注销系统
login
回到登录界面
cat
查看文件内容
-
-n
每行开始位置显示编号cat -n filename
more 或 less
在显示器上按屏显示文本文件
当文件内容过多时,用 cat
命令显示的文本会迅速闪过,用户来不及看清内容,用 more
命令逐屏显示文本,显示满一屏后暂停,若要继续显示,按回车或空格键即可。
向上
:回看一行,向下
:向后看一行,B
:回看一页,d
:向后看半页,空格
:显示后面所有的
more filename less filename
grep
根据字符匹配来查看文件部分内容
grep 字符 文件名
|
管道,将 | 前面的查询结果作为 | 后面的输入
#列出 /dev 目录下所有内容的详细信息,并分页查看 ls -l /dev --color | less -R
wc
统计指定文件的行数、字数、字节数 主要选项:
-
-c
统计字节数 -
-l
统计行数 -
-w
统计字数
[root@localhost /root]# wc file1
echo
将命令行中的字符串显示在屏幕上
history
历史表
因为用户很有可能用到过去用过的命令,所以将每次输入的命令都记录在历史表中以便将来使用。历史表可以容纳下500条命令。可以使用 history
命令来显示历史表中的记录。
[root@localhost /root]# history
如果想要执行最近一次的命令,可以如下输入:
[root@localhost /root]# !!
yum
是一个在 Fedora 和 RedHat 以及 CentOS 中的软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum 的命令形式一般:yum -选项 [package ...]
-
选项是可选的:
-
-h
帮助 -
-y
当安装过程提示选择全部为 yes -
-q
不显示安装的过程
-
-
[package ...]
是操作的软件包对象
yum 基本用法:
-
yum 安装搜索
#安装包 yum -y install package1 package2 ... #搜索包 yum search package #获取包的相关信息,如说明、大小、版本等 yum info package
-
yum 删除
yum remove package1 package2 ...
-
yum 清空缓存列表
#清除缓存目录下的软件包,清空的是(/var/cache/yum)下的缓存 yum clean packages #清除缓存 yum clean all
-
yum 显示信息
#yum list显示所有已经安装和可以安装的程序包 yum list #显示安装包信息 rpm yum list rpm
-
yum 包的升级
#检查可更新的程序 yum check-update #全部更新,升级所有包,以及升级软件和系统内核,这就是一键升级 yum update #更新指定软件包 yum update package #升级指定软件包 yum upgrade package
rpm
#安装 rpm 包 rpm –i package #删除一个 rpm 包 rpm –e 软件
其它命令
-
ps ax
查看进程 -
uname -a
查看内核 -
lsmod
查看内核加载模块 -
lsusb
查看 usb 设备 -
cat /proc/cpuinfo
查看 CPU 信息 -
ethtool 网卡名称
查看网卡状态 -
free -m
查看当前内存使用情况
8 - 其他
8.1 路径扩展名
-
*
代表任意一个字符串 -
?
代表任意一个字符
$ ls -l /home/public/c*
-rw-r--r-- 2 cl user 21 Dec 3 12:37clfile -rw-rw-r-- 2 cxp user 27 Dec 3 12:33cxpfile
8.2 输出重新定向
>
的功能是将命令的输出送入文件中。如果文件不存在,则创建这个文件;如果文件存在,则覆盖这个文件。
>>
的功能同 >
相似,不同的是:如果文件存在,它并不是覆盖文件,而是将结果添加的文件的后面。
ls -l > dirfile ls -l >> dirfile
8.3 vi 编辑器
vi 编辑文本文件,经常用来编辑系统的配置和工具,非常常用。
vim 5.txt
新建一个文件或打开一个已有的文件 --> 打开一个屏幕用来输入内容 ---> 一般模式
-
编辑模式:按下
i
或a
或o
进入编辑模式 -
一般模式:按下
esc
进入 该模式 -
底行命令模式:在 一般模式 下,按下
shift + :
进入底行命令模式
一般模式下的操作(移动光标,复制粘贴,搜索替换等):
底行命令模式下的操作: