Linux運維學習歷程-第三天-初識Linux

初識Linux

本章內容

   初安裝Linus的網絡配置

   防火牆的關閉

   用戶

   終端

   shell

   命令紀要

安裝linux之後,linux默認網卡開機不是自動激活,並且防火牆開啓的,這對初期我們學習linux會產生一定的阻礙,所以我們先要設置一下參數讓我們的linux能對我們更友好一下。

一、網卡設置

若網卡要設置成靜態IP地址

命令如下:首先登錄管理員賬戶(配置系統只有管理員由此權限哦),用vim文本編輯器編輯eno16777736,進入界面按字母a鍵,編輯參數-Esc退出編輯模式按住Shift+:,輸入wq保存並退出

   

wKiom1eXXOKBJ-9BAABp7p-npmg444.jpg

wKioL1eXXOPRjgv-AACJ_oXHTg0497.jpg

wKiom1eXXOPCAw3TAAB0jjCKavs564.gif動態IP只需要改ONBOOT=yes,激活網卡就行,BOOTPROTO=dhcp保持不動

wKiom1eXYRex269QAABIkFSg4wk606.jpg重啓網絡服務

wKioL1eXYRiioo1VAAE_nKrC9Lc797.jpg查看一下網卡信息吧

二、關閉防火牆

centos6.8默認防火牆爲iptabls,而centos7.2爲firewalld,所以由於防火牆的不同,操作也不同

wKioL1eXYwnRuxrWAACCfBVl_EI420.jpg

首先可以查看一下firewall防火牆的狀態,running正在運行

停止firewall,然後禁止自啓動firewall,然後狀態就會變爲not running了

啓動則是:systemcl start firewalld.service

6.8命令如下

查看防火牆狀態----service iptables status

1 關閉防火牆-----service iptables stop 臨時的

2 啓動防火牆-----service iptables start 

3 重啓防火牆-----service iptables restart 

4 查看防火牆狀態--service iptables status 

5 永久關閉防火牆--chkconfig iptables off 

6 永久關閉後啓用--chkconfig iptables on

這樣我們就可以在初期用到網絡連接時,一般就不會出現連接不上被防火牆屏蔽的情況了。

三、用戶類別

Linux用戶簡單的分爲管理員和普通用戶,普通用戶又分爲系統內建用戶和自定義用戶。可以查看/etc/passwd來查看。如下圖所示:

4d086e061d950a7ba9720a820fd162d9f2d3c935


1、系統管理員:即root帳戶,UID號爲0,擁有所有系統權限,它類似於Windows系統中的administrator帳戶,是整個系統的所有者。

  root用戶:

      一個特殊的管理帳戶,也被稱爲超級用戶

     root已接近完整的系統控制,因此對系統損害幾乎有無限的能力,基本什麼都可以操作,甚至作死命令 rm -rf /(千萬別想不開)

     除非必要,不要登錄爲 root,我們一般不用,用也是臨時切換,或者臨時提升普通用戶權限來完成操作


2、普通( 非特權  )用戶,UID號1-65535,沒有對系統管理權限,權限有限,造成損害的能力比較有限

   系統用戶:linux爲滿足自身系統管理所內建的賬號,通常在安裝過程中自動創建,不能用於登錄操作系統。centOS6以前版本UID在1-499之間,centos7在1-999之間。如上圖中的的halt、mail等等用戶即是此類用戶。它類似於Windows中的system帳戶,當然權限遠沒有system帳戶高。

   自定義用戶:由root管理員創建供用戶登錄系統進行操作使用的賬號,centOS6以前版本UID在500-60000之間,centos7在1000-60000之間。它類似於Windows系統中users用戶組中的帳戶 。

四、終端

   服務器主機非必要部件,沒有終端服務器一樣能夠運行;可以理解爲鼠標、鍵盤、顯示器等可供用戶與主機交互必然用到的I/O設備

    物理終端:直接接入本機的顯示器和鍵盤設備/dev/console又叫控制檯,是系統開機時能夠進入的單用戶模式,而且網絡是被禁用的

     虛擬終端:附加在物理終端之上的以軟件方式虛擬實現的終端,設備文件路徑:/dev/tty#,CentOS 6 默認啓動6 個虛擬終端 Ctrl+Alt+F#: [1,6]

        圖形終端:屬於虛擬終端,附加在物理終端之上的以軟件方式虛擬實現的終端,但額外會提供桌面環境; Ctrl+Alt+F7

               centos7:在哪個虛擬終端啓動的圖形界面,即位於那個虛擬終端;而剩下的則爲字符界面;默認Ctrl+Alt+F1圖形界面,[2-6]是字符界面

        串行終端(ttyS)

     模擬終端:圖形界面打開 的 命令行以及基於ssh 協議或telnet 協議等遠程打開的界面, 設備文件:/dev/pts/# [0,  ∞ )

            比如我們使用的SecureCRT、我們在圖形界面也是模擬終端

    查看當前的終端設備:#tty

