1. 程式人生 > >從零開始的Linux學習Ⅰ

從零開始的Linux學習Ⅰ

日期時間 modules 種類 example arch ssi pri rst systemctl

計算機的組成及其功能

在馮諾依曼體系中,計算機的組成部分有

控制器:負責指揮、協調計算機系統的操作
運算器:執行算術和邏輯運算操作
存儲器:存儲數據、指令和程序等信息,並在需要時提供
輸入:將數據、指令等信息輸入到計算機
輸出: 將計算機的中間結果、最終結果及各種控制信號輸出出來


常見的Linux發行版

基於Debian的發行版

軟件數量豐富,包管理工具強大,系統穩定

Ubuntu:以桌面應用聞名

Knoppix:以安全軟件著稱

基於RedHat的發行版

RedHat Enterprise Linux:面向企業用戶的的Linux系統,具有高度穩定性,支持個平臺虛擬化

CentOS:針對收費版的RHEL而由社區二次開發的系統

Fedora:個人桌面版,基本每6個月發行一個版本

基於Slackware的發行版

Slackware:以簡潔、安全、穩定聞名

S.u.S.E:

openSUSE:以界面華麗聞名

SLES:企業版SUSE系統,轉為服務器,大型機設計

其它

Gentoo:對使用者有更高要求,支持定制,更加自由透明

ArchLinux:輕量簡潔,追求代碼最小化,軟件更新速度快


Linux的哲學思想

一:一切皆文件:把幾乎所有資源統統抽象為文件形式;包括硬件設備,甚至通信接口等

二:分工合作:由眾多功能單一的程序組成;一個程序只做一件事,並且做好;組合小程序完成復雜任務;
三:自動化:盡量避免跟用戶交互;目標:易於以編程的方式實現自動化任務;

四:文本:使用文本文件保存配置信息;


Linux系統上命令的使用格式

命令的語法通用格式:

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)
        獨立的可執行程序文件,文件名即命令名:外部命令

    shell程序是獨特的程序,負責解析用戶提供的命令;
        環境變量:
            PATH:從哪些路徑中查找用戶鍵入的命令字符串所對應的命令文件;
                ~]# echo $PATH
                /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

                查找次序:自左而右;

    查看命令類型:
        type COMMAND

OPTIONS:
    指定命令的運行特性;

    選項有兩種表現形式:
        短選項:-C, 例如-l, -d
            註意:有些命令的選項沒有-;
            如果同一命令同時使用多個短選項,多數可合並:-l -d = -ld
        長選項:--word, 例如--help, --human-readable
            註意:長選項不能合並;

        註意:有些選項可以帶參數,此稱為選項參數;

ARGUMENTS:
    命令的作用對象;命令對什麽生效;

    註意:不同的命令的參數;有些命令可同時帶多個參數,多個之間以空白字符分隔;

取消命令執行:Ctrl+c
例如:ls -ld /var /etc

  1. ifconfig使用詳解
    通過man ifconfig我們可以看到ifconfig的使用方法和詳細說明
    NAME名稱
    ifconfig - configure a network interface 配置網絡接口
    技術分享圖片
    SYNOPSIS命令格式
    ifconfig [-v] [-a] [-s] [interface]
    ifconfig [-v] interface [aftype] options | address ...
    技術分享圖片

OPTIONS選項
-a display all interfaces which are currently available, even if down
顯示當前可用的所有接口,即使關閉
-s display a short list (like netstat -i)
顯示一個短列表(如netstat -i)
-v be more verbose for some error conditions
對於某些錯誤條件,-v更詳細

        interface
          The name of the interface.  This is usually a driver name followed by a unit number, for example eth0  for  the first  Ethernet  interface.  If your kernel supports alias interfaces, you can specify them with eth0:0 for the first alias of eth0. You can use them to assign a second address. To delete an  alias  interface  use  ifconfig eth0:0  down. Note: for every scope (i.e. same net with address/netmask combination) all aliases are deleted, if you delete the first (primary).
                        接口的名稱。這通常是驅動程序名稱後面跟一個單位號,例如eth0

第一個以太網接口。如果內核支持別名接口,則可以使用eth0:0指定別名接口
eth0的第一個別名。您可以使用它們來分配第二個地址。要刪除別名界面,請使用ifconfig
eth0:0 down。註意:對於每個作用域(即具有地址/網絡掩碼組合的相同網絡),如果刪除第一個(主)所有別名都被刪除。

   up     This flag causes the interface to be activated.  It is implicitly specified if an address is  assigned  to  the interface.這個標誌會導致接口被激活。如果地址被分配給

