Linux 基础

Linux 基础

一.计算机组成及其功能

当今计算机采用冯·诺依曼架构,必须具备的五大基本组成部件,包括:
1.输入数据和程序的输入设备
2.记忆程序和数据的存储器
3.完成数据加工处理的运算器
4.控制程序执行的控制器
5.输出处理结果的输出设备
计算机基本组成结构图
2012062221462127

二.Linux的发行版,不同发行版之间的联系与区别

1.Linux
    严格来说Linux是指Linux内核,建立起计算机软件与硬件之间通讯的平台,提供系统服务,Linux内核最早由Linus Torvalds在1991年开始编写。

2.GNU
    GNU 是 “GNU's Not Unix” 的递归缩写, 是由理查德·斯托曼在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。GNU是一个类Unix操作系统。它是由多个应用程序、系统库、开发工具乃至游戏构成的程序集合。GNU的开发始于1984年1月,称为GNU工程。GNU的许多程序在GNU工程下发布;我们称之为GNU软件包。

3.Linux发行版
    一个完整的Linux操作系统包含Linux内核,GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,发行版就是个人,各组织及各大厂商根据各自不同的目的将Linux内核及GNU程序整合编译为一个完整的操作系统(GUN/Linux)。
Linux主流发行版有:Redhat,Debian,Slackware,Gentoo,ArchLinux等系列
    Redhat系:
    Redhat Linux 是有红帽公司开发的Linux发行版,自从自从RedHat9.0版本发布后,RedHat公司就不再开发桌面版的Linux发行套件,RedHatLinux停止了开发,而将全部力量集中在服务器版的开发上,也就是RedHat Enterprise Linux版。2004年4月30日,RedHat公司正式停止对RedHat9。0版本的支援,标志著RedHatLinux的正式完结。原本的桌面版RedHatLinux发行套件则与来自开源社区的Fedora计划合并,成为FedoraCore 发行版本。Centos是RedHat Enterprise Linux的社区版,Centos与RedHat Enterprise Linux具有相同的功能及性能。
    Debian系:
    Debian 系包括Debian和Ubunt等,Debian 首次发布于 1993 年 9 月,是由社区维护,是一个自由,稳定和功能强大的Linxu操作系统。Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于DebianGNU/Linux
    Slackware系:
    Slackware Linux是由Patrick Volkerding开发的GNU/Linux发行版,与很多其他的发行版不同,它坚持KISS(Keep It Simple Stupid)的原则。SUSE Linux是以Slackware Linux为基础衍生而来,现在的 SUSE Linux 由 Novell公司的openSUSE 项目所维护,openSUSE 也算是Linux操作系统发行版之一。
    Gentoo系:
    Gentoo是一个基于Linux的自由操作系统,它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点。 Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式解决方案或者别的东西
    ArchLinux:
    Arch Linux(或称Arch)是一种以轻量简洁为设计理念的Linux发行版。其开发团队秉承简洁、优雅、正确和代码最小化的设计宗旨

三.Linux的哲学思想

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

四.Linux系统命令的使用格式

1.命令的语法通用格式:
    #COMMAND OPTIONS ARGUMENTS
    COMMAND:命令
    OPENTIONS:指定命令的运行特性
        选项有两种表现形式:
            短选项:如:-l -d; 可合并
            长选项:--word:不可合并
    ARGUMENTS:
            命令的作用对象:命令对什么生效

2.常用命令介绍:

ifconfig
    功能:配置网络接口
    使用格式:
    ifconfig [-v] [-a] [-s] [interface]
    ifconfig [-v] interface [aftype] options | address ...
    常用选项:
    -a: 显示所有网络端口信息
    -s: 显示简要信息
    up:启用网卡
    down:停用网卡
    示例:
    [root@localhost ~]# ifconfig -a 
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.121  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 fe80::20c:29ff:fe22:ebf7  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:22:eb:f7  txqueuelen 1000  (Ethernet)
            RX packets 746106  bytes 951171006 (907.1 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 135554  bytes 11006185 (10.4 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 0  (Local Loopback)
            RX packets 26  bytes 2056 (2.0 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 26  bytes 2056 (2.0 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 00:00:00:00:00:00  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    virbr0-nic: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether 52:54:00:e9:15:76  txqueuelen 500  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

echo
    功能:回显文本
    命令格式:
    echo [SHORT-OPTION]... [STRING]...
    echo LONG-OPTION
    常用选项:
    -n : 回显之后不换行
    -e : 生效转义符
    转义符:
        \n 换行
        \t 制表符
    [root@localhost ~]# echo -e "hello\nwhat your name?"
    hello
    what your name?
    [root@localhost ~]# echo -e "hello\tworld"
    hello    world
    单引号:强引用,变量引用不执行替换
    [root@localhost ~]# echo '$SHELL'
    $SHELL
    双引号:弱引用,变量引用会被替换
    [root@localhost ~]# echo "$SHELL"
    /bin/bash

tty
    功能:打印连接到标准输入的终端的文件名
    命令格式:
    tty [OPTION]
    [root@localhost ~]# tty 
    /dev/pts/1

startx
    功能:启用X会话
    命令格式
    startx [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ]

export
    功能:设置或显示环境变量 
    命令格式:
        export [-fn] [name[=value]
    export -p
    参数:
    -f  代表[变量名称]中为函数名称。 
    -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。 
    -p  列出所有的shell赋予程序的环境变量。
    [root@localhost ~]# export -p
    declare -x HISTCONTROL="ignoredups"
    declare -x HISTSIZE="1000"
    declare -x HOME="/root"
    declare -x HOSTNAME="localhost.localdomain"
    declare -x LANG="en_US.UTF-8"
    declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
    declare -x LOGNAME="root"

pwd
    功能:打印工作目录
    命令格式:
    pwd [OPTION]
    [root@localhost zach]# pwd
    /home/zach

history
    功能:用于显示历史记录和执行过的指令命令
    命令格式:
    History [OPTION]
     -c clear the history list by deleting all of the entries
     -d offset delete the history entry at offset OFFSET.
     history -d 61
     -a append history lines from this session to the history file
     -n read all history lines not already read from the history file
     -r read the history file and append the contents to the history list(内存中)
     -w write the current history to the history file and append them to the history list 
     -p perform history expansion on each ARG and display the result without storing it in the history list
     -s append the ARGs to the history list as a single entry
     history # ;显示最近的#条命令:

    调用命令历史列表中的命令: 
    !# :再次执行历史命令列表中的第#条命令;
    !!:执行上一次命令
    !STRING :再一次执行命令历史列表中最近一个以STRING开头的命令

    调用上一条命令的最后一个参数
    快捷键:Esc .
    字字符串:!$ 

    定制history的功能,可通过环境变量实
    HISTSIZE : shell进程可保留的命令历史条数
    HISTFILE : 持久保存命令历史的文件
    [root@localhost ~]# echo $HISTFILE
    /root/.bash_history 用户家目录下.bash_history,保存历史命令
    HISTFILESIZE: 命令历史文件中能保存的命令大小
    HISTCONTROL:控制命令历史记录的方式
        ignorespace:忽略以空白字符开头的命令
        ignoredups:忽略重复的命令;
        ignoreboth:以上两者同时生

which
    功能:显示命令的全路径
    命令格式:
    which [options] 
    参数:
    --skip-alias 跳过显示命令别名

whereis
    功能:定位命令二进制文件,源文件和手册页文件
    命令格式:
    whereis [options] name.
    参数:
    -b   Search only for binaries.
    -m   Search only for manuals.
    -s   Search only for sources

who
    功能:显示登录用户
    命令格式:
    who [OPTION]
    参数
    -b, --boot
     time of last system boot 最近一次启动时间
    -r, --runlevel
     print current runlevel 运行级别

w
    Show who is logged on and what they are doing 
        增强版的who命令

shutdown
    功能:关闭电源或重新启动机器
    命令格式:
    shutdown [OPTIONS...] [TIME] [WALL...]
    [OPTIONS...]    
            -h:halt
            -r:reboot
            -c:cancel
    [TIME]
            hh:mm
            now
            +m
    [root@localhost zach]# shutdown -h +50
    Shutdown scheduled for Sat 2018-05-12 16:13:30 CST, use 'shutdown -c' to cancel.
    [root@localhost zach]# shutdown -c

    Broadcast message from root@localhost.localdomain (Sat 2018-05-12 15:23:48 CST):

    The system shutdown has been cancelled at Sat 2018-05-12 15:24:48 CST!

poweroff
    功能:关闭系统
    命令格式:
    poweroff [OPTIONS...]
    选项:
         --help      Show this help
         --halt      Halt the machine
      -p --poweroff  Switch off the machine
         --reboot    Reboot the machine
      -f --force      Force immediate halt/power-off/reboot
      -w --wtmp-only Don't halt/power-off/reboot, just write wtmp record
      -d --no-wtmp   Don't write wtmp record
         --no-wall   Don't send wall message before halt/power-off/reboot
reboot
    功能:重启系统
    命令格式:
    reboot [OPTIONS...] [ARG]
    选项:
         --help      Show this help
         --halt      Halt the machine
      -p --poweroff  Switch off the machine
         --reboot    Reboot the machine
      -f --force     Force immediate halt/power-off/reboot
      -w --wtmp-only Don't halt/power-off/reboot, just write wtmp record
      -d --no-wtmp   Don't write wtmp record
         --no-wall   Don't send wall message before halt/power-off/reboot
hwclock
    功能:显示或设定硬件时钟
    命令格式:
    hwclock [function] [option...]
    常用选项:
    -s, --hctosys:以硬件时钟为准,把系统时钟调整为与硬件时钟一样
    -w, --systohc:以系统时钟为准,把硬件时钟调整为与系统时钟一样

date
    功能:显示系统日期时间
    命令格式:
        date [OPTION]...[+FORMAT]
    FORMAT:格式符
            %F : 显示年月日
            [root@localhost ~]# date +%F
            2018-05-10

            %T :显示时间
            [root@localhost ~]# date +%T
            21:07:52

            %Y : 显示年份
            [root@localhost ~]# date +%Y
            2018

             %m : 显示月份
            [root@localhost ~]# date +%m
            05

            %d :显示日
            [root@localhost ~]# date +%d
            10

            %H :显示小时            
            [root@localhost ~]# date +%H
            21

            %M :显示分钟
            [root@localhost ~]# date +%M
            10

            %S :显示秒
            [root@localhost ~]# date +%S
            22

            %s :从1970年(unix元年)到执行命令的那一刻经过的秒数。

    设定时间:date [MMDDhhmm[[CC]YY][.yy]
                    月日时分  年     秒
    [root@localhost ~]#date 051020552018.50
    Thu May 10 20:55:50 CST 2018

五.Linux系统上获取命令的帮助信息

1.内部命令:
    help COMMAND
2.外部命令:
    (1)命令自带简要格式的使用帮助帮助
            ~]#COMMAND --help 
    (2)使用手册:manual 
        位置:/usr/share/man 
        ~]#man COMMAND 
        使用手册:压缩格式的文件,有章节之分
        /usr/share/man
            man1,man2,....
            1:用户命令
            2:系统调用
            3:C库调用
            4:设备文件及特殊文件
            5:文件格式:(配置文件格式)
            6:游戏使用帮助
            7:杂项
            8:管理工具及守护进程
    ~]#man [1-8] COMMAND
    ~]#whatis COMMAND 可查看哪些章节下有帮助手册        
        注意:其执行过程是查询数据库进行的
    手动更新数据库
    ~]#makewhatis    
    man 命令打开手册以后操作方法
        翻屏
            空格:向下翻
            b键:向上翻
            Ctrl+d:向下翻半屏
            Ctrl+u:向上翻半屏
            回车键:向文件尾部翻一行
            k:向文件首部翻一行
            G:跳转至最后一行
            1G:跳转至文件首部
        文本搜索:
            /keyword:向下
            ?keyword:向上
            n:与查找方向相同方向跳
            N:与查找方向相反方向跳
    (3)info COMMAND 
        获取命令的在线信息
    (4)很多应用程序自带帮助文档:/usr/share/doc/APP-VERSION
        README:程序相关的信息
        INSTALL:安装帮助
        CHANGES:版本迭代时的改动信息                
    (5)主流发行版官方文档                    
    (6)程序官方的文档
    (7)google

六.Linux发行版的基础目录名称命名法则及功用规定

1.命名规则:
    (1)严格区分大小写
    (2)目录也是文件,在同一路径下,两个文件不能同名
    (3)支持使用出/以外的任意字符
    (4)最长不能超过255个字符

2.Linux 发行版基础目录
    /bin:供所有用户使用的基本命令程序文件
    /sbin: 供系统管理使用的工具程序
    /boot: 引导加载器必须用到的各静态文件,kernel,initramfs(initrd),grub等
    /dev/: 存储特殊文件或设备文件
        设备:
        字符设备:线性设备
        块设备:随机设备
    /etc:系统程序的配置文件目录,只能为静态
    /home:普通用户家目录集中目录
    /root :管理员的家目录;可选;
    /lib: 为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块
        libc.so.*:动态链接的C库
        ld*:运行时连接器/加载器
        moduls/:用户存储内核模块的目录
    /lib64 :64位系统特有的存放64位共享库的目录
    /media :便携式设备的挂载点,cdrom,
    /mnt : 其他文件系统的临时挂载点
    /opt : 附加应用程序的安装位置:可选目录;
    /srv : 当前主机为服务提供的数据;
    /tmp : 为那些会产生临时文件的程序提供用于存储临时文件的目录,可供所有用户写入操作
    /usr :全局共享的只读数据路径
        bin
        lib
        sbin
        lib64
        include :C 程序头文件
        share : 命令手册业和自带文档等架构特有的文件存放位置
        local :让系统管理员安装本地应用程序,也用于安装第三方应用程序
        src :程序源码文件的存放位置
        x11R6:X-Window程序存放位置
    /var : 存储常发生变化的数据目录
        cache    Application cache data
        lib        Variable state information
        local    Variable data for /usr/local
        lock    Lock files
        log        Log files and directories
        opt        Variable data for /opt
        run        Data relevant to running processes
        spool    Application spool data
        tmp        Temporary files preserved between system reboots
    /proc :虚拟文件系统,内核及进程存储其相关信息,它们多为内核参数
    /sys :sysfs虚拟文件系统提供一种比/proc更为理想的访问内核数据的途径,主要作用为管理linux设备提供统一模型的接口.
        /sys/devices  这是内核对系统中所有设备的分层次表达模型,也是 /sys 文件系统管理设备的最重要的目录结构,下文会对它的内部结构作进一步分析;
        /sys/dev  这个目录下维护一个按字符设备和块设备的主次号码(major:minor)链接到真实的设备(/sys/devices下)的符号链接文件,它是在内核 2.6.26 首次引入;
        /sys/bus  这是内核设备按总线类型分层放置的目录结构, devices 中的所有设备都是连接于某种总线之下,在这里的每一种具体总线之下可以找到每一个具体设备的符号链接,它也是构成 Linux 统一设备模型的一部分;
        /sys/class  这是按照设备功能分类的设备模型,如系统所有输入设备都会出现在 /sys/class/input 之下,而不论它们是以何种总线连接到系统。它也是构成 Linux 统一设备模型的一部分;
        /sys/block    这里是系统中当前所有的块设备所在,按照功能来说放置在 /sys/class 之下会更合适,但只是由于历史遗留因素而一直存在于 /sys/block, 但从 2.6.22 开始就已标记为过时,只有在打开了 CONFIG_SYSFS_DEPRECATED 配置下编译才会有这个目录的存在,并且在 2.6.26 内核中已正式移到 /sys/class/block, 旧的接口 /sys/block 为了向后兼容保留存在,但其中的内容已经变为指向它们在 /sys/devices/ 中真实设备的符号链接文件;
        /sys/firmware  这里是系统加载固件机制的对用户空间的接口,关于固件有专用于固件加载的一套API,在附录 LDD3 一书中有关于内核支持固件加载机制的更详细的介绍;
        /sys/fs  这里按照设计是用于描述系统中所有文件系统,包括文件系统本身和按文件系统分类存放的已挂载点,但目前只有 fuse,gfs2 等少数文件系统支持 sysfs 接口,一些传统的虚拟文件系统(VFS)层次控制参数仍然在 sysctl (/proc/sys/fs) 接口中中;
        /sys/kernel  这里是内核所有可调整参数的位置,目前只有 uevent_helper, kexec_loaded, mm, 和新式的 slab 分配器等几项较新的设计在使用它,其它内核可调整参数仍然位于 sysctl (/proc/sys/kernel) 接口中 ;
        /sys/module  这里有系统中所有模块的信息,不论这些模块是以内联(inlined)方式编译到内核映像文件(vmlinuz)中还是编译为外部模块(ko文件),都可能会出现在 /sys/module 中:
        /sys/power  这里是系统中电源选项,这个目录下有几个属性文件可以用于控制整个机器的电源状态,如可以向其中写入控制命令让机器关机、重启等。
        /sys/slab  (对应 2.6.23 内核,在 2.6.24 以后移至 /sys/kernel/slab)    从2.6.23 开始可以选择 SLAB 内存分配器的实现,并且新的 SLUB(Unqueued Slab Allocator)被设置为缺省值;如果编译了此选项,在 /sys 下就会出现 /sys/slab ,里面有每一个 kmem_cache 结构体的可调整参数。对应于旧的 SLAB 内存分配器下的 /proc/slabinfo 动态调整接口,新式的 /sys/kernel/slab/<slab_name> 接口中的各项信息和可调整项显得更为清晰。               

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98313

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

评论列表(1条)

  • 马哥教育
    马哥教育 2018-05-16 20:38

    命令可以用专门的命令行 格式写。

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班