FHS:

Linux的文件系统分层结构:FHS Filesystem Hierarchy Standard(文件系统层次化标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。(来源:百度百科讲解)

根文件系统

/:文件系统的起始

目录

简单描述

bin

基本命令的二进制文件

boot

系统启动所需要的静态文件

dev

设备文件

etc

系统的配置文件

sbin

系统二进制文件

usr

只读用户数据

tmp

临时文件

run

进程运行过程中的相关数据

lib

基本共享库和内核模块

home

普通用户的家目录

mnt

临时挂载文件系统的挂载点

opt

附件的应用软件或者程序包

srv

提供该系统服务的数据

root

root用户家目录

media

临时挂载点 媒体

1. /usr:只读用户数据

/usr/bin  大多数用户命令
/usr/lib 图书馆
/usr/local 本地层次结构(主安装后为空)
/usr/sbin 非重要系统二进制文件
/usr/share 独立于架构的数据
/usr/games 游戏和教育二进制文件
/usr/include C 程序包含的头文件
/usr/ibexec 由其他程序运行的二进制文件
/usr/lib<qual> 备用格式库
/usr/src 源代码

2. /dev:设备文件

/dev/null   数据黑洞
/dev/zero 吐零机

3./etc:系统的配置文件

/etc/exports  NFS 文件系统访问控制列表
/etc/fstab 有关文件系统的静态信息
/etc/ftpusers FTP 守护程序用户访问控制列表
/etc/gateways 列出路由网关的文件
/etc/gettydefs getty 使用的速度和终端设置
/etc/group 用户组文件
/etc/hosts 有关主机名的静态信息
/etc/inetd.conf inetd 的配置文件
/etc/inittab 初始化的配置文件
/etc/issue 登录前消息和身份证明文件
/etc/motd 当天文件的登录后消息
/etc/mtab 有关文件系统的动态信息
/etc/sysconfig/network-scrpts/ 网络配置的文件
/etc/passwd 密码文件
/etc/shells 系统可用的shell
/etc/syslog.conf 系统日志的配置文件
/etc/services 网络服务的端口名称

4./media:可移动媒体的挂载点

/media/floppy  软驱
/media/cdrom 光驱
/media/cdrecorder 光盘刻录机
/media/zip 拉链驱动

5./var:包含变量数据文件。这包括线轴目录和文件、管理和日志数据,以及临时和临时文件

/var/cache  应用程序缓存数据
/var/lib 变量状态信息
/var/local /usr/local 的变量数据
/var/lock 锁定文件
/var/log 日志文件和目录
/var/opt /opt 的变量数据
/var/run 与正在运行的进程相关的数据
/var/spool 应用程序假脱机数据
/var/tmp 系统重新启动之间保留的临时文件

6./opt: 附加应用程序软件包

/opt/<package>  静态包对象
/opt/<provider> LANANA 注册的提供商名称

7./proc:内核和进程信息虚拟文件系统

/proc/#/:进程#的目录,每一个进程在proc下都有一个名为自己进程号的目录
/proc/cpuinfo:处理器信息
/proc/meminfo:存储器信息
/proc/modules:存在已加载的内核模块信息
/proc/devices:驱动

8./lib:基本共享库和内核模块

/lib/modules  可加载内核模块

ifconfig  命令

ifconfig是​linux​中用于显示或配置网络设备(​网络接口卡​)的命令,英文全称是network interfaces configuring.

ifconfig命令在liunx中通常会用来查看网卡的详细信息和修改网卡的IP地址

用法ifconfig 后面直接加网卡名称

例如:

[root@ansible ~]# ifconfig eth0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

       inet 192.168.36.135  netmask 255.255.255.0  broadcast 192.168.36.255

       inet6 fe80::5fd6:5bf:2d9c:d166  prefixlen 64  scopeid 0x20<link>

       ether 00:0c:29:7b:fa:79  txqueuelen 1000  (Ethernet)

       RX packets 117  bytes 11753 (11.4 KiB)

       RX errors 0  dropped 0  overruns 0  frame 0

       TX packets 93  bytes 12936 (12.6 KiB)

       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

修改网卡的IP地址 

用法 ifconfig 加上IP地址 netmask 子网掩码 broadcast 网关

例如:

​[root@ansible ~]# ifconfig eth1

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

       inet6 fe80::bd72:1957:1b89:7484  prefixlen 64  scopeid 0x20<link>

       ether 00:0c:29:7b:fa:83  txqueuelen 1000  (Ethernet)

       RX packets 809  bytes 50822 (49.6 KiB)

       RX errors 0  dropped 0  overruns 0  frame 0

       TX packets 50  bytes 6608 (6.4 KiB)

       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


[root@ansible ~]# ifconfig eth1 192.168.145.130 netmask 255.255.255.0 broadcast 192.168.145.1

[root@ansible ~]# ifconfig eth1

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

       inet 192.168.145.130  netmask 255.255.255.0  broadcast 192.168.145.1

       inet6 fe80::bd72:1957:1b89:7484  prefixlen 64  scopeid 0x20<link>

       ether 00:0c:29:7b:fa:83  txqueuelen 1000  (Ethernet)

       RX packets 810  bytes 51164 (49.9 KiB)

       RX errors 0  dropped 0  overruns 0  frame 0

       TX packets 58  bytes 7496 (7.3 KiB)

       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

开源协定的区别

目前开源协议种类有很多,主流的开源协议有以下六种

GPL、BSD、MIT、Mozilla、Apache和LGP

下图是六种开源协议的具体区别图片来源百度

linu的FHS结构(目录结构)_apache

六种协议的详细注释:

一、BSD

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 

但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

  1. 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
  2. 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
  3. 可以用开源代码的作者/机构名字和原来产品的名字做市场推广。 

BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。

二、Apache

Apache Licence 2.0(Apache License, Version 2.0、Apache License, Version 1.1、Apache License, Version 1.0)

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。

需要满足的条件也和BSD类似:

  1. 需要给代码的用户一份Apache Licence。
  2. 如果你修改了代码,需要再被修改的文件中说明。
  3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
  4. 如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。 

Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

三、GPL

我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。

GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。

四、LGPL

LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的软件必须采用GPL协议不同。LGPL 允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。

但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品。

五、MIT

MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。

六、MPL

MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)。

但是,相比而言MPL还有以下几个显著的不同之处:

MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个豁口。

MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。

对软件专利的态度:

MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。

对源代码的定义:

而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。”

MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。