接口。

   down   This flag causes the driver for this interface to be shut down.這個標誌將導致此接口的驅動程序關閉。

         mtu N  This parameter sets the Maximum Transfer Unit (MTU) of an interface.這個參數設置了一個接口的最大傳輸單元(mtu)。

   dstaddr addr
          Set  the  remote  IP  address  for  a point-to-point link (such as PPP).  This keyword is now obsolete; use the pointopoint keyword instead.為點對點鏈路(如PPP)設置遠程IP地址。這個關鍵字現在已經過時了;使用pointopoint關鍵字。

   netmask addr
          Set the IP network mask for this interface.  This value defaults to the usual class A, B or C network mask  (as derived from the interface IP address), but it can be set to any value.設置此接口的IP網絡掩碼。此值默認為通常的類A、B或C網絡掩碼(從接口IP地址派生而來),但可以設置為任何值。

   add addr/prefixlen
          Add an IPv6 address to an interface.向接口添加IPv6地址。

   del addr/prefixlen
          Remove an IPv6 address from an interface.從接口中刪除IPv6地址。
         address
          The IP address to be assigned to this interface.分配給這個接口的IP地址。

2.echo 使用詳解——回顯
echo [SHORT-OPTION]... [STRING]...
-n: 不進行換行;
-e:讓轉義符生效;
\n:換行
\t:制表符
技術分享圖片
STRING可以使用引號,單引號和雙引號均可用;
單引號:強引用,變量引用不執行替換;
~]# echo ‘$SHELL‘
雙引號:弱引用,變量引用會被替換;
~]# echo "$SHELL"

            註意:變量引用的正規符號    
                ${name} 
  1. tty使用詳解 - print the file name of the terminal connected to standard input
    打印連接到標準輸入的終端的文件名
    SYNOPSIS
    tty [OPTION]...

    -s, --silent, --quiet
    print nothing, only return an exit status不打印任何內容,只返回退出狀態

    --help display this help and exit幫助顯示此幫助並退出

    --version
    output version information and exit輸出版本信息並退出

4.startx使用詳解——啟動圖形界面
技術分享圖片
技術分享圖片
使用ctrl+c可以取消

5.export使用詳解——用於設置環境變量
變量賦值export name=value

6.pwd使用詳解—— printing working directory顯示工作目錄
技術分享圖片

7.history使用詳解
命令歷史:shell進程會其會話中保存此前用戶提交執行過的命令;
~]# history
定制history的功能,可通過環境變量實現:
HISTSIZE:shell進程可保留的命令歷史的條數;
HISTFILE:持久保存命令歷史的文件;
.bash_history
HISTFILESIZE:命令歷史文件的大小;

        命令用法:
            history [-c] [-d 偏移量] [n] 
            或 history -anrw [文件名] 
            或 history -ps 參數 [參數...]

            -c: 清空命令歷史;
            -d offset:刪除指定命令歷史
            -r: 從文件讀取命令歷史至歷史列表中;
            -w:把歷史列表中的命令追加至歷史文件中;
            history #:顯示最近的#條命令;

        調用命令歷史列表中的命令:
            !#:再一次執行歷史列表中的第#條命令;
            !!:再一次執行上一條命令;
            !STRING:再一次執行命令歷史列表中最近一個以STRING開頭的命令;

                註意:命令的重復執行有時候需要依賴於冪等性;

        調用上一條命令的最後一個參數:
            快捷鍵:ESC, .
            字符串:!$

        控制命令歷史記錄的方式:
            環境變量:HISTCONTROL
                ignoredups:忽略重復的命令;
                ignorespace:忽略以空白字符開頭的命令;
                ignoreboth:以上兩者同時生效;

            修改變量的值:
                NAME=‘VALUE‘

8.shutdown——關機或重啟命令

shutdown [OPTIONS...] [TIME] [WALL...]
    OPTIONS:
        -h: halt
        -r:reboot
        -c:cancel

    TIME:
        now
        hh:mm
        +m
            +0

9.poweroff——關機命令
CentOS 7:
~]# systemctl poweroff
~]# systemctl reboot

        :
            ~]# poweroff
            ~]# halt
            ~]# reboot

10.reboot——重啟

日期相關的命令:
Linux:系統啟動時從硬件讀取日期和時間信息;讀取完成以後,就不再與硬件相關聯;

hwclock, clock:硬件時鐘
顯示或設定硬件時鐘
-s, --hctosys:以硬件為準,把系統調整為與硬件時間相同;
-w, --systohc:以系統為準,把硬件時間調整為與系統時鐘相同;

date:系統時鐘
顯示日期時間:date [OPTION]... [+FORMAT]
FORMAT:格式符
%F
%T
%Y
%m
%d
%H
%M
%S
%s: 從1970年1月1號(unix元年)0點0分0秒到命令執行那一刻經過的秒數;
...