wKioL1eXb92CImIpAABlp9OpH0g180.jpg

五、shell

shell (計算機殼層)

    在計算機科學中,Shell俗稱殼(用來區別於核),是指“提供使用者使用界面”的軟件(命令解析器)。在Linux系統中shell是用戶界面提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令並把它送入內核去執行。它類似於DOS下的command和後來的cmd.exe。它接收用戶命令,然後調用相應的應用程序。同時它又是一種程序設計語言。作爲命令語言,它交互式解釋和執行用戶輸入的命令或者自動地解釋和執行預先設定好的一連串的命令;作爲程序設計語言,它定義了各種變量和參數,並提供了許多在高級語言中才具有的控制結構,包括循環和分支。

基本上shell分兩大類:

    一:圖形界面shell(Graphical User Interface shell 即 GUI shell)

          例如:應用最爲廣泛的 Windows Explorer (微軟的windows系列操作系統),還有也包括廣爲人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更強大的Desktop、CDE、GNOME(C,  圖形庫gtk)、KDE(C++, 圖形庫qt)、 XFCE( 輕量級桌面)。

    二:命令行式shell(Command Line Interface shell ,即CLI shell)

          例如:

          bash / sh / ksh / csh(Unix/linux 系統)

       (MS-DOS系統)

        cmd.exe/ 命令提示字符(Windows NT 系統)

          Windows PowerShell(支援 .NET Framework 技術的 Windows NT 系統)

          傳統意義上的shell指的是命令行式的shell,以後如果不特別註明,shell是指命令行式的shell。

      文字操作系統與外部最主要的接口就叫做shell。shell是操作系統最外面的一層。shell管理你與操作系統之間的交互:等待你輸入,向操作系統解釋你的輸入,並且處理各種各樣的操作系統的輸出結果。

    shell提供了你與操作系統之間通訊的方式。這種通訊可以以交互方式(從鍵盤輸入,並且可以立即得到響應),或者以shell script(非交互)方式執行。shell script是放在文件中的一串shell和操作系統命令,它們可以被重複使用。本質上,shell script是命令行命令簡單的組合到一個文件裏面。

    Shell基本上是一個命令解釋器,類似於DOS下的command。它接收用戶命令(如ls等),然後調用相應的應用程序。較爲通用的shell有標準的Bourne shell (sh)和C shell (csh)。wKiom1eXc4STA8cuAABea99p_7Q540.jpg

    交互式shell和非交互式shell

    交互式模式就是shell等待你的輸入,並且執行你提交的命令。這種模式被稱作交互式是因爲shell與用戶進行交互。這種模式也是大多數用戶非常熟悉的:登錄、執行一些命令、簽退。當你簽退後,shell也終止了。

    shell也可以運行在另外一種模式:非交互式模式。在這種模式下,shell不與你進行交互,而是讀取存放在文件中的命令,並且執行它們。當它讀到文件的結尾,shell也就終止了。

    shell的類型

    在UNIX中主要有:

    Bourne shell (包括 sh,ksh,and bash)

    Bourne shell ( sh)

    Korn shell ( ksh)

    Bourne Again shell ( bash)

    POSIX shell ( sh)

    C shell (包括 csh and tcsh)

    C shell ( csh)

    TENEX/TOPS C shell ( tcsh)

GNU Bourne-Again Shell(bash) 是GNU計劃中重要的工具軟件之一,目前也是 Linux 標準的shell與sh 兼容。

