linux基础

Posted 农夫运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础相关的知识,希望对你有一定的参考价值。


VMware Workstation的使用:

    现代计算机设备的组成部分:
        运算器、控制器、存储器、输入设备、输出设备
            CPU
            bus:总线
            memory: 编址存储设备
    
            read ahead

        IO: 与外部部件交互
            磁盘:
            网卡:

    虚拟机:虚拟计算机


    CPU:运算器、控制器
        CPU指令,指令集;
            特权指令:OS运行特权指令;
            普通指令:
        程序员

    OS: Operating System
        软件程序
        通用目的
            硬件驱动
            进程管理
            内存管理
            网络管理
            安全管理

        System Call
            Syscall:系统调用

        编程层次:
            硬件规格:hardware specifiacation
            系统调用:
            库调用:library call

    UI:
        GUI: Graphic User Interface
        CLI: Command Line Interface

    ABI: Application Binary Interface
    API:Application Programming Interface

    CPU架构类型:
        x86
        x64
        arm

        m68000, m68k
        power
        powerpc
        ultrasparc
        alpha
        安腾

    Windows
    Linux:
        Linus --> Linux

        GNU/Linux

    Unix:
        System (Bell Lab)
            AIX (IBM)
            Solaris (SUN)
            HP-UX (HP)
        BSD: (BSRG)Berkeley System Distribution
            NetBSD
            OpenBSD
            FreeBSD

    MIT:Richard Stallman
        GNU: GNU is Not Unix;
            GPL:General Public License

    