設定日期時間:date [MMDDhhmm[[CC]YY][.ss]]

Linux系統上獲取命令的幫助信息

內部命令:
help COMMAND
外部命令:
(1) 命令自帶簡要格式的使用幫助

COMMAND --help

(2) 使用手冊:manual
    位置:/usr/share/man

#man COMMAND

SECTION:
    NAME:功能性說明
    SYNOPSIS:語法格式
    DESCRIPTION:描述
    OPTIONS:選項
    EXAMPLES:使用示例
    AUTHOR: 作者
    BUGS: 報告程序bug的方式
    SEE ALSO: 參考
    ...

SYNOPSIS: 
    []:可選內容;
    <>:必須提供的內容;
    a|b|c:多選一;
    ...:同類內容可出現多個;

使用手冊:壓縮格式的文件,有章節之分;
    /usr/share/man
        man1, man2, ...

        1:用戶命令;
        2:系統調用;
        3:C庫調用;
        4:設備文件及特殊文件;
        5:文件格式;(配置文件格式)
        6:遊戲使用幫助;
        7:雜項;
        8:管理工具及守護進行;

    ~]# man CHAPTER COMMAND

    註意:並非每個COMMAND在所有章節下都有手冊;
        查看:
            ~]# whatis COMMAND

            註意:其執行過程是查詢數據庫進行的;
                手動更新數據庫:
                    ~]# makewhatis

man命令打開手冊以後的操作方法:
    翻屏:
        空格鍵:向文件尾翻一屏;
        b: 向文件首部翻一屏;
        Ctrl+d:向文件尾部翻半屏;
        Ctrl+u:向文件首部翻半屏;
        回車鍵:向文件尾部翻一行;
        k: 向文件首部翻一行;
        G:跳轉至最後一行;
        #G: 跳轉至指定行;
        1G:跳轉至文件首部;

    文本搜索:
        /keyword:從文件首部向文件尾部依次查找;不區分字符大小寫;
        ?keyword:從文件尾部向文件首部依次查找;    
            n: 與查找命令方向相同;
            N: 與查找命令方向相反;

    退出:
        q: quit

選項:
    -M /PATH/TO/SOMEDIR:到指定目錄下查找命令手冊並打開之;

Linux發行版的基礎目錄名稱命名法則及功用規定

FHS:Filesystem Hierarchy Standard 文件系統層級標準
/bin:所有用戶可用的基本命令程序文件;
/sbin:供系統管理使用的工具程序;
/boot:引導加載器必須用到的各靜態文件:kernel, initramfs(initrd), grub等;
/dev:存儲特殊文件或設備文件;
設備有兩種類型:字符設備(線性設備)、塊設備(隨機設備);
/etc:系統程序的配置文件,只能為靜態;
/home:普通的家目錄的集中位置;一般每個普通用戶的家目錄默認為此目錄下與用戶名同名的子目錄,/home/USERNAME;
/root:管理員的家目錄;可選;
/lib:為系統啟動或根文件系統上的應用程序(/bin, /sbin等)提供共享庫,以及為內核提供內核模塊
libc.so.*:動態鏈接的C庫;
ld:運行時鏈接器/加載器;
modules:用於存儲內核模塊的目錄;
/lib64:64位系統特有的存放64位共享庫的路徑;
/media:便攜式設備掛載點,cdrom, floppy等;
/mnt:其它文件系統的臨時掛載點;
/opt:附加應用程序的安裝位置;可選路徑;
/srv:當前主機為服務提供的數據;
/tmp:為那些會產生臨時文件的程序提供的用於存儲臨時文件的目錄;可供所用戶執行寫入操作;有特殊權限;
/usr:usr Hierarchy,全局共享的只讀數據路徑;
bin, sbin
lib, lib64
include:C程序頭文件;
share:命令手冊頁和自帶文檔等架構特有的文件的存儲位置
local:另一個層級目錄;
X11R6:X-Window程序的安裝位置
src:程序源碼文件的存儲位置
/usr/local:Local hierarchy,讓系統管理員安裝本地應用程序;也通常用於安裝第三方程序;
/var:/var Hierarchy,存儲常發生變化的數據的目錄;
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:基於內存的虛擬文件系統,用於為內核及進程存儲其相關信息;它們多為內核參數,例如net.ipv4.ip_forward, 虛擬為net/ipv4/ip_forward, 存儲於/proc/sys/, 因此其完整路徑為/proc/sys/net/ipv4/ip_forward;
        /sys:sysfs虛擬文件系統提供了一種比proc更為理想的訪問內核數據的途徑;其主要作用在於為管理Linux設備提供一種統一模型的的接口;

        參考:[sysfs 與 /sys] (https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/)

從零開始的Linux學習Ⅰ