CentOS 默認使用bash

 顯示當前使用的shell: 

    #echo ${SHELL}    花括號可以省略

 顯示當前系統使用的所有shell:

    #cat /etc/shells

 切換當前shell類型:  

    [root@localhost ~]# echo $SHELL

    /bin/bash

    [root@localhost ~]# chsh

    Changing shell for root.

    New shell [/bin/bash]: /bin/tcsh

    Shell changed.

    [root@localhost ~]# echo $SHELL

    /bin/bash

    [root@localhost ~]# su -

    上一次登錄:三 7月 27 10:58:49 CST 2016pts/0 上

    [root@localhost ~]# echo $SHELL

    /bin/tcsh

bash 的快捷鍵

Ctrl+l 清屏,相當於clear 命令

Ctrl+c  取消命令的執行

Ctrl-a  會移動到命令行的最前面

Ctrl-e  會移動到命令行的最後面

Ctrl-u  會刪除到行首

Ctrl-k  會刪除到行尾

arrow ctrl-b ctrl-f 會向左或向右移動一個字符

Esc-b 左移一個單詞

Esc-f 右移一個單詞


六、命令紀要

1、命令提示符

 命令提示符:prompt

     默認格式[root@localhost ~]#

 顯示提示符格式:

         [root@localhost ~] :echo $PS1

   臨時修改:#PS1=*****

   wKioL1eXdovTC9CLAABBubSrJBY401.jpg

 prompt: 

         管理員:#

         普通用戶:$

wKioL1eXd3_QmP_nAABIjk0aLFg484.jpg

2、命令的執行

  輸入命令,回車:提請shell程序找到鍵入命令所對應的可執行程序或代碼,並由其分析後提交給內核分配資源將其運行起來;而找尋命令對應關係的過程是先查找命令別名,沒有則進入shell自帶的內部命令中查找,沒有則進入hash緩存中查找對應外部命令的記錄,沒有則按照$PATH的目錄依次查找外部命令,第一次找到並執行對應的可執行程序或代碼。

  查找優先級:命令別名>內部命令>hash緩存的執行過的對應外部命令>按照$PATH查找   如果在$PATH中找到第一個對應的外部命令便執行並且保存帶內存中hash中就會存在這個命令的信息,下次執行時就會默認執行hash中對應的命令,而不會再次查找

3、命令別名:

   獲取所有可用的別名的定義: ~]# alias

   定義別名:~]# alias NAME=’COMMAND’(注意名字最好是小寫字母,COMMAND如果當中沒用空格可以不加’’,僅對當前shell進程有效,其它用戶或再次登入無效)

   撤銷別名:~]# unalias NAME  

wKiom1eYCZDg6dacAAEOyUMm5vk677.jpg注意用alias定義的別名只對當前shell有效,從硬件角度說就是數據保存在內存中而非硬盤中,所以重新登陸重啓都會失效,如果想要永久有效則需要編輯.bashrc文件,將定義的別名寫入到文件中,相當於保存在硬盤中纔可以

   如果只想定義的別名自己使用,不影響別人則編輯用戶家目錄下的.bashrc文件

   ~]#vim .bashrc

   如果想對所有用戶有效則編輯全局/etc/.bashrc

wKioL1eYGWKCdSb_AAB0fXJatt8909.jpg

wKiom1eYGWOBX07VAABqYfrhMGw999.jpg此爲只對當前用戶生效

而上圖中source 雖然成功執行,但是並沒有成功改變設置,而重登賬戶才生效。

   注意有的髮型版本修改的是profile文件來實現的,這裏我簡單說一下我查閱的相關信息

/etc/profile:此文件爲系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行.並從/etc/profile.d目錄的配置文件中搜集shell的設置.

        也就是說這個文件裏的配置針對所有用戶和shell類型
/etc/bashrc:爲每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取.

        這個只針對所有使用shell類型爲bash的用戶有效
~/.bash_profile:每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc文件.

~/.bashrc:該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該該文件被讀取.類似的文件還有.cshrc、.tcshrc等

~/.bash_logout:當每次退出系統(退出bash shell)時,執行該文件.

       這些文件針對當前用戶的shell類型爲bash有效

  另外,/etc/profile中設定的變量(全局)的可以作用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承/etc/profile中的變量,他們是"父子"關係.
  ~/.bash_profile 是交互式、login 方式進入 bash 運行的
  ~/.bashrc 是交互式 non-login 方式進入 bash 運行的
  通常二者設置大致相同,所以通常前者會調用後者。

以上部分涉及變量問題,我們以後再深入探討,在這裏我們還沒有知識,所以不好理解,只是要有個概念