计算机的基础知识:
    CPU, memory, I/O

    程序运行模式:
        用户空间:user space, us
        内核空间:system space

    POS: Portable Operating System
        POSIX

        API: 编程接口;

    运行程序格式:
        Windows: EXE, dll(dynamic link library)
        Linux: ELF, so(shared object)

        程序:指令+数据
            指令:只读
            数据:读写

        程序:算法+数据结构

        库调用,系统调用:允许被调用的程序;

        malloc(), free()

        编程语言:
            汇编语言:微码编程
                系统中某些与硬件相关的特有代码、驱动程序开发;
            高级语言C, C++:
                系统级应用、驱动程序
            高级应用java, python, php
                应用程序

            unix-like

    Linux的发行版:
        slackware:
            suse
                opensuse
        debian:
            ubuntu
                mint
        redhat:
            rhel: redhat enterprise linux
                每18个月发行一个新版本
            CentOS:兼容rhel的格式
            fedora:每6个月发行一个新版本

        ArchLinux
        Gentoo
        LFS: Linux From scratch

        android: kernel+busybox+java虚拟机

    GNU: GPLv2, GPLv3, LGPL(lesser)
        Apache: apache
        BSD: bsd

        A: 1000, GPL,
        B: 20000, 20

    问题1:CentOS和Linux是什么关系?CentOS和RHEL是什么关系?
    问题2:各种开源协议的具体细节?
        GPL, LGPL, Apache, BSD

    程序包管理器:
        rpm:
            RHEL, Fedora, S.u.S.E, CentOS
        dpt:
            Debian, Ubuntu

    自由软件:
        自由使用;自由学习和修改;自由分发;自由创建衍生版;

    Linux的哲学思想:
        1、一切皆文件;
            把几乎所有资源,包括硬件设备都组织为文件格式;
        2、由众多单一目的小程序组成;一个程序只实现一个功能,而且要做好;
            组合小程序完成复杂任务;
        3、尽量避免跟用户交互;
            目标:实现脚本编程,以自动完成某些功能;
        4、使用纯文本文件保存配置信息;
            目标:一款使用的文本编程器即能完成系统配置工作;

    如何获取CentOS的发行版:
        http://mirrors.aliyun.com
        http://mirrors.sohu.com
        http://mirrors.163.com

    登录:
        root/mageedu

        # startx &

    终端:
        用户与主机交互,必然用到的设备;

        物理终端:直接接入本机的显示器和键盘设备;/dev/console

        虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,CentOS 6默认启动6个虚拟终端
            Ctrl+Alt+F#: [1,6]
            图形终端:附加在物理终端之上的以软件方式虚拟实现的终端,但额外会提供桌面环境;

            设备文件路径:/dev/tty#
        模拟终端:
            图形界面下打开的命令行接口,基于ssh协议或telnet协议等远程打开的界面

            设备文件:/dev/pts/#    [0,oo)

        查看当前的终端设备:tty

    交互式接口:启动终端后,在终端设备附加一个交互式应用程序
        GUI:
            X protocol, window manager, desktop

            Desktop:
                GNOME (C, gtk)
                KDE   (C++, qt)
                XFCE  (轻量级桌面)
        CLI:
            shell程序:
                sh (bourn)
                csh
                tcsh
                ksh (korn)
                bash (bourn again shell), GPL
                zsh

            显示当前使用的shell:
                # echo ${SHELL}

            显示当前系统使用的所有shell:
                # cat /etc/shells

            命令提示符:prompt
                [root@localhost ~]#
                    [root@localhost ~]:PS1
                    prompt:
                        管理员:#
                        普通用户:$

    命令:
        输入命令,回车:
            提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来;
                表现为一个或多个进程;

            在shell中可执行的命令有两类:
                内建命令:由shell自带的,而且通过某命令形式提供;
                外部命令:在当前系统的某文件系统路径下有对应的可执行程序文件;
                    which,whereis

                区别内部或外部命令:
                    # type COMMAND

        运行命令:
            命令格式:
                COMMAND [OPTIONS...] [ARGUMENTS...]
                    选项:用于启用或关闭命令的某个或某些功能;
                        短选项:-c, 例如:-l, -h
                            多个短选项可命令使用,例如-l -h, 可写作-lh;
                        长选项:--word,例如:--long, --human-readable
                    参数:命令的作用对象
                        向命令提供数据;

                注意:
                    1、多选项,以及多参数和命令之间都应该使用空白字符分隔
                    2、取消命令执行:Ctrl+c

        文件系统:
            C:Program filesoffice11wordword.exe

            /etc/sysconfig/network-scripts/ifcfg-eth0

            文件有两类数据:
                元数据:metadata
                数据:data

            1、文件名严格区分字符大小写;file1, File1, FILE1是不同的文件;
            2、文件名可使用除/以外的任意字符,不建议使用特殊字符;
                /: 根目录,路径分隔符;
            3、文件名长度最长不能超过255个字符;
            4、所以.开头的文件,均为隐藏文件;

            路径:
                绝对路径:从根目录起始的路径;
                相对路径:对当前位置起始的路径;
                    当前位置的表示方式:
                        (1) ./: ./sysconfig/network-scripts
                        (2) 省略上述符号: sysconfig/network-scripts

                        ..:表示当前目录的上一级目录

                当前目录:current directory, 也称作working directory;
                    pwd: printing working directory

            LSB: Linux Standard Base

    命令总结:ls, cd, type, tty, cat, which, whereis, pwd, echo

    命令:
        (1) 文件系统相关:
            目录管理
            文件管理
            文件查看
            文件编辑
        (2) 系统管理相关:

Linux命令帮助的获取

    外部命令:都有一个可执行程序,位于文件系统某目录下;
        which, whereis

        shell程序搜寻可执行程序文件的路径定义在PATH环境变量中;
            # echo $PATH

            注意:自左至右

    格式:COMMAND [OPTIONS...] [ARGUMENTS...]

    内部命令:
        # help COMMAND
    外部命令:
        (1) # COMMAND --help
            # COMMAND -h
        (2) 使用手册(manual)
            # man COMMAND
        (3) 信息页
            # info COMMAND
        (4) 程序自身的帮助文档
            README
            INSTALL
            ChangeLog
        (5) 程序官方文档
            官方站点:Documentation
        (6) 发行版的官方文档
        (7) Google

    内部命令帮助:
        # help COMMAND

            hash命令:
                shell搜寻到的外部命令的路径结果会缓存至kv(key-value)存储中;

            history命令:
                作用是什么?相关的环境变量是什么?有用的选项?

                管理命令历史;
                    登录shell时,会读取命令历史文件中记录下的命令:~/.bash_history
                    登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中;

                    history:
                        -a: 追加本次会话新执行的命令历史列表至历史文件中;
                        -d: 删除历史中指定的命令;
                        -c: 清空命令历史;

                快捷操作:
                    !#: 调用历史中第#条命令;
                    !string:调用历史中最近一个以string开头的命令;
                    !!: 上一条命令

    外部命令帮助获取:
        (2) man COMMAND
            手册页:/usr/share/man
                man1 ... man8
                    man1: 用户命令
                    man2: 系统调用
                    man3: C库调用
                    man4: 设备文件及特殊文件
                    man5: 配置文件格式
                    man6: 游戏
                    man7: 杂项
                    man8: 管理类的命令

            注意:有些关键在不止一个章节中存在帮助手册;
                要查看指定章节中的手册:man # COMMAND

            man命令的配置文件:/etc/man.config
                MANPATH /PATH/TO/SOMEWHERE: 指明新的手册文件搜索位置

                # man -M /PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示之;

            帮助手册中的段落说明:
                NAME
                SYNOPSIS
                DESCRIPTION
                OPTIONS
                EXAMPLES
                AUTHOR
                REPORTING BUGS
                SEE ALSO

            SYNOPSIS:
                []:可选内容
                <>: 必选内容
                a|b:二选一
                ...: 同一内容可出现多次

            man命令的操作方法:
                Space, ^V, ^f, ^F: 向文件尾翻屏;
                b, ^B: 向文件首部翻屏;
                d, ^D: 向文件尾部翻半屏;
                u, ^U: 向文件首部翻半屏;
                RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行;
                y or ^Y or ^P or k or ^K:向文件首部翻一行;
                q: 退出;

                #:跳转至第#行;
                1G: 回到文件首部
                G:翻至文件尾部

            文本搜索:
                /KEYWORD:
                    以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;
                        n: 下一个
                        N:上一个
                ?KEYWORD:
                    以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
                        n: 跟搜索命令同方向,下一个
                        N:跟搜索命令反方向,上一个

            练习:date命令
                显示今天为周几?
                设定当前系统时间?
                显示今天的日期,形如:08/15/15?
                显示当前的时间,形如: 16:01:21?

        (3) info
            info COMMAND

        (4) 程序自身的帮助文档
            /usr/share/doc/COMMAND-VERSION

        (5) 程序官方文档

        (6) 发行版的官方文档
            http://www.redhat.com/docs

        (7) Google

        (8) slideshare
            http://www.slideshare.net/

基础命令:
    date:
        date [OPTION]... [+FORMAT]:显示
            FORMAT: 格式符号
                %D
                %F
                %T
           date [MMDDhhmm[[CC]YY][.ss]]:设置
               MM: 月分
               DD:几号
               hh: 小时
               mm: 分钟
               YY: 两位年份
               CCYY: 四位年份
               .ss: 秒钟

        Linux的两种时钟:
            系统时钟:由Linux内核通过CPU的工作频率进行的计时;
            硬件时钟:

            hwclock: 显示硬件时钟
                -s, --hctosys
                -w, --systohc

            cal:日历

    目录相关的命令:
        当前目录或工作目录
        主目录,家目录:HOME
            root: /root
            普通用户:/home/USERNAME
                /home/tom

            ~:用户的主目录

        cd:
            cd 或 cd ~: 回当前用户的主目录
            cd ~USERNAME: 切换至指定用户的主目录
            cd -: 在上一个目录和当前目录之间来回切换

            .
            ..

            相关的环境变量:
                PWD:保存了当前目录路径;
                OLDPWD:上一次所在目录路径;

        pwd: 显示当前目录

        ls: list
            显示指定路径下的文件列表;

            ls [OPTION]... [DIR]...
                -a, --all: 显示所有文件,包括隐藏文件;
                -l: 长格式
                    -rw-r--r-- 1 root root 44800 Aug 14 14:32 install.log
                        -rw-r--r--:
                            最左侧的第一位:文件类型
                                -, d, l, b, c, p, s
                            后面的9位:访问权限,perm
                        数字:文件被硬链接的次数;
                        左root: 文件的owner
                        右root: 文件的group
                        44800:文件的size
                        Aug 14 14:32 : 文件的最近一次被修改的时间
                        install.log: 文件名
                -h, --human-readable:单位换算
                -d: 显示目录自身的相关属性;通常要与-l一起使用;
                -r, --reverse: 逆序显示
                -R, --recursive: 递归



        stat /PATH/TO/SOMEFILE:获取指定文件的元数据

        文件查看命令:cat, tac
            cat [OPTION]... [FILE]...
                -E: 显示行结束符$
                -n: 对显示出的每一行进行编号

        文件内容类型查看命令:file
            file /PATH/TO/SOMEWHERE

        回显命令:echo
            -n: 禁止自动添加换行符号;
            -e: 允许使用转义符;
                 : 换行
                 : 制表符

            echo "$VAR_NAME": 变量会替换,双引号表弱引用
            echo '$VAR_NAME': 变量不会替换,强引用

        which:显示命令对应的程序文件路径
            which [OPTION] COMMAND
                --skip-alias:禁止显示别名

        whatis:
            使用mkwhatis命令可将当前系统上所有的帮助手册及与之对应的关键字创建为一个数据库;

    系统管理类命令:
        关机:
            halt, poweroff, shutdown, init 0
        重启:
            reboot, shutdown, init 6
        跟用户登录相关:
            who, whoami, w


