美文网首页
Linux基础概念

Linux基础概念

作者: aslbutton | 来源:发表于2019-02-19 17:18 被阅读0次

    1.大教堂与集市:

    代表了两种不同的开发模式:绝大多数商业公司所采用的是大教堂模式,而Linux世界所采用的是集市模式。

    2.OS的接口有两类:

    GUI:Graphic User Interface
        GNome:c, gtk
        KDE: c++, qt
    CLI:Command Line Interface
        bash
        zsh
        sh
        csh
        tcsh
        ksh
    

    3.API和ABI

    API:顾名思义,是编程的接口,换句话说也就是你编写“应用程序”时候调用的函数之类的东西。对于内核来说,它的“应用程序”有两种:一种是在它之上的,用户空间的真正的应用程序,内核给它们提供的是系统调用这种接口,比如 read(2),write(2);另一种就是内核模块了,它们和内核处于同一层,内核给它们提供的是导出的内核函数,比如 kmalloc(),printk()。这些接口都是你可以在编写程序的时候直接看到的,可以直接拿来用的。

    ABI:应用程序二进制接口(ABI-Application Binary Interface)定义了一组在PowerPC系统软件上编译应用程序所需要遵循的一套规则。主要包括基本数据类型,通用寄存器的使用,参数的传递规则,以及堆栈的使用等等。ABI 是另一种形式的接口,二进制接口。除非你直接使用汇编语言,这种接口一般是不能直接拿来用的。比如,内核系统调用用哪些寄存器或者干脆用堆栈来传递参数,返回值又是通过哪个寄存器传递回去,内核里面定义的某个结构体的某个字段偏移是多少等等,这些都是二进制层面上的接口。这些接口是直接给编译好的二进制用的。换句话说,如果 ABI 保持稳定的话,你在之前版本上编译好的二进制应用程序、内核模块,完全可以无须重新编译直接在新版本上运行。

    4.常见开源协定

    BSD协议:BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
    Apache Licence 2.0(Apache-2.0):介绍略
    GPL:GPL协议的主要内容是只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。
    LGPL:略
    MIT:略
    MPL (Mozilla Public License 1.1):略
    EPL (Eclipse Public License 1.0):EPL允许Recipients任意使用、复制、分发、传播、展示、修改以及改后闭源的二次商业发布。 
    
    20180328173536914.png

    5.镜像站点

    http://mirrors.aliyun.com
    http://mirrors.163.com
    http://mirrors.sohu.com
    

    6.LINUX的终端

    物理终端,控制台:console
    虚拟终端:6个,tty
        Ctrl+Alt+F[1-6]
    图形终端:
        CentOS 6:
            Ctrl+Alt+F7
        CentOS 7:
            在哪个虚拟终端启动,即位于哪个虚拟终端;
    串行终端:ttyS
    伪终端:pty
    硬件设备也通过文件表示;
        物理终端:/dev/console
        虚拟终端:/dev/tty# [1,6]
        串行终端:/dev/ttyS#
        伪终端:/dev/pts/#
        注意:在启动设备之后,在其上关联一个用户接口程序,即可实现与用户交互;
        查看终端设备:
            ~]# tty
        查看接口程序:
            ~]# echo $SHELL
        启动GUI:
            在某一虚拟终端接口运行命令:startx
    

    7.LINUX哲学思想

        1、一切皆文件:
            把几乎所有资源统统抽象为文件形式;包括硬件设备,甚至通信接口等;
                open(), read(), write(), close(), delete(), create()
        2、  由众多功能单一的程序组成;一个程序只做一件事,并且做好;
            组合小程序完成复杂任务;
        3、尽量避免跟用户交互;
            目标:易于以编程的方式实现自动化任务;
        4、使用文本文件保存配置信息;
    

    8.文件系统

            文件系统像一个倒置树状结构;
                /: 原初起点;
    
                /dev/pts/2:
                    最左侧/: 表示根目录
                    其它的/: 表示路径分隔符
                        Linux的路径分隔符是/
                        Windows的是\
    
            文件的路径表示:
                绝对路径:从根开始表示出的路径 
                相对路径:从当前位置开始表示出的路径
    
            文件名使用法则:
                严格区分字符大小写:file1, File1, FILE1
                目录也是文件,在同一路径下,两个文件不能同名;
                支持使用除/以外的任意字符;
                最长不能超过255个字符;
    
            用户有家目录:home,
                用户的起始目录;普通用户管理文件的位置;
            工作目录:
                当前所在的目录,如果命令没有额外指定路径,则默认为当前工作目录
    
                /etc/sysconfig/network-scripts/ifcfg-eno16777736
                    basename:最右侧的文件或目录名;
                    dirname:basename左侧的路径;
                命令:
                    ~]# basename /PATH/TO/SOMEFILE
                        SOMEFILE
                    ~]# dirname /PATH/TO/SOMEFILE
                        /PATH/TO
    

    8.COMMAND

    命令的语法通用格式:
    # COMMAND OPTIONS ARGUMENTS

    COMMAND: 
        发起一命令:请求内核将某个二进制程序运行为一个进程;
            程序 --> 进程
            静态 --> 动态(有生命周期)
    
        命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;
            多数系统程序文件都存放在:/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
    
            注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件
    
            命令必须遵循特定格式规范:exe, msi, ELF(Linux)
                ~]# file /bin/ls
    
            命令分为两类:
                由shell程序的自带的命令:内置命令(builtin)
                独立的可执行程序文件,文件名即命令名:外部命令
    
    OPTIONS:
        指定命令的运行特性;
        选项有两种表现形式:
            短选项:-C, 例如-l, -d
                注意:有些命令的选项没有-;
                如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
            长选项:--word, 例如--help, --human-readable
                注意:长选项不能合并;
    
            注意:有些选项可以带参数,此称为选项参数;
    
    ARGUMENTS:
        命令的作用对象;命令对什么生效;
        注意:不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;
        例如:ls -ld /var /etc 

    相关文章

      网友评论

          本文标题:Linux基础概念

          本文链接:https://www.haomeiwen.com/subject/fyszeqtx.html