; Linux基础知识—文件系统和常用命令解读 | Linux运维部落

Linux基础知识—文件系统和常用命令解读

一、    计算机组成

        计算机组成(Computer Composition)指的是计算机系统结构(Computer Architecture)的逻辑实现,包括机器机内的数据流和控制流的组成及逻辑设计等。其任务是在指令集系统结构确定分配给硬件系统的功能和概念结构之后,研究各组成部分的内部结构及相互联系,以实现机器指令集的各种功能和特性。是改进后的冯.诺依曼计算机系统结构的典型实现。*

           根据其功能的划分,计算机组成主要分为五部分:

1、  控制器(Control):整个计算机的中枢神经,其重要作用是对程序中规定的控制流信息进行解析,根据其要求进行控制,调度程序、数据、地址,协调内存与外设的访问等

2、  运算器(Datapath):运算器的作用就是对数据进行各种算术运算和逻辑运算

3、  存储器(Memory):主要用于存储数据、各种信号及命令等信息,并根据控制器的要求提供相应的信息

4、  输入设备(Input system):主要用于数据、信号、程序、命令等信息的输入,

5、  输出设备(Output system):主要用于将计算机的中间结果或者最终结果,及运算过程中的数据符号、文字或者控制信号等信息输出出来

             其各个部分之间的作用关系可用下图表示:

            QQ圖片20160913171739.jpg

             这五部分在我们实际的应用中的具体设备体现如下:

        CPU=运算器+控制器(Inter、AMD)
    
        存储器=内存(临时存储)+硬盘
    
        Input设备=键盘、鼠标、扫描仪等
    
        Output设备=显示器、打印机等

    二、    Linux各发行版本

            如今流行的Linux最早是由Linus Benedict Torvalds在1991年开始编写,也称GNU/Linux。因为Linux完全开放源代码,吸引众多杰出的程序员和开发者加入到GNU组织中来,对Linux内核不断的进行修改、完善,便造就了今天GNU/Linux遍地开花、百花齐放的壮观景象。Linux的发行版本根据其运作模式可以分为两大类:一类是以商业公司维护的发行版本,比较著名的有Redhat、Novell等;一类是以社区组织维护的发行版本,比较著名的有Debian、Centos等 GNU/Linux有诸多发行分支_

    下面我们介绍几个流行的分支

    1. Redhat系列

            Redhat Linux是1994年由一个叫Marc Ewing的人发布,1995年被ACC公司收购合并为红帽软件公司,该公司是一家提供开源解决方案的供应商,为诸多重要的IT技术(操作系统、存储、中间件、虚拟化、云计算)提供关键任务的软件与服务,同时也为全球客户提供技术支持、培训和咨询服务,并收取相应的费用。 2002年红帽公司推出了Linux高级服务器版,也就是后来的RHEL,DELL、IBM、HP、Oracle公司宣布支持该平台;2007年3月,红帽公司发布了最为经典的Redhat Enterprise Linux5版本,后续相继推出RHEL5.5、……RHEL6,直至目前最新的RHEL7.2版本,它每五年左右更新一次,在系统的稳定性,前瞻性和安全性上有着极大的优势。通过购买其序列号获得红帽官方的技术支持服务。

            Fedora Linux是基于Redhat Linux发行的一个针对个人的桌面化Linux版本,是由Fedora Project社区开发、红帽公司赞助;最早其目标是为Redhat Linux制作并发布第三方的软件包,Redhat Linux停止发行后,便由Fedora社区集成到Red Hat赞助的Fedora Project,成为Redhat新技术的试验田;Redhat会将一些新技术写进Fedora,被认为可用的技术最终会整合到Redhat Enterprise Linux版本中去;Fedora大约每6个月发布新版本,目前最新的版本是Fedora23

            Centos(Community Enterprise Operating System:社区企业操作系统),是根据Redhat Enterprise Linux开放的源代码编译而成的,在此基础上修正了不少已知BUG,完全免费。 RHEL有两种发行方式:1、以二进制的方式发行;2、以源代码的方式发行;Centos就是通过重新编译其源代码而生成的开源操作系统,所以,CentOS 可以得到 RHEL 的所有功能,甚至是更好的软件,只要不使用Redhat商标,其就是合法的。CentOS并不向用户提供商业支持,也就不用负上任何商业责任。CentOS大概每六个月会更新一次,每两年发行一次新版本。2014年CentOS社区被红帽公司收购,CentOS继续免费。

    2. Debian系列

            Debian是由GPL和其他自由软件许可协议授权的自由软件组成的操作系统,由Debian项目(Debian Project)组织维护。Debian项目是一个独立的、分散的组织,由3000人志愿者组成,接受世界多个非盈利组织的资金支持,Software in the Public Interest提供支持并持有商标作为保护机构。 Debian是一个大的系统组织框架,在这个框架下有多种不同操作系统核心的分支计划,主要为:

    •      采用Linux核心的Debian GNU/Linux系统

    •      采用GNU Hurd核心的Debian GNU/Hurd系统

    •      采用FreeBSD核心的Debian GNU/kFreeBSD系统

    •      采用NetBSD核心的Debian GNU/NetBSD系统。

    •      采用OpenSolaris核心构建而成的Nexenta OS系统。

            在这些Debian系统中,以采用Linux核心的Debian GNU/Linux最为著名。众多的Linux发行版本,例如:Ubuntn、Knoppix

            Ubuntu是基于Debian发行版和GNOME桌面环境,Ubuntu建基于Debian的不稳定分支,更接近Debian的开发理念,它主要使用自由、开源的软件。与Debian的不同在于它每6个月会发布一个新版本(即每年的四月与十月),每2年发布一个LTS长期支持版本。目前Ubuntu共有五个长期支持版本(Long Term Support,LTS):Ubuntu 6.06、8.04、10.04、12.04与14.04。Ubuntu 12.04和14.04桌面版与服务器版都有5年支持周期。而之前的长期支持版本为桌面版3年,服务器版5年。Ubuntu所有系统相关的任务均需使用Sudo指令是它的一大特色,这种方式比传统的以系统管理员账号进行管理工作的方式更为安全,此为Linux、Unix系统的基本思维之一。Ubuntu计划强调易用性和国际化,在在发布5.04版时,已经把万国码(UTF-8 Unicode)作为系统默认编码,用以应对各国各地区不同的语言文字,试图给用户提供一个无乱码的交流平台。是Linux初学者最佳选择之一。其衍生版本不计其数。

            KNOPPIX基于Debian GNU/Linux,桌面系统主要采用KDE,主要软件还包括GIMP、LibreOffice等。是一套光盘或USBU盘启动的GNU/Linux系统(LiveCD),功能包括:自动硬件监测、支持常见的显卡、声卡、SCSI和USB设备,以及其它外设。KNOPPIX可用于Linux演示、光盘教学、系统急救,经过适当改造,还可以用于商业软件的产品演示。它的优点是Knoppix的硬件支持极佳,即使是较新的产品,很多时都可以正常运用。缺点是对中日韩环境的支持极差,在系统预建的汉字字体档里,错字、缺字连篇,字体比例亦不成比例。

    3、    Slackwarex

            Slackware是Slackware Linux, Inc的Patrick Volkerding制作的Linux发行版本。Slackware走了一条与其他的发行版本(Red Hat、Debian、Gentoo、SuSE、Mandriva、Ubuntu等)不同的道路,它力图成为“UNIX风格”的Linux发行版本。Slackware主要为x86 PC开发,Slackware 13.0,官方首次提供64位的版本下载。

            SUSE Linux原是以Slackware Linux为基础,并提供完整德文使用界面的产品。SuSE于1992年末创办,专门制为德国人推出量身订作的SLS/Slackware软件及UNIX/Linux说明文件。"S.U.S.E."后来改称/简短为"SuSE",德文意思为"Software-und System-Entwicklung",英文为"Software and system development"。SUSE Linux采用了不少Red Hat Linux的特质(使用RPM及/etc/sysconfig)。 SUSE包含一个安装及系统管理工具YaST2。它能够进行磁盘分区、系统安装、在线更新、网络及防火墙配置设置、用户管理和其他更多的工作。它为原来复杂的设置工作提供了方便的组合界面。2014年1月,Novell公司收购了SUSE。其商业版本为SUSE Linux Enterprise server,目前最新的版本为SUSE Linux Enterprise 12

             OpenSUSE,前身为SUSE Linux和SuSE Linux Professional,是一个Linux发行版与项目,由SUSE与其他公司赞助。是Novell收购SuSE Linux后创建的发行版本。它的开发重心是为软件开发者和系统管理者创造适用的开放源代码的工具,并提供易于使用的桌面环境和功能丰富的服务器环境。openSUSE针对桌面环境进行了一系列的优化,对Linux新手较为友好。

    三、    Linux的哲学思想

        1、    一切皆文件
        2、    由众多功能单一的程序组成,一个程序只做一件,且要做好
        3、    尽量避免与用户交互
        4、    配置文件以文本文件形式存在

                在Linux系统中,与windows系统不同的是,软硬件、命令、数据本身均是以文件的形式存在;为了统一管理,功能不同的程序归类放在同一个路径下,这些程序的功能很单一,只做一件事,这样不同的程序之间不会相互影响,提高了系统应用性能;程序本身尽可能的避免了和用户之间的交互,也就是说程序本身会通过调用(被调用)来完成事务,不需要用户过多的干预这个过程,这样为系统的自动化运维提供便利,复杂的事务可以通过调用多个单任务的程序来完成;所有的配置类文件也是通过文本文件来存储在系统中,便于查看和修改。

    四、    Linux系统上命令格式及常用命令

           Linux系统上命令通用格式为: COMMAND    [OPTIONS]    [ARGUMENTS] 命令        选项        参数

    1、    命令

            命令可分为两类:内置命令和外部命令

    • 内置命令:由shell自带的命令,For example:cd,break,(un)alias,type,file,history,pwd……是系统在启动之初就已经调入到内存中,是常驻内存之中,执行效率高

    • 外部命令:独立的可执行文件,文件即命令;系统根据环境变量中的设置查找来执行。例如:ls、ifconfig、useradd

    2、    选项

           指定命令的运行特性,有两种:

           长选项:例如–size等

           短选项:例如-l,-d等

    3、    参数

           指定命令的作用对象,可同时又多个(多个存在时,参数之间必须用空白字符间隔开)

    4、常用命令:

              ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date

           【ifconfig】    configure a network interface

            OPTIONS
                -a    显示所有可用网络接口状态信息
                -s    简单显示网络状态,类似netstat –i
                Interface 只显示$interface的配置信息及网络状态
                up/down    用法是:ifconfig interface up/down    启动/关闭interface接口
    
            FOR EXAMPLE:  
    
                1、ifconfig -a
                    [root@localhost ~]# ifconfig -a
                    eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                        inet 192.168.10.107  netmask 255.255.255.0  broadcast 192.168.10.255
                        inet6 fe80::20c:29ff:fece:ee8e  prefixlen 64  scopeid 0x20<link>
                        ether 00:0c:29:ce:ee:8e  txqueuelen 1000  (Ethernet)
                        RX packets 8482  bytes 1252170 (1.1 MiB)
                        RX errors 0  dropped 0  overruns 0  frame 0
                        TX packets 915  bytes 138736 (135.4 KiB)
                        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 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
    
                2、ifconfig -s
                    [root@localhost ~]# ifconfig -s
                    Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
                    eno16777  1500     9563      0      0 0           964      0      0      0 BMRU
                    lo       65536        0      0      0 0             0      0      0      0 LRU
    
                3、ifconfig eno16777736 up(down)
                    [root@localhost ~]# ifconfig eno16777736 up
    
                在REHL7以后的版本中,系统默认ip V2代替了ifconfig,如果要使用ifconfig命令则需要安装net-tools工具
                    ~]#rpm –ivh net-tools-2.0-0.17.20131004git.el7.x86_64.rpm 
                    或者
                    ~]#yum install –y net-tools

           【echo】    display a line of text

            OPTIONS
                    -n    输出内容后不换行
                    -e    可解释转义字符
                    -E    不能解释转义字符(命令默认选项)
            FOR EXAMPLE:
                1、echo -n 'hello,friends'
                   [root@localhost ~]# echo -n 'hello,friends'
                    hello,friends[root@localhost ~]# 
    
                2、echo -e 'hello,\nfriends'
                    [root@localhost ~]# echo -e 'hello,\nfriends'
                    hello,
                    friends
    
                3、echo -E 'hello,\nfriends'
                    [root@localhost ~]# echo -E 'hello,\nfriends'
                    hello,\nfriends
    
                    *   \n    转义意思是:换行  *

           【tty】    print the file name of the terminal connected to standard input查看当前终端设备类型

            OPTIONS
                    -s  什么都不显示,只是返回一个状态值
    
            FOR EXAMPLE
                1、tty
                    [root@localhost ~]# tty
                    /dev/pts/0
    
    
               *   tty是Linux系统的输出设备(字符型),有这么几种类型:
                    虚拟终端:tty(1-6)  系统启动之后直接调用的界面
                    伪终端:pts/n       通过远程或者在虚拟终端中开启的界面
                    串口终端:tyySn     计算机串行接口连接的终端

           【startX】  start X window

            OPTIONS
                    -w  在工作站上强制启动X会话
                    -x  使用.xinitrc脚步启动会话
    
            FOR EXAMPLE
                1、startx 
                    在X终端上启动XWindow界面
    
                2、startx -w
    
                3、startx -x .xinitrc

           【export】  Set export attribute for shell variables.

            OPTIONS
                    -f  代表[变量名称]中为函数名称;
                    -n  移除变量,变量本身没有被删除,只是无法在后续SHELL中起作用
                    -p  列出所有的SHELL中设定的环境变量
    
            FOR EXAMPLE
                1、export -f Func
                    将Func这个变量定义为函数名称
                2、export -n Func
                    从定义的环境变量列表中移除,但是$Func本身不受影响
                    [root@localhost ~]# export Func=100
                    [root@localhost ~]# echo $Func
                    100
                    [root@localhost ~]# export -p
                    declare -x Func="100"
                    declare -x HISTCONTROL="ignoredups"
                    declare -x HISTSIZE="1000"
                    declare -x HOME="/root"
                    [root@localhost ~]# export -n Func
                    [root@localhost ~]# export -p
                    declare -x HISTCONTROL="ignoredups"
                    declare -x HISTSIZE="1000"
                    declare -x HOME="/root"
                    [root@localhost ~]#echo $Func
                    100
                3、export -p
                    [root@localhost ~]# export -p
                    declare -x Func="100"
                    declare -x HISTCONTROL="ignoredups"
                    declare -x HISTSIZE="1000"
                    declare -x HOME="/root"

           【pwd】 Print the name of the current working directory

            OPTIONS
                    -L  当目录连接链接时,显示链接路径  
                    -P  显示目录的物理路径
    
            FOR EXAMPLE
                1、pwd  等效pwd -L
                     [root@localhost init.d]# pwd
                     /etc/rc.d/init.d
                2、pwd -P
                    [root@localhost init.d]# pwd -P
                    /etc/rc.d/init.d
                3、pwd -L
                    [root@localhost init.d]# pwd -L
                    /etc/init.d

          

            【history】  Display or manipulate the history list

            OPTIONS
                    -c  删除history列表中的历史记录
                    -a  附加当前会话中的记录到历史记录文件中去,默认~/.bash_history
                    -r  从历史记录文件和附加的内容列表中读取记录
            FOR EXAMPLE
                1、history n
                    [root@localhost ~]# history 5
                    230  history -a
                    231  history -w
                    232  history
                    233  history 20
                    234  history 5
                2、history -c
                    [root@localhost ~]# history 5
                    1  history -t
                    2  history 5
                    [root@localhost ~]# history -c
                    [root@localhost ~]# history 5
                    1  history 5
                3、HISTTIMEFORMAT
                    [root@localhost ~]# export HISTTIMEFORMAT='%F %T'
                    [root@localhost init.d]# history 5
                    140  2016-09-14 23:42:55man history
                    141  2016-09-14 23:43:00help history
                    142  2016-09-15 06:59:36export HISTTIMEFORMAT='%F %T'
                    143  2016-09-15 06:59:39history 
                    144  2016-09-15 06:59:46history 5
                    ***设置history命令的输出格式
    
                    [root@localhost ~]# export HISTSIZE=0
                    ***限制命令历史记录的总条数,0表示禁用命令历史记录功能
    
                    [root@localhost ~]# export HISTFILE=~/.cmd_history
                    ***设置命令历史记录的保存位置,默认是~/.bash_history
    
                    [root@localhost ~]# export HISTIGNORE='pwd:ls:ls -ltr:'
                    ***设置某些命令将不被保存到历史记录中
    
                    [root@localhost ~]# export HISTCONTROL=erasedups
                    ***清理所有重复的命令历史条目
    
                    [root@localhost ~]# export HISTCONTROL=ignoredups
                    ***剔除连续重复的命令历史条目
    
                    [root@localhost ~]# export HISTCONTROL=ignorespace
                    ***不记录以空格开头的命令历史条目

           【shutdown】    shutdown the system

            OPTIONS
                    -H  Halt the system(Halt同shutdown -h)关闭系统
                    -P  退出系统并关闭电源
                    -r  重启系统
                    -k  只发送关机警告并不真正关机
                    -c
                    -t  在改变到其他runrever之前,告诉init多久以后关机
                    -n  不用init,而是自己来关机。不鼓励使用此选项
    
            FOR EXAMPLE
                1、shutdown -H
    
                2、shutdown -P 关机
    
                3、shutdown -h +5
                    [root@localhost init.d]# shutdown -h +5(分钟)
                    Shutdown scheduled for Thu 2016-09-15 09:18:47 CST, use 'shutdown -c' to ca
    
                4、shutdown -c
                    [root@localhost init.d]# shutdown -c
                    Broadcast message from root@localhost (Thu 2016-09-15 09:15:02 CST):
                    The system shutdown has been cancelled at Thu 2016-09-15 09:16:02 CST!

           【poweroff】    Power Off the system

            OPTIONS
    
                    --halt  Halt the mochine关闭设备
                    -p      switch off the mochine 切断电源
                    -f      force immediate halt/poweroff/reboot强制立刻停止/断电/重启系统
                    -w      只增加记录/var/log/wtmp,但不进行停止/断电/重启系统操作
                    -d      不记入记录
            FOR EXAMPLE
                1、poweroff
                    直接断电关闭设备

           【reboot】   Reboot the system

            OPTIONS
    
                    --halt  Halt the mochine关闭设备
                    -p      switch off the mochine 切断电源
                    -f      force immediate halt/poweroff/reboot强制立刻停止/断电/重启系统
                    -w      只增加记录/var/log/wtmp,但不进行停止/断电/重启系统操作
                    -d      不记入记录
    
            FOR EXAMPLE
                1、reboot
                    直接重启设备   
    
    
    
             --------------------shutdown、halt、poweroff、reboot三者之间的区别--------------------------
    
                从man帮助信息可以看到使用同样的选项,会得到同样的结果
    
                1、shutdown
                    shutdown命令是安全的将系统关闭,shutdown执行它的工作是送信号〔signal〕给init程序﹐要
                    求它改变runlevel。Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕系
                    统﹐而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有
                    -r参数给shutdown。要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作﹐你可以
                    在这个文件/etc/inittab里看到这些runlevels相关的资料。
                2、halt
                    其实halt就是调用shutdown -h,halt执行时杀死应用程序的进程,执行sync系统调用,文件系统
                    写操作完成之后就会停止内核。
                3、reboot
                    与halt同理,只是此命令默认重启,halt是关机
                4、Poweroff
                    不建议在多用户下使用
                5、init
                    所有命令的核心,shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。
                    Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕系统﹐而runlevel 1
                    则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有-r参数给shutdown。
                    要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作﹐你可以在这个文件/etc/inittab
                    里看到这些runlevels相关的资料。

           【hwclock】 read and set hardware clock            USAGE                hwclock [FUNCTION] [OPTIONS]

            FUNCTIONS
                    -r  读取硬件时钟并且显示
                    -s  将硬件时钟同步到系统时钟hctosys
                    -w  将系统时钟同步到硬件时钟systohc
                      --systz   基于当前的timezone设置同步硬件时钟
                    -c
                      --compare 定期比较CMOS时钟和系统时钟

           【date】  print or set the system date and time

            SYNOPSIS
                date [OPTIONS].. [+FORMAT]
                date [-u|--utc|--univeral] [MMDDhhmm[[CC]YY][.SS]]
            OPTIONS
                    -f  类似--date 显示需要查看的DATEFILE的每行时间戳
                    -r  显示FILE的最后一次修改时间
                    -d  根据字符描述来显示日期与时间,不包括‘now’,描述使用双引号
                    -s  根据字符串来设定日期与时间,字符串带双引号
    
            FORMAT  
                    %% :打印%
                    %n : 下一行
                    %t : 跳格
                    %H : 小时(00..23)
                    %I : 小时(01..12)
                    %k : 小时(0..23)                    
                    %l : 小时(1..12)                    
                    %M : 分钟(00..59)                    
                    %p : 显示本地 AM 或 PM                    
                    %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
                    %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 
                    %S : 秒(00..61)                    
                    %T : 直接显示时间 (24 小时制)                   
                    %X : 相当于 %H:%M:%S                    
                    %Z : 显示时区 %a : 星期几 (Sun..Sat)                    
                    %A : 星期几 (Sunday..Saturday)                   
                    %b : 月份 (Jan..Dec)                   
                    %B : 月份 (January..December)                    
                    %c : 直接显示日期与时间                    
                    %d : 日 (01..31)                    
                    %D : 直接显示日期 (mm/dd/yy)                   
                    %h : 同 %b                    
                    %j : 一年中的第几天 (001..366)                    
                    %m : 月份 (01..12)                   
                    %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)                   
                    %w : 一周中的第几天 (0..6)                  
                    %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)                   
                    %x : 直接显示日期 (mm/dd/yy)                  
                    %y : 年份的最后两位数字 (00.99)                  
                    %Y : 完整年份 (0000..9999)
            FOR EXAMPLE
                1、设置时间
                    date -s //设置当前时间,只有root权限才能设置,其他只能查看。
    
                    date -s 20150523 //设置成20150523,这样会把具体时间设置成空00:00:00
    
                    date -s 01:01:01 //设置具体时间,不会对日期做更改
    
                    date -s “01:01:01 2016-05-23″ //这样可以设置全部时间
    
                    date -s “01:01:01 20150523″ //这样可以设置全部时间
    
                    date -s “2016-05-23 01:01:01″ //这样可以设置全部时间
    
                    date -s “20160523 01:01:01″ //这样可以设置全部时间
    
                2、日期时间查询
    
                    date -d '1 day ago' +'%Y-%m-%d'    
                    date -d '+1 day' +%Y-%m-%d
                    date -d '-1 day' +%Y-%m-%d
                    date -d '+1 month' +%Y-%m-%d
                    date -d '+1 yeas' +%Y-%m-%d

    五、如何获取命令帮助

            Linux系统的命令众多,再配合各种选项,那命令的使用方法永远也记不完;那我们如何获取命令的帮助呢?我们知道,在Linux系统中命令可分为内置命令和外部命令,查看一个命令是内置命令还是外部命令,我们使用type命令,比如:

        [root@localhost ~]# type cd ifconfig
        cd is a shell builtin       /*  cd是SHELL的内置命令
        ifconfig is hashed (/usr/sbin/ifconfig)     /*ifconfig是外部命令

    常用的获取命令帮助的途径有以下几个

            1、获取内置命令的帮助信息

                  获取内置命令的帮助信息的方式,比如help cd,得到如下信息

            [root@localhost ~]# help cd
            cd: cd [-L|[-P [-e]]] [dir]
            Change the shell working directory.                                                            
            Change the current directory to DIR.  The default DIR is the value of the
            HOME shell variable.
    
            Options:
            -L      force symbolic links to be followed
            -P      use the physical directory structure without following symbolic
            links
            -e      if the -P option is supplied, and the current working directory
            cannot be determined successfully, exit with a non-zero status
    
            The default is to follow symbolic links, as if `-L' were specified.
    
            Exit Status:
            Returns 0 if the directory is changed, and if $PWD is set successfully when
            -P is used; non-zero otherwise.

            2、获取外部命令的帮助信息

                  获取外部命令的帮助信息的方式有多种,常用有以下几种:

            a、COMMAND --HELP
    
                以简要格式显示自带的帮助文档,比如ifconfig --help
                [root@localhost ~]# ifconfig --help
                Usage:
                  ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
                  [add <address>[/<prefixlen>]]
                  [del <address>[/<prefixlen>]]
                  [[-]broadcast [<address>]]  [[-]pointopoint [<address>]]
                  [netmask <address>]  [dstaddr <address>]  [tunnel <address>]
                  [outfill <NN>] [keepalive <NN>]
                  [hw <HW> <address>]  [mtu <NN>]
                  [[-]trailers]  [[-]arp]  [[-]allmulti]
                  [multicast]  [[-]promisc]
                  [mem_start <NN>]  [io_addr <NN>]  [irq <NN>]  [media <type>]
                  [txqueuelen <NN>]
                  [[-]dynamic]
                  [up|down] ...
    
                  <HW>=Hardware Type.
                  List of possible hardware types:
                    loop (Local Loopback) slip (Serial Line IP) cslip (VJ Serial Line IP) 
                    slip6 (6-bit Serial Line IP) cslip6 (VJ 6-bit Serial Line IP) adaptive (Adaptive Serial
                    Line IP) 
                    ash (Ash) ether (Ethernet) ax25 (AMPR AX.25) 
                    netrom (AMPR NET/ROM) rose (AMPR ROSE) tunnel (IPIP Tunnel) 
                    ppp (Point-to-Point Protocol) hdlc ((Cisco)-HDLC) lapb (LAPB) 
                    arcnet (ARCnet) dlci (Frame Relay DLCI) frad (Frame Relay Access Device) 
                    sit (IPv6-in-IPv4) fddi (Fiber Distributed Data Interface) hippi (HIPPI) 
                    irda (IrLAP) ec (Econet) x25 (generic X.25) 
                    infiniband (InfiniBand) eui64 (Generic EUI-64) 
                  <AF>=Address family. Default: inet
                  List of possible address families:
                    unix (UNIX Domain) inet (DARPA Internet) inet6 (IPv6) 
                    ax25 (AMPR AX.25) netrom (AMPR NET/ROM) rose (AMPR ROSE) 
                    ipx (Novell IPX) ddp (Appletalk DDP) ec (Econet) 
                    ash (Ash) x25 (CCITT X.25) 
    
            b、man COMMAND            
                man(manual)属于专业的命令帮助手册,位于/var/share/man文件中,讲解很专业、全面。man命令包括10个章节,具体如下:
    
                    man1:用户命令(user commands)
                    man2:系统内部调用命令(system calls)
                    man3:C库调用(library functions)
                    man4:设备文件及特殊文件(special files)
                    man5:文件格式(配置文件格式)(file formats)
                    man6:游戏使用帮助(games)
                    man7:杂项(conventions and miscellany)
                    man8:管理工具及守护进程(administration and privileged commands)
                    man L:(math library functions)
                    man N:tcl functions tcl函数
    
                当我们man一个命令的时候,在文档的左上角会提示我们的帮助文档属于man的哪一章的命令帮助,或者可以通过man n COMMAND
                命令指定其章节,如下:
    
                [root@localhost ~]# man ifconfig
                IFCONFIG(8)           Linux System Administrator's Manual          IFCONFIG(8)               
                [root@localhost ~]# man 1 date
                DATE(1)                          User Commands                         DATE(1

               c、info COMMAND

                获取COMMAND的在线文档

               d、程序自带文档,比如:

                README:程序的相关信息
                INSTALL:安装帮助文档
                CHANGES:程序的改动信息

               f、官方文档,比如RHEL文档:http://www.redhat.com/doc

      由以上几种途径基本可以解决您的问题了。

    六、Linux发行版常用目录

             FHS(Filesystem Hierarchy Standard)规定了类Unix系统的各个系统目录的功能及存储文件,下面我们来解读下linux系统中的目录

            /: Root directory 根目录,Linux内核挂载的起始位置

            /bin: Essential user command binaries (for use by all users) 基本的用户命令文件,任何用户均可调用,比如:cp、date、dd、rm

            /boot: Static files of the boot loader 系统引导加载程序的静态文件,系统进入用户模式之前的加载文件均在这里

            /dev: Device files 系统的设备文件 存储着关于各部分硬件设备的资料,比如:tty、pts、mem(不可读)

            /etc:Host-specific system configuration 主机的系统配置文件,几个特殊的目录如下:

                      X11/       Configuration for the X Window system (optional)
                      sgml/            Configuration for SGML (optional)
                      xml/           Configuration for XML (optional)

            /home:  User home directories (optional)  用户的家目录,创建用户默认生成,一般目录名同用户名。例如:/home/USERNAME

            /lib:Essential shared libraries and kernel modules 基本的共享库及内核模块。

            /lib(qual):Alternate format essential shared libraries (optional) 交替格式共享库。例如lib32、lib64

            /media:Mount point for removable media 可移动介质的挂载点,可以认为是扩展挂载点。与/mnt类似

            /mnt:Mount point for a temporarily mounted filesystem 其他临时系统文件的挂载点。

            /opt:Add-on application software packages 留给附加的应用程序软件包的

            /root:Home directory for the root user (optional) 超级管理员root的家目录

            /run:Run-time variable data 运行时的变量数据,这个目录包含系统信息数据描述了系统自启动。这个目录下的文件必须被清除(删除或截断)在引导过程的开始。

            /sbin:System binaries 管理员命令存储目录,没有子目录且不能随意创建

            /srv:Data for services provided by this system 系统服务的相关数据

            /tmp:Temporary files 临时文件存储。

            /usr: shareable, read-only data,must not be written to。属于系统文件的最主要部分(/除外),符合FHS用户共用此目录,其子目录解读如下:

                      bin/        Most user commands 大部分的用户命令,比如:perl,python,tclsh

                      include/       Directory for standard include files 一些可能系统调用的C相关的文件

                      lib/        Libraries for programming and packages 库程序和包

                      local/       Local hierarchy 本地的层级目录,bin/,sbin/,lib/,lib64/,share/,src/,games/,include/等

                      sbin/       Non-essential standard system binaries 只有管理员调用的非标准的系统函数

                      share/       Architecture-independent data 系统杂项,但是有几个重要的目录

                                     man/ Manual pages 使用手册目录

                                     doc/ 程序的说明文档

                                     zeroinfo/ Timezone information and configuration (optional)   时区信息和配置信息

                      src/        Source code (optional)源代码文件可以存储在这里,仅供参考

            /sys:Kernel and system information virtual filesystem 主要存储的是硬件信息、驱动、个别内核信息

            /proc:Kernel and process information virtual filesystem 看解释跟/sys一样,只是此文件目录存储的是实际标准的流程和系统信息,比如CPU、内存等信息

            /var:/var contains variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files. 主要包括一些缓存文件、管理的log文件、动态生成的临时文件、spoool、mail文件,也是比较重要的目录


    原创文章,作者:396064847,如若转载,请注明出处:http://www.178linux.com/46706

    评论列表(1条)

    • 马哥教育
      马哥教育 2016-09-20 11:14

      写的很好,继续保持,加油

    联系我们

    400-080-6560

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

    邮件:1660809109@qq.com

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