一、Linux操作系统概述
1、发展
1991 Linus Linux 0.0.1版,代码为8K行。现在最新版本为5.12.4。Linux加入了GNU,整体基于GPL协议,允许开源、分享传播、修改。
内核下载的地址:
The Linux Kernel Archives
2、组成
kernel内核:
核心程序,用于管理硬件设备、系统的线程进程、内存、交换空间、文件系统、精灵进程(守护进程)等。主要实现系统程序与硬件之间的控制管理功能。
Shell:
包裹在内核之外的人机交互界面,用于用户和内核之间打交道的功能,类似于windows的cmd。
通过Shell将输入的命令与内核通讯,好让内核可以控制硬件并正确无误的操作工作。
Shell有着不同的分类,比如Bourne shell(sh),Korn shell(ksh)、C shell (csh)、Bourne-again shell(bash)、tcsh。其中最常用的有csh和bash。
ubuntu 16.04的terminal如下:
3、user application
Linux根据程序的运行,分为用户空间和内核空间,简单的理解就是,普通的应用程序运行在用户空间,一些涉及到系统核心资源的操作的程序运行在内核空间,比如TCP/IP协议栈、驱动、进程调度、内存管理、文件系统等都运行于Linux内核空间,
其实一些应用程序当需要访问系统资源的时候,必须通过系统调用,通过一些内核函数将系统资源由内核空间拷贝到用户空间。
4、Files System:
文件系统,管理文件和目录。
Linux的特性:
多用户、多任务(进程、线程处理),多平台,图形化界面(x-windows)、硬件低配置、通信与联网、应用程序的支持(编辑器、编辑工具、数据库、办公软件、图形处理、Internet应用、游戏)。
二、Linux操作系统安装
1、Linux的选择
red hat:
企业级的,已经开始收费(商用)。
CentOS
是RHEL的克隆版本。RedHat一直都提供源代码的发行方式,CentOS就是将RedHat发行的源代码重新编译一次,形成一个可使用的二进制版本。由于Linux的源代码是GNU,所以从获得RedHat的源代码到编译成新的二进制,都是合法。只是RedHat是商标,所以必须在新的发行版里将RedHat的商标去掉。
通常搭建服务器选用CentOS。
ubuntu:
桌面开源的,比较纯正的Linux,android官方指定的编译操作系统,发展快、已支持ARM架构。
ubuntu在开发者中,非常受欢迎,一口君所有的文章和视频都以ubuntu为主。
2、安装Ubuntu Desktop
Linux环境安装篇幅较长,安装详细步骤参考这篇文章:
《linux环境搭建-ubuntu16.04安装》
3、基本操作
ctrl+alt F2 可以进入终端界面
ctrl+alt F7 进入桌面界面
ctrl+alt+t 文本编辑
123
COPY
我们通常用快捷键ctrl+alt+t打开一个终端,这个一定要记住。
其中:
peng 当前用户
ubuntu 主机名
~ 当前用户主目录,/home/peng,每一个用户都会在/home下创建一个与用户名同名的目录
$ 普通用户
1234
COPY
如果切换到管理员用户
root 管理员
/home/peng 当前工作目录
# 当前是管理员
COPY
三、Linux文件系统及文件基础
1、文件系统概述
Linux 中一切皆为文件,文件系统用来组织计算机的文件和资料的系统,是操作系统封装的一个系统服务程序,实际是一个软件程序,用来存储和管理计算机文件和资料。
文件系统分类如下:
磁盘文件系统:NTFS,EXT3
闪存文件系统:JFFS2,YAFFS
数据库文件系统:BFFS,WINFS
网络文件系统:NFS
虚拟文件系统:VFS(Proc)
12345
COPY
文件系统的功能:能定义文件的组织方式,文件的结构;提供建立和存取文件的环境(目录和文件)
2、Linux文件系统及文件
- EXT3:是一个日志方式的文件系统,系统中的每个文件都有索引,用户对文件的每个操作都会记录在日志中,形成一个任务队列。
- SWAP:是交换分区的文件系统,类似于windows的虚拟内存,其实现的方式有以下两种:
第一种是进行内存排列像内存池一样,进行优化;
第二种是把硬盘上的空间模拟成内存。
Swap是Linux 的虚拟内存,在安装时要设置好大小,一般设置为物理内存的两倍。 - 目录结构
linux 的结构是由很多文件块区组成,与Windows分区不同。
目录 | 应放置档案内容 |
---|---|
/bin | 系统有很多放置执行档的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root与一般帐号所使用,主要有:cat,chmod(修改权限), chown, date, mv, mkdir, cp, bash等等常用的指令。 |
/boot | 主要放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档等等。Linux kernel常用的档名为:vmlinuz ,如果使用的是grub这个开机管理程式,则还会存在/boot/grub/这个目录。 |
/dev | 在Linux系统上,任何装置与周边设备都是以档案的型态存在于这个目录当中。 只要通过存取这个目录下的某个档案,就等于存取某个装置。比较重要的档案有/dev/null, /dev/zero, /dev/tty , /dev/lp, / dev/hd, /dev/sd*等等 |
/etc | 系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。 一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有root有权力修改。 FHS建议不要放置可执行档(binary)在这个目录中。 比较重要的档案有:/etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/等等。 另外,其下重要的目录有:/etc/init.d/ :所有服务的预设启动script都是放在这里的,例如要启动或者关闭iptables的话: /etc/init.d/iptables start、/etc/init.d/ iptables stop |
/etc/xinetd.d/ | 这就是所谓的super daemon管理的各项服务的设定档目录。 |
/etc/X11/ | 与X Window有关的各种设定档都在这里,尤其是xorg.conf或XF86Config这两个X Server的设定档。 |
/home | 这是系统预设的使用者家目录(home directory)。 在你新增一个一般使用者帐号时,预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号: ~ :代表当前使用者的家目录,而 ~guest:则代表用户名为guest的家目录。 |
/lib | 系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已 。 什么是函式库呢?妳可以将他想成是外挂,某些指令必须要有这些外挂才能够顺利完成程式的执行之意。 尤其重要的是/lib/modules/这个目录,因为该目录会放置核心相关的模组(驱动程式)。 |
/media | media是媒体的英文,顾名思义,这个/media底下放置的就是可移除的装置。 包括软碟、光碟、DVD等等装置都暂时挂载于此。 常见的档名有:/media/floppy, /media/cdrom等等。 |
/mnt | 如果妳想要暂时挂载某些额外的装置,一般建议妳可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦。 只是有了/media之后,这个目录就用来暂时挂载用了。 |
/opt | 这个是给第三方协力软体放置的目录 。 什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计画,不过他可以安装到Linux系统中,因此KDE的软体就建议放置到此目录下了。 另外,如果妳想要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体安装到这里来。 不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下。 |
/root | 系统管理员(root)的家目录。 之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分区中。 |
/sbin | Linux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来设定系统,其他使用者最多只能用来查询而已。放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。至于某些伺服器软体程式,一般则放置到/usr/sbin/当中。至于本机自行安装的软体所产生的系统执行档(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。 |
/srv | srv可以视为service的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。 常见的服务例如WWW, FTP等等。 举例来说,WWW伺服器需要的网页资料就可以放置在/srv/www/里面。呵呵,看来平时我们编写的代码应该放到这里了。 |
/tmp | 这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要资料不可放置在此目录啊。 因为FHS甚至建议在开机时,应该要将/tmp下的资料都删除。 |
3. Linux文件属性:
Linux文件属性一共7种:
类型 | 字母 | 说明 |
---|---|---|
普通文件类型 | – | Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-] |
目录文件 | d | 就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx] |
块设备文件 | b | 块设备文件 : 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b] |
字符设备 | c | 字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c] |
套接字文件 | s | 这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型 |
管道文件 | p | FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p] |
链接文件 | l | 类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx] |
1、普通文件
使用 ls -l 命令后,
第一列第一个字符为 “-” 的文件为普通文件.
2、目录文件
Linux 中的目录也是文件,目录文件中保存着该目录下其他文件的 inode 号 和文件名等信息,目录文件中的每个数据项都是指向某个文件 inode 号的链接,删除文件名就等于删除与之对应的链接。目录文件的字体颜色是蓝色,使用 ls -l 命令查看,第一个字符为”d”(directory)。
目录文件的权限:
- 1)r 表明该目录文件具有可读权限,即可以使用 ls 命令查看该目录的存储情况;
- 2)w 表明该目录文件具有写权限,即可以往该目录下添加、修改、删除文件;
- 3)x 表明该目录文件具有可执行文件,即可以使用 cd 命令进入到该目录下。
可以使用 chmod 指令来改变文件的权限。
3、链接文件
链接文件一般指的是一个文件的软连接(或符号链接),使用 ls -l 命令查看,第一个符号为 “l”,文件名为浅蓝色,如下:
这里,test_softlink 就是一个链接文件,从结果上还可以看到它是文件 test.txt 的软链接,删除原文件 test.txt 的话,对应的软链接文件 test_softlink 也会消失。可以使用 ln 命令来创建一个文件的链接文件:
1)软链接
软链接(又称符号链接),使用 ln -s file file_softlink 命令可以创建一个文件的软链接文件:
ln -s test.txt test_softlink
1
COPY
软链接相当于给原文件创建了一个快捷方式,如果删除原文件,则对应的软链接文件也会消失。
2)硬链接
硬链接,相当于给原文件取了个别名,其实两者是同一个文件,删除二者中任何一个,另一个不会消失;对其中任何一个进行更改,另一个的内容也会随之改变,因为这两个本质上是同一个文件,只是名字不同。使用 ls -i 命令查看,可以发现硬链接的两个文件的 inode 号是一样的:
同样的,使用 ln 命令可以创建一个文件的硬链接:
ln test.txt test_hardlink
1
COPY
4、设备文件
Linux 中的硬件设备如硬盘、鼠标等也都被表示为文件,即为设备文件。
设备文件一般存放在 /dev/ 目录下,文件名为黄色,如下:
设备文件分两种:
- 1)块设备文件:
块设备文件支持以块(block)为单位的访问方式。在 EXT4 文件系统中,一个 block 通常为 4KB 的大小,也就是说每次可以存取 4096(或其整数倍) 个字节的数据。应用程序可以随机访问块设备文件的数据,程序可以自行确定数据的位置,硬盘、软盘等都是块设备。使用 ls -l 命令查看,块设备文件的第一个字符是 “b”(block)。
- 2)字符设备文件:
字符设备文件以字节流的方式进行访问,由字符设备驱动程序来实现这种特性,这通常要用到 open、close、read、write 等系统调用。字符终端、串口和键盘等就是字符设备。另外,由于字符设备文件是以文件流的方式进行访问的,因此可以顺序读取,但通常不支持随机存取。使用 ls -l 命令查看,