一、Linux操作系统说明
1.主流的Linux发行版
Linux发行版有数百种之多,常见的版本有以下几种:
1)RedHat:中国和美洲流行
Redhat 9.0个人版2003年停止更新àFedora Core:6个月更新一次
RedHat Enterprise Linux: RHEL
--->社区版CentOS: Community ENTerprise OS
2)Slackware 版本
SuSE(商业、开源两种)--->欧洲流行
SLES:SuSE的商业版
OpenSuSE :SuSE开源版本,桌面华丽著称
3) Debian:现在唯一一个全社区版,无商业公司支持,使用难度复杂
Ubuntu :基于Debian的二次发行桌面
mint
knopix 安全著称
4)Gentoo
5)ArchLinux
2.软件程序版本号:major.minor.release 主版本号.次版本号.发行版本号
1)kernel:0.99, 2.2, 2.4, 2.6, 3.0, 4.0 www.kernel.org
2)发行版本版本号:
RHEL: 5.x, 6.x, 7.x
Fedora 23
Debian:8.x
OpenSuSE: 13.x
3.开源协定:
1) GPL:通用公共许可证,版权属于GPL,任何程序只要遵循GPL协定,就必须开源
2) LGPL:Lesser GPL 宽松的通用公共许可证,基于库接口调用,无需开源
GPL V2. GPL V3.:更新版
3) BSD协定:
如果二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协定;
如果二次发布产品是二进制格式的库或程序,则需要在发布的文档或版权声明中说明包含原来的代码中的BSD协定
不可以用开源代码的作者或组织,以及原来的产品的名字做市场推广;
4) Apache协定:ASF:Apache Software Foundtion
5) 双线授权:
Community社区版:遵循开源协定
Enterprise商业授权版:社区版基础上二次开发出更强大的功能、以及提供服务
4.Linux的哲学思想:
1) 一切皆文件:把几乎所有资源统统抽象为文件形式;包括硬件设备,甚至通信接口等;
2) 由众多功能单一的程序组成;一个程序只做一件事,并且做好;组合小程序完成复杂任务;
3) 尽量避免跟用户交互------>>易于以编程的方式实现自动化任务;
4) 使用文本文件保存配置信息;
5.终端设备:terminal à多任务、多用户
1) 物理终端pty,控制台:console /dev/console
2) 虚拟终端:6个 ,Ctrl+Alt+F[1-6] tty /dev/tty#
3) 图形终端:图像化界面,但不是必须的,无需图形界面服务器不需要显卡
CentOS 6 : Ctrl+Alt+F7
CentOS 7 :在哪个虚拟终端启动,即位于哪个虚拟终端;
4) 串行终端:ttyS /dev/ttyS#
5) 伪终端:远程连接的终端变现形式pts /dev/pts#
6. Linux OS的两类接口:
1)GUI:Graphic User Interface 图形用户界面
实现:GNome:c, gtk
KDE: c++, qt
XFACE:简洁,适用于嵌入式终端的桌面系统
2)CLI:Command Line Interface 命令行界面
实现:bash、zsh、sh、csh、tcsh、ksh
命令行接口:例如 [root@node1 ~]# COMMAND
root: 当登录的用户
node1: 当前主机的主机名,非完整格式;
~:用户当前所在的目录(current directory),也称为工作目录(working directory);相对路径;
#:命令提示符;
#:管理员账号,为root; 拥有最高权限,能执行所有操作;
$:普通用户,非root用户;不具有管理权限,不能执行系统管理类操作;
二、Linux命令的语法通用格式
# COMMAND OPTIONS ARGUMENTS
1.COMMAND:发起一命令
请求内核将某个二进制程序运行为一个进程;静态到动态(过程)
命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;
1)多数系统程序文件都存放位置:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin
普通命令:/bin, /usr/bin, /usr/local/bin
管理命令:/sbin, /usr/sbin, /usr/local/sbin
共享库:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
32bits的库:/lib, /usr/lib, /usr/local/lib
64bits的库:/lib64, /usr/lib64, /usr/local/lib64
注:并非所有的命令都有一个在某目录与之对应的可执行程序文件
2)命令必须要遵循特定格式规范:
Linux:ELF --->Exectable and Linkable Format可执行链接文件
Windows:.exe .msi
3)命令分为两类:
内置命令(builtin):由shell程序的自带的命令独立的可执行程序文件,文件名即命令名;
外部命令:shell程序是独特的程序,负责解析用户提供的命令;
命令提示符背后的程序会完成在环境变量PATH下查找命令、词法分析等
环境变量PATH:从哪些路径中查找用户键入的命令字符串所对应的命令文件;
~]# echo $PATH --->查找次序:自左而右;
查看命令类型:type COMMAND
2. OPTIONS:指定命令的运行特性
1)短选项:-C, 例如-l, -d
2)长选项:--word, 例如--help, --human-readable
注:有些命令的短选项没有-;
如果同一命令同时使用多个 短选项,多数可合并:-l -d = -ld
长选项不能合并;
有些选项可以带参数,此称为选项参数;
3.ARGUMENTS:命令的作用对象;命令对什么生效;
不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;
三、获取命令的使用帮助:
1.内部命令:help COMMAND
2.外部命令:
(1) 命令自带简要格式的使用帮助:# COMMAND --help
(2) 使用手册(manual) ---> 位置/usr/share/man
# man COMMAND
1)SECTION:man查询帮助时显示的帮助文档内容结构
NAME:名称及功能性说明
SYNOPSIS:语法格式,用法说明,包括可用的选项
[]:可选内容;
<>:必须提供的内容;
a|b|c:多选一;
...:同类内容可出现多个;
{ } : 分组
DESCRIPTION:命令功能的详尽说明,可能包含每个选项的意义
OPTIONS:选项,说明每一个选项的意义
FILES:此命令相关的配置文件
EXAMPLES:使用示例
AUTHOR: 作者
BUGS: 报告程序bug的方式
SEE ALSO: 参考
...
2)/usr/share/man存放的时压缩格式的文件形式的使用手册,有章节之分;
章节: man 1, man 2, man 3,man 4,man 5,man 6,man 7,man 8
~]# man NUMBER KEYWORD
NUMBER[1|2|3|4|5|6|7|8]:
1:用户命令:/bin; /usr/bin; /usr/local/bin;
2:系统调用;
3:C库调用;
4:设备文件及特殊文件;
5:文件格式;(配置文件格式)
6:游戏使用帮助;
7:杂项:Miscellaneous
8:管理工具及守护进程:/sbin;/usr/sbin;/usr/local/sbin
注:并非每个COMMAND在所有章节下都有手册;
查看命令所在章节:~]# whatis COMMAND
其执行过程是查询数据库进行的;手动更新数据库: ~]# makewhatis
3)man命令打开手册以后的操作方法:
翻屏:
空格键(Space):向文件尾部翻一屏;
b: 向文件首部翻一屏;
Ctrl+d:向文件尾部翻半屏; download
Ctrl+u:向文件首部翻半屏; upload
回车键(Enter):向文件尾部翻一行;
k: 向文件首部翻一行;
G:跳转至最后一行;
#G: 跳转至指定行;
1G:跳转至文件首部;
文本搜索:
/keyword:从文件首部向文件尾部依次查找;不区分字符大小写;
?keyword:从文件尾部向文件首部依次查找;
n: 与查找命令方向相同;
N: 与查找命令方向相反;
退出: q: quit
选项: man -M /PATH/TO/SOMEDIR 到指定目录下查找命令手册并打开之;
(3) info COMMAND:获取命令的在线文档;
(4) 很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION
README:程序的相关的信息;
INSTALL: 安装帮助;
CHANGES:版本迭代时的改动信息;
(5) 主流发行版官方文档:例如RedHat官方网站 http://www.redhat.com/doc
(6) 程序官方的文档:官方站点上的“Document”
(7) 搜索引擎:google
keyword filetype:pdf
keyword site:domain.tld
…
四、目录与文件简介
目录:路径映射。分为工作目录:working directory;家目录:home
文件:存储空间存储的一段流式数据,对数据可以做到按名存取;
1.文件系统格式:
层级结构 à倒置树状结构
/: 根节点,文件系统的原初起点
例如/dev/pts/2 --->最左侧/: 表示根目录;其它的/: 表示路径分隔符
2.文件的路径表示方法
绝对路径:从根开始表示出的路径
相对路径:从当前位置开始表示出的路径
3.文件名使用法则:
(1) 严格区分字符大小写:file1, File1, FILE1表示不同文件
(2) 目录也是文件,在同一路径下,两个文件不能同名;
(3) 支持使用除/以外的任意字符;
(4) 最长不能超过255个字符;
(5) 以.开头的文件为隐藏文件;
五、文件系统层标准
FHS:文件系统层级结构标准(Filesystem Hierarchy Standard)
/bin:所有用户可用的基本命令程序文件;
/sbin:供系统管理使用的工具程序;
/boot:启动相关文件,引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;
/dev:存储特殊文件或设备文件;字符设备(线性设备)、块设备(随机设备);
/etc:系统程序的配置文件,只能为静态;
/home:普通用户的家目录集中位置,用户名同名子目录,/home/USERNAME;
/root:管理员的家目录;
/lib:为系统启动或根文件系统上的应用程序提供共享库,以及为内核提供内核模块;
libc.so.*:动态链接的C库;
ld*:运行时链接器/加载器;
modules:用于存储内核模块的目录;
/lib64:64位系统特有的存放64位共享库的路径;
/media:便携式设备挂载点;
/mnt:其它文件系统的临时挂载点;
/opt:附加应用程序的安装位置;可选路径;
/srv:当前主机为服务提供的数据;
/tmp:用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;
/usr:usr Hierarchy,全局共享的只读数据路径;
bin, sbin:用户和管理员命令程序
lib, lib64:共享库文件
include:C程序头文件;
share:命令手册页和自带文档等架构特有的文件的存储位置;
X11R6:X-Window程序的安装位置;
src:程序源码文件的存储位置;
local:Local hierarchy,本地层级目录;
让系统管理员安装本地应用程序;也通常用于安装第三方程序;
/var:/var Hierarchy,存储常发生变化的数据的目录;
cache Application cache data 应用缓存数据
lib Variable state information易变的状态数据
local Variable data for /usr/loca l可变化 /usr/local下的数据
lock Lock files 锁文件
log Log files and directories 日志文件和目录
opt Variable data for /opt 可变化/opt下的数据
run Data relevant to running processes 运行进程相关的数据
spool Application spool data应用队列信息,如例行性计划,邮箱服务器等数据
tmp Temporary files preserved between system reboots系统重启保存的临时文件
/proc:基于内存的虚拟文件系统,存储内核及进程其相关信息;内核参数
例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/
其完整路径为/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;
为管理Linux设备提供一种统一模型的的接口;
硬件设备相关属性映射文件