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.www58058.com/98313

(1)
dyzhoudyzhou
上一篇 2018-05-12 21:03
下一篇 2018-05-12 21:12

相關推薦

評論列表(1條)

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

    命令可以用專門的命令行 格式寫。

欧美性久久久久