4、內部命令和外部命令

   在shell 中可執行的命令有兩類:內部命令:由shell自帶的,而且通過某命令形式提供,這些命令都是內嵌在shell內部的

       enable命令可以啓用或禁用內部命令:                     

                         enable -n COMMAND 禁用內部命令

                             enable CMOMMAND 啓用內部命令                       

                       外部命令:在當前系統的某文件系統路徑下有對應的可執行程序文件;which ,whereis;注意shell本身也是外部命令,因爲shell本身也存在所對應的可執行程序文件例如: /bin/sh、/bin/bash、/sbin/nologin、/bin/tcsh、/bin/csh、/usr/bin/sh、/usr/bin/bash等

                             which:查看外部命令路徑在$PATH變量裏面搜索

                             whereis:查看程序及其幫助文檔的路徑

                        區別當前使用的命令是內部或外部命令:

                                                #type COMMAND     

                                          內部:顯示builtin

                                          外部:顯示爲命令文件路徑,但不是絕對的,因爲有些文件有別名,別名我們上文說過

   

5、hash 命令:搜尋到的外部命令路徑結果緩存至 至kv(key-value) 存儲,

       hash  顯示hash緩存 

       hash -d COMMAND   刪除制定命令的hash緩存  

       hash –r 清除緩存

七、命令格式

 COMMAND [OPTIONS...] [ARGUMENTS...]

選項:用於啓用或關閉命令的某個或某些功能;

  短選項:-c,  例如:-l, -h 

             長選項:--word ,例如:--all, --human-readable 

                第一種:參數用一橫的說明後面的參數是字符形式。

                第二種:參數用兩橫的說明後面的參數是單詞形式。

               第三種:參數前有橫的是 System V風格。

                第四種:參數前沒有橫的是 BSD風格。

              有關System V和BSD的其他區別:

             系統啓動過程中 kernel 最後一步調用的是 init 程序,init 程序的執行有兩種風格,即 System V 和 BSD。

             System V 風格中 init 調用 /etc/inittab,BSD 風格調用 /etc/rc,它們的目的相同,都是根據 runlevel 執行一系列的程序。       

參數:命令的作用對象,比如文件名,用戶名等

注意:  

            1 、多選項,以及多參數和命令之間使用空白字符分隔

             eg:cp -r /usr/games /tmp 

            2 、取消和結束命令執行:Ctrl+c ,Ctrl+d

              在執行過程中可以Ctrl+c,中斷執行

            3 、多個命令可以用; 符號分開

              # cd /tmp;ll -a /tmp;cp -r /usr/games /tmp

            4 、一個命令可以用\分成多行

              eg:#pwd   查看當前工作目錄

wKioL1eYWVygBTT9AAA7NNIXGjo857.jpg

            5 、短選項可以合在一起使用,但有些命令的短選項是遵循一定順序的;

               eg:ls -l -h 可以爲   ls -lh  或   ls -hl

                  而gcc -o hello.c hello 和 gcc hello.c -o hello       

                    如果只做編譯,不做鏈接(-c 選項,只生成.o文件,不生成執行文件),參數順序沒有要求。

                    不同類的選項沒有順序要求(如多個 -I 屬於同一類)。

                    gcc在鏈接時,對參數中的庫的順序有要求,參數右側的庫會先於左側的庫加載;不同庫中有相同的符號定義時,鏈接順序不同會產生不同結果。

            6、長選項不能合併,有些選項可以帶參數:稱爲選項參數

                這個我還沒有接觸到,所以就不給大家例子啦,如果以後知道或者有知道的大神,請留言,我會及時更新,並表示感謝

八、命令行擴展、被括起來的集合

 命令行擴展:$( ) 或 ``

    把一個命令的輸出打印給另一個命令的參數

       $ echo "This system's name is $(hostname ) "

         This system's name is server1.example.com    主機名   所以小夥伴們的和我的例子應該不會一樣  

       $echo "i am `whoami ` "   whoami    用戶正在使用的賬號    

         i am root

   括號擴展:{ }

        打印重複字符串的簡化形式

         $ echo file{1,3,5}

           file1 file3 file5


  希望各位小夥伴們多多留言指教,學習就是要多交流,才能更快的積累學識,所以多多探討問題,很讓我們不知不覺間將理論變爲理解,從練習到實踐應用。

                爲所有每一刻爲了美好未來和理想而努力學習的我們 j_0003.gif



     

    

    






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章