Linux的发行版以及不同发行版之间的联系与区别
Linux发行版主要的大分支有三个:dibian S.U.S.E redhat
一个操作系统由kernel和application组成。编译封装的时候根据不同的application,可以编译成不同的发行版本。
所有的linux发行版都是基于GPL的版权,它们的内核都是linux的(只是可能版本不同),所以源码都必须提供出来。
一个大的发行版本可以分为桌面版(个人版)、企业版。大的发行版本还可以有许多其他的衍生版本
主要发行版本的关联关系:
Redhat:红帽linux
桌面版: 桌面这块的业务已经移交给了fedora
企业版:RHEL
Centos:redhat 的社区企业版,现已被Redhat收购
S.U.S.E:基于slackwre的发行版,它引用了一些redhat的特性,如RPM
S.U.S.E和opensuse一般在欧洲用的比较多。
Debian:
它不是由商业组织发行的,是由一个独立松散的组织来维护。相对其他的linux发行版本,debian更自由及开放,所以相对来说,这个发行版给与用户的选择更多。
Debian的发行版的分支上有一个桌面衍生版,ubuntu,它的桌面效果非常好。
Linux的哲学思想
1. 一切皆文件
2. 由各个目的单一的小程序组成,小程序组合完成复杂的功能
3. 尽量避免跟用户交互,以便可以通过脚本等方式进行自动化任务
4. 使用文本文件保存配置
1. 一切皆文件
Linux下所有的东西都以文件来显示:
硬件:硬件设备也显示为文件,提供硬件的访问入口及关联驱动。主要有块设备文件及字符设备文件两种形式,显示为b,c
普通的文件:显示为f,包含二进制文件、可执行文件、ASCI文件
目录文件: 显示为d,表示一个文件的路径映射
符号连接文件:显示为l,在元数据区数据块指针指向了另外一个文件的访问路径。
管道文件:显示为p
套接字文件:显示为s
2. 由各个目的单一的小程序组成,小程序组合完成复杂的功能
有点类似于模块化的设计,把一个复杂功能拆分成各个单独的模块。每个模块负责一个简单功能。这样可以提高代码的实现,维护,重用。
3. 尽量避免跟用户交互,以便可以通过脚本等方式进行自动化任务
一个程序一旦发起为进程,在这个生命周期内,尽量减少和用户的交互,依靠系统自身的机制,完成自动化任务。
4. 使用文本文件保存配置
文本文件易于和底层进行交互,这样可以方便管理员用文本来进行管理
计算机的组成及其功能
根据冯诺依曼体系,计算机分为5部分:运算器、控制器、存储器、输入设备、输出设备
运算器:通过存储器和输入设备提供的数据,并有控制器提供指令所在的地址,完成一次指令运算。
控制器:告诉运算器数据与指令从哪里获取。
存储器:内存(RAM)存放指令与数据。数据掉电失效。
输入与输出设备:也可以称呼为IO设备,完成数据的输入与数据结果的输出。通常的输入输出设备有:硬盘,网卡,显示器,键盘……
各个组成之间的关联关系
1. 运算器一般与控制器放在一起,统称CPU
2. CPU与存储器及IO设备之间通过总线相连。为了完成寻址、获取数据、及获取指令这三个功能,CPU与其他设备之间的总线分为地址总线、数据总线、控制总线
3. 在南北桥架构中,CPU与存储器(内存)之间通过北桥来完成功能交互,北桥是高速总线;与IO设备之间通过南桥来完成功能交互,南桥是低速总线,汇总后连入北桥。
IO也有一些高速的接口例如PCIE可以让IO设备直接连入北桥。
各个设备之间速度在数量级上的概念
CPU、存储器、IO设备之间的速率各不相同。按照速度快慢:CPU——存储器——IO
设备性能相关
为了完成数据交互,设备与设备间的速率相匹配,才能提升性能
CPU的速率最快,存储器的速率比较慢,所以CPU为了可以更好地与存储器完成数据交互,提升性能,可以添加中间件(缓存)。
获取命令的使用帮助
命令分为两种:外部命令及内部命令
内部命令:
help COMMAND
例:help cd
外部命令
1)命令自带简要格式的使用帮助 (简单的使用说明)
例:ls –help
2)使用手册
man +COMMAND
位置:/usr/share/man
例:man ls
3)获取命令的在线文档
info COMMAND
4)很多应用程序会自带帮助文档
一般存放在 /usr/share/doc/APP-VERSION
5) 主流的发行版官方文档
http://www.redhat.com/doc
6)程序的官方文档
官方站点上的“Document”
7) 善用搜索引擎
man手册章节说明
man手册下的各个章节的含义如下
位置: /usr/share/man
man1,man2..
1.用户命令
2.系统调用
3.C库调用
4.设备文件及特殊文件
5.文件格式
6.游戏使用帮助
7.杂项
8.管理工具及守护进程
可以通过查看指定章节的手册信息
man 数字 COMMADN
例:man 5 passwd 查看man手册中第五章节的passwd命令帮助
Linux的FHS
FHS:Filesystem Hierarchy Standard
通过FHS,规范了每个不同的目录下应该存放什么文件。
/bin:所有用户可用的基本命令程序文件
/sbin:供系统使用的工具程序
/boot: Static files of the boot loader 引导加载器必须用到的各静态文件:kerenl、initramfs(initrd),grub
/dev :Devices files 存储特殊文件或者设备文件
/etc:主机特有的系统配置文件(静态)
/home:用户家目录(可选)
/lib: 为系统启动或根文件系统上的应用程序(/bin,/sbin)提供共享库及为内核提供内核模块
/lib64;64位的库
/media:
/mnt:其他文件型的临时挂载点
/opt:附加应用程序的安装位置
/root:root用户的家目录
/srv: 当前主机为服务提供的数据
/tmp:存放临时文件
/usr:全局共享的只读数据路径 usr Hierarchy
bin ,sbin
lib lib64
include:C程序用到的头文件
share:架构特有的文档存放位置 命令手册页,自带文档
/local:hierarchy
/usr/local:hierarchy.让系统管理员安装本地应用程序,也通常用于安装第三方程序
/var:hierarchy 存储经常发生变化的数据的目录
lib
local
lock
log
opt
run
spool
tmp
/proc:虚拟文件系统,用来为内核及进程存储其相关信息:他们大多为内核参数,例如:net.ipv4_forward 虚拟为net/ipv4/ip_forward
/sys:sysfs 虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径,其主要作用在于为管理linux设备提供了一种统一模型的接口
* /proc 和 /sys 都是基于内存的,也就是说已关机就没了
Linux上命令的使用格式皆一些常规命令的用法
Linux命令的语法通用格式
COMMAND OPTIONS ARGUMENTS
命令(COMMAND):
一般分为两类:外部命令及内部命令
内部命令:由shell程序自带的命令
外部命令:独立的可执行文件,文件名即命令名
选项(OPTIOS):
指定命令的运行特性,改变了命令的实现功能及表现形式
选项分两种:
-char 短选项
–word 长选项
长选项,如果有选项参数的话通过“=”来进行连接,中间没有空格
短选项,如果有选项参数的话通过“space” 来进行连接,有时可以没有空格
多个短选项间可以合并,长选项不行
选项与选项间通过“space”来隔开
参数(argtments):
命令的作用对象
不同的命令带的参数的格式不一样,有些命令可以同时带多个参数(中间以空格隔开)
Linux常用命令
ifconfig,echo,tty,startx ,export,pwd,history,shutdown,poweroff,reboot,hwclock,date
ifconfig:
用来显示网卡的配置信息或者为网卡进行配置
用法:
ifconfig [interface]
ifconfig interface [aftype] options | address …
示例:
ifconfig [eth0]
显示系统的网卡配置信息,如果带参数eth0,则只显示eth0一块网卡的信息
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:D3:C4:B2
inet addr:192.168.122.3 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fed3:c4b2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:32894 errors:0 dropped:0 overruns:0 frame:0
TX packets:2849 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4187189 (3.9 MiB) TX bytes:223104 (217.8 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1272 (1.2 KiB) TX bytes:1272 (1.2 KiB)
ifconfig interface [aftype] options | address …
可以为网卡 配置IP,掩码等参数
[root@localhost ~]# ifconfig lo 127.0.0.1 netmask 255.0.0.0 设置lo的网卡IP地址为127.0.0.1 掩码为255.0.0.0
[root@localhost ~]# ifconfig eth0 up 开启eth0网卡
[root@localhost ~]# ifconfig eth0 down 关闭eth0网卡
* 用ifconfig命令配置的信息在shell进程关闭后消失
echo:命令回显
用法:
echo [SHORT-OPTION]… [STRING]…
选项:
-e 激活转义字符
示例:
[root@localhost ~]# echo "hello world"
hello world
[root@localhost ~]# echo "hello world\n"
hello world\n
[root@localhost ~]# echo -e "hello world\n"
hello world
tty:显示当前的终端
用法:
tty [options]
示例:
[root@localhost ~]# tty
/dev/pts/1
startx:启动GUI
用法:
startx [options]
export:导入或者显示环境变量,和declare -i 命令类似
用法:
1.export name=VALUE 赋予一个值给环境变量name
*用export命令导入的环境变量在shell进程结束后被释放
2.export 查看当前的环境变量
示例:
[root@localhost ~]# export name=1
[root@localhost ~]# export
pwd:显示当前的工作目录
用法:
pwd [OPTION]…
示例:
[root@localhost tmp]# pwd
/tmp
history:用户之前执行过的命令历史
示例:
[root@localhost ~]# history 显示当前内存中保存中的命令历史
1 whereis tree
2 man tree
3 man whereis
[root@localhost ~]# history -c 清空命令历史
[root@localhost ~]# history
1 history
[root@localhost tmp]# history -r 把历史命令从文件中读取并载入内存
[root@localhost tmp]# history -w 把内存中的历史命令载入文件中
[root@localhost tmp]# history 5 显示最近的5条历史命令
12 ls -ld /tmp/
13 history
14 history -w
15 history
16 history 5
[root@localhost tmp]# !12 执行历史命令列表中的第12个命令
[root@localhost tmp]# !!执行上次命令
[root@localhost tmp]# !l 执行命令列表中最近l个以l开头的命令
在环境变量中有3个和hisory相关的环境变量,可以修改他们的值来做到定制history功能
HISTSIZE:shell保留的history条目,默认1000
HISTFILE: 历史命令保存的文件 历史命令被写入文件之后会被永久保存。 /root/.bash_history
HISTFILESIZE:历史命令文件的大小,默认1000
shutdown:关机
shutdown [OPTION]… TIME [MESSAGE]
用法:
[root@localhost tmp]# shutdown -h now 立刻关机
[root@localhost tmp]# shutdown -r now 立刻重启
[root@localhost tmp]# shutdown -c 取消正在执行的关机的操作
poweroff:关机
reboot:重启
hwclock:显示或设定硬件时钟
用法:
hwclock [functions] [options]
示例:
[root@localhost test.GvCZXb]# hwclock
2016年08月14日 星期日 22时24分00秒 -0.878324 seconds
[root@localhost test.GvCZXb]# hwclock -s 以硬件时间为准,把系统时间调整和硬件时间相同
[root@localhost test.GvCZXb]# hwclock -w 以系统时间为准,把硬件时间调整和系统时间相同
date
显示日期时间以及修改系统时间
用法:
date [OPTION]… [+FORMAT]
date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]
示例:
[root@localhost test.GvCZXb]# date 显示当前系统时间
2016年 08月 14日 星期日 22:31:03 CST
[root@localhost test.GvCZXb]# date 081422322016.30 修改当前系统时间
2016年 08月 14日 星期日 22:32:30 CST
[root@localhost test.GvCZXb]# date +%F 显示年–月–日
2016-08-14
[root@localhost test.GvCZXb]# date +%Y 显示年份
2016
[root@localhost test.GvCZXb]# date +%T 显示时间
22:34:51
[root@localhost test.GvCZXb]# date +%m 显示月份
08
[root@localhost test.GvCZXb]# date +%d 显示日期
14
[root@localhost test.GvCZXb]# date +%H 显示小时
22
[root@localhost test.GvCZXb]# date +%M 显示分钟
36
[root@localhost test.GvCZXb]# date +%S 显示妙
11
[root@localhost test.GvCZXb]# date +%s 显示从UTC时间,从1970年1月1号0点0分距现在多少秒
1471185433
原创文章,作者:N22-苏州-striker,如若转载,请注明出处:http://www.178linux.com/35478
评论列表(1条)
写的很好,排版还可以在漂亮一点,加油,没写全把