Linux的文件系统:
    根文件系统(rootfs):
        root filesystem

    LSB, FHS: (FileSystem Heirache Standard)
        /etc, /usr, /var, /root, /home, /dev

        /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录;
        /bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序;
        /sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序;
        /lib:基本共享库文件,以及内核模块文件(/lib/modules);
        /lib64:专用于x86_64系统上的辅助共享库文件存放位置;
        /etc:配置文件目录(纯文本文件);
        /home/USERNAME:普通用户家目录;
        /root:管理员的家目录;
        /media:便携式移动设备挂载点;
            cdrom
            usb
        /mnt:临时文件系统挂载点;
        /dev:设备文件及特殊文件存储位置;
            b: block device,随机访问
            c: character device,线性访问
        /opt:第三方应用程序的安装位置;
        /srv:系统上运行的服务用到的数据;
        /tmp:临时文件存储位置;
        /usr: universal shared, read-only data;
            bin: 保证系统拥有完整功能而提供的应用程序;
            sbin:
            lib:
            lib64:
            include: C程序的头文件(header files);
            share:结构化独立的数据,例如doc, man等;
            local:第三方应用程序的安装位置;
                bin, sbin, lib, lib64, etc, share

        /var: variable data files
            cache: 应用程序缓存数据目录;
            lib: 应用程序状态信息数据;
            local:专用于为/usr/local下的应用程序存储可变数据;
            lock: 锁文件
            log: 日志目录及文件;
            opt: 专用于为/opt下的应用程序存储可变数据;
            run: 运行中的进程相关的数据;通常用于存储进程的pid文件;
            spool: 应用程序数据池;
            tmp: 保存系统两次重启之间产生的临时数据;

        /proc: 用于输出内核与进程信息相关的虚拟文件系统;
        /sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统;
        /selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置;

    Linux上的应用程序的组成部分:
        二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
        库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
        配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
        帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

    Linux下的文件类型:
        - (f):普通文件;
        d: 目录文件;
        b: 块设备;
        c: 字符设备;
        l: 符号链接文件;
        p: 管道文件;
        s: 套接字文件;socket;


系统管理类命令:
        关机:
            halt, poweroff, shutdown, init 0
        重启:
            reboot, shutdown, init 6
        跟用户登录相关:
            who, whoami, w

    关机或重启:
        halt, poweroff
        reboot

            -f: 强制,不调用shutdown
            -p: 切断电源

    shutdown:
        shutdown [OPTION]...  TIME [MESSAGE]

            -r: reboot
            -h: halt

            -c:cancel

            TIME:
                now: 立刻
                +m: 相对时间表示法,从命令提交开始多久之后;例如 +3;
                hh:mm: 绝对时间表示,指明具体时间;

    用户登录信息查看命令:
        whoami: 显示当前登录有效用户;
        who: 系统当前所有的登录会话;
        w: 系统当前所有的登录会话及所做的操作;

linux基础(0)

linux基础(0)


关注“农夫运维” 一起成长!

“我们进步,因为我们分享!”

“分享是一种精神,感恩是一种品德。” 


linux基础(0)
linux基础(0)


以上是关于linux基础的主要内容,如果未能解决你的问题,请参考以下文章

编程基础 linux基础入门--linux为何物?

linux具体要学点啥,基础要学啥?

linux入门基础——linux用户基础

Linux基础篇--linux基础和帮助用法

Linux基础(03)常用基础指令和操作

Linux操作基础