尚硅谷韓順平Linux教程學習筆記

尚硅谷韓順平Linux教程學習筆記

寫在前面

學習連接:尚硅谷韓順平Linux教程前端

虛擬機

  • 虛擬機的網絡鏈接三種形式說明
    • 橋鏈接:Linux能夠和其餘的系統通訊。可是可能形成IP衝突。
    • NAT:網絡地址轉換方式:Linux能夠訪問外網,不會形成IP衝突。
    • 主機模式:你的Linux是一個獨立的主機,不能訪問外網。
  • vmtools:
    • 共享文件夾
    • 共享剪貼板

Linux目錄結構

Linux世界裏,一切皆文件。java

  • /bin:是Binary的縮寫,這個目錄存放着最常用的命令。
  • /sbin:s就是Super User的意思,這裏存放的是系統管理員使用的系統管理程序。
  • /home:存放普通用戶的主目錄,在Linux中每一個用戶都有一個本身的目錄,通常該目錄名是以用戶的帳號命名的。
  • /root:該目錄爲系統管理員,也稱做超級權限者的用戶主目錄。
  • /lib:系統開機所須要最基本的動態鏈接共享庫,其做用相似於Windows裏的DLL文件。幾乎全部的應用程序都須要用到這些共享庫。
  • /lost+found:這個目錄通常狀況下是空的,當系統非法關機後,這裏就存放了一些文件。
  • /etc:全部的系統管理所須要的配置文件和子目錄my.conf。
  • /usr:這是一個很是重要的目錄,用戶的不少應用程序和文件都放在這個目錄下,相似與windows下的program files目錄。
  • /boot:存放的是啓動Linux時使用的一些核心文件,包括一些鏈接文件以及鏡像文件。
  • /proc:這個目錄是一個虛擬的目錄,它是系統內存的映射,訪問這個目錄來獲取系統信息。
  • /srv:service的縮寫,該目錄存放一些服務啓動以後須要提供的數據。
  • /sys:這是linux2.6內核的一個很大的變化。該目錄下安裝了2.6內核中新出現的一個文件系統sysfs。
  • /tmp:這個目錄是用來存放一些臨時文件的。
  • /dev:相似windows的設備管理器,把全部的硬件用文件的形式存儲。
  • /media:linux系統會自動識別一些設備,例如U盤光驅等等,當識別後,linux會把識別的設備掛載到這個目錄下。
  • /mnt:系統提供該目錄是爲了讓用戶臨時掛載別的文件系統的,咱們能夠將外部的存儲掛載在/mnt/上,而後進入該目錄就能夠查看裏面的內容了。
  • /opt:這是給主機額外安裝軟件所擺放的目錄,如安裝ORACLE數據庫就可放到該目錄下。默認爲空。
  • /usr/local:這是另外一個給主機額外安裝軟件所安裝的目錄,通常是經過編譯源碼的方式安裝的程序。
  • /var:這個目錄中存放着在不斷擴充着的東西,習慣將常常被修改的目錄放在這個目錄下,包括各類日誌文件。
  • /selinux:SELinux是一種安全子系統,它能控制程序只能訪問特定文件。

總結:node

  1. Linux的目錄中有且只有一個根目錄。
  2. Linux的各個目錄存放的內容是規劃好,不用亂放文件。
  3. Linux是以文件的形式管理咱們的設備,所以linux系統,一切皆爲文件。
  4. Linux的各個文件目錄下存放什麼內容,必須有一個認識。

遠程登陸Linux系統

  • 遠程登陸:XShell5
  • 遠程上傳下載文件:Xftp5

vi和vim編輯器

  • 三種常見模式:python

    • 正常模式mysql

      在正常模式下,咱們可使用快捷鍵。linux

    • 插入模式/編輯模式c++

      在這個模式下,程序猿能夠輸入內容。git

    • 命令行模式github

      在這個模式中,能夠提供相關指令。

  • 快捷鍵使用練習:

    • yy:拷貝當前行
    • 5yy:拷貝當前5行
    • dd:刪除當前行
    • 5dd:刪除當前行向下的5行
    • 在文件中查找某個單詞:命令行輸入 /(查找內容),按n查找下一個
    • 設置文件行號:set nu,取消文件行號:set nonu
    • 編輯文件,正常模式下使用快捷鍵到達文檔最末行:G,最首行:gg
    • 撤銷輸入:在正常模式下輸入u
    • 編輯文件,光標移動到某行:shift+g
      • 顯示行號:set nu
      • 輸入行號這個數
      • 輸入shift+g

關機、重啓和用戶登陸註銷

  • shutdown -h now:表示當即關機
  • shutdown -h 1:表示1分鐘後關機
  • shutdown -r now:當即重啓
  • halt:直接使用,關機
  • reboot:重啓
  • sync:把內存的數據同步到磁盤上,當咱們關機或者重啓時,都應該先執行一下sync,防止數據丟失
  • logout:註銷用戶,在圖形運行級別無效,在運行級別3有效

用戶管理

用戶,組,家目錄。

  1. Linux系統是一個多用戶多任務的操做系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個帳號,而後以這個帳號的身份進入系統。
  2. Linux的用戶須要至少要屬於一個組。
  • 添加用戶:useradd [選項] 用戶名。
  • cd:表示change directory,切換目錄。
  • 當建立用戶成功後,會自動的建立和用戶同名的家目錄。
  • 也能夠經過useradd -d 指定目錄 新的用戶名。
  • 指定/修改密碼:passwd 用戶名
  • 刪除用戶,保留家目錄:userdel 用戶名,通常保留家目錄,由於幹過的活要留着
  • 刪除用戶以及家目錄:userdel -r 用戶名
  • 查詢用戶信息:id 用戶名
  • 切換用戶:su - 切換用戶名,從權限高切換到權限低的用戶不須要輸密碼
  • 返回切換前的用戶:exit
  • 查看當前用戶/登陸用戶:who am i
  • 用戶組:相似於角色,系統能夠對有共性的多個用戶進行統一的管理。
  • 增長組:groupadd 組名
  • 刪除組:groupdel 組名
  • 增長用戶時直接加上組:useradd -g 用戶組 用戶名
  • 修改用戶組:usermod -g 用戶組 用戶名
  1. /etc/passwd 文件
  • 用戶(user)的配置文件,記錄用戶的各類信息。
  • 每行的含義:用戶名:口令:用戶標識號:註釋性描述:主目錄:登陸shell
  1. /etc/shadow 文件
  • 口令配置文件
  • 每行的含義:登陸名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌
  1. /etc/group 文件
  • 組(group)的配置文件,記錄Linux包含的組的信息。
  • 每行含義:組名:口令:組標識號:組內用戶列表

實用指令

  • 指定運行級別(7個級別)

    1. 關機
    2. 單用戶【找回丟失密碼】
    3. 多用戶狀態沒有網絡服務
    4. 多用戶狀態有網絡服務
    5. 系統未使用保留給用戶
    6. 圖形界面
    7. 系統重啓
  • 系統的運行級別配置文件:/etc/inittab

  • 切換到指定運行級別的指令:init [012356]

  • 面試題:如何找回丟失的root密碼?:進入到單用戶模式,而後修改root密碼。由於進入單用戶模式,root不須要密碼就能夠登陸。【開機->在引導時輸入 回車鍵->看到一個界面輸入 e->看到一個新的界面,選中第二行(編輯內核),再輸入 e->在這行最後輸入 1,再輸入 回車鍵->再輸入b,這時就會進入到單用戶模式,使用passed來修改root密碼。】

  • 幫助指令:

    • man [命令或配置文件]
    • help
  • 文件目錄類

    • pwd:Print Working Directory,顯示當前工做目錄的絕對路徑。

    • ls:-a:顯示當前目錄全部的文件和目錄,包括隱藏的;-l:以列表的方式顯示信息。

    • cd:cd ~:回到本身的家目錄;cd ..:回到當前目錄的上一級目錄。

    • mkdir:建立目錄;-p:建立多級目錄。

    • rmdir:刪除空目錄。rmdir不能刪除非空的目錄。若是須要刪除非空的目錄,須要使用rm -rf。

    • touch:建立空文件。能夠一次性建立多個文件

    • cp:拷貝文件到指定目錄;-r:遞歸複製整個文件夾。強制覆蓋不提示的方法:cp命令改成\cp

    • rm:移除文件或目錄;-r:遞歸刪除整個文件夾;-f:強制刪除不提示。

    • mv:移動文件與目錄重命名,兩種功能!

    • cat:查看文件內容。只能瀏覽文件,而不能修改文件。-n:顯示行號。結尾加上 | more:分頁顯示,不會所有一下顯示完。

    • more:是一個基於VI編輯器的文本過濾器,它以全屏幕的方式按頁顯示文本文件的內容。more還內置了不少快捷鍵:

      操做 功能說明
      空白鍵(Space) 向下翻一頁
      Enter 向下翻一行
      q 馬上離開more,再也不顯示該文件內容
      Ctrl + F 向下滾動一屏
      Ctrl + B 返回上一屏
      = 輸出當前行的行號
      :f 輸出文件名和當前行的行號
    • less:用來分屏查看文件內容,與more類似,可是更強大,支持各類顯示終端。less指令在顯示文件內容時,並非一次將整個文件加載以後才顯示,而是根據顯示須要加載內容。對於顯示大型文件具備較高的效率。

    • >指令:輸出重定向。若是不存在會建立文件,不然會將原來的文件內容覆蓋。

    • >>指令:追加。若是不存在會建立文件,不然不會覆蓋原來的文件內容,而是追加到文件的尾部。

    • cat是查看,echo是寫入,echo (內容) >> 文件

    • cal:顯示當前月日曆。

    • echo:輸出內容到控制檯。

    • head:顯示文件的開頭部分。-n 5:看前面5行內容。

    • tail:輸出文件中尾部的內容。-n 5:看後面5行內容。-f:時事追蹤該文檔的全部更新

  • 時間日期類

    • date:顯示當前日期和時間
    • date 「+%Y」:顯示當前年份
    • date 「+%d」:顯示當前月份
    • date 「+%Y-%m-%d %H:%M:%S」:顯示年-月-日 時:分:秒
    • 設置日期:date -s 字符串時間
    • cal:查看日曆指令;cal 年份:顯示某一年一全年的日曆
  • 搜索查找類

    • find:從指定目錄向下遞歸的遍歷其各個子目錄,將知足條件的文件或者目錄顯示在終端。
      • find (搜索範圍) -name (文件名):按照指定的文件名查找模式查找文件。
      • find (搜索範圍) -user (用戶名):按照指定的用戶名查找模式查找文件。
      • find (搜索範圍) -size (+多少/-多少/多少):按照指定的文件大小查找模式查找文件(大於多少/小於多少/等於多少)
      • 查詢 /目錄下全部.txt的文件:find / -name *.txt
    • locate:locate (搜索文件)
      • 能夠快速定位文件路徑。locate指令利用事先創建的系統中全部文件名稱及路徑的locate數據庫實現快速定位給定的文件。locate指令無需遍歷整個文件系統,查詢速度較快。爲了保證查詢結果的準確度,管理員必須按期更新locate時刻。
      • 在第一次運行以前,必須使用updatedb指令建立locate數據庫。
    • grep:過濾查找,表示將前一個命令的處理結果輸出傳遞給後面的命令處理。常常跟管道一塊兒使用。
      • grep [選項] 查找內容 源文件
      • -n:顯示匹配行及行號。
      • -i:忽略大小寫字母。
      • cat hello.txt | grep yes
  • 壓縮和解壓類

    • gzip/gunzip:壓縮文件/解壓
      • gzip (文件):壓縮爲.gz文件,原來文件不保留
      • gunzip (文件):解壓縮,一樣也不保留源文件
    • zip/unzip:壓縮文件/解壓
      • zip [選項] (壓縮後文件xxx.zip) (將要壓縮的文件)
      • unzip [選項] (要解壓的文件xxx.zip)
      • zip -r:遞歸壓縮,即壓縮目錄
      • unzip -d (目錄):指定解壓後的文件的存放目錄
    • tar:打包指令,最後打包後的文件是.tar.gz的文件
      • tar [選項] xxx.tar.gz (打包的內容)
      • -c:產生.tar打包文件
      • -v:顯示詳細信息
      • -f:指定壓縮後的文件名
      • -z:打包同時壓縮
      • -x:解壓.tar文件
      • 壓縮:tar -zcvf (壓縮後文件名) (要壓縮的文件)
      • 解壓:tar -zxvf (要解壓的文件)
      • 解壓到指定目錄:tar -zxvf (要解壓的文件) -C (指定目錄),指定解壓到的目錄要存在。

組管理和權限管理

  • 文件:

    1. 全部者
    2. 所在組
    3. 其餘組
    4. 改變用戶所在組
  • 文件/目錄全部者:

    • 通常爲文件的建立者,誰建立了該文件,就天然的稱爲該文件的全部者。
    • 查看文件全部者:ls -ahl
    • 修改文件全部者:chown (用戶名) (文件名)
    • 文件所在組不必定是文件全部者。
  • 組的建立

    • groupadd (組名)
  • 文件/目錄所在組

    • 修改文件所在組:chgrp (組名) (文件名)
  • 其餘組

    • 除文件的全部者和所在組的用戶外,系統的其餘用戶都是文件的其餘組
  • 改變用戶所在組

    • 在添加用戶時,能夠指定將該用戶添加到哪一個組中,一樣的用root的管理權限能夠改變某個用戶所在的組
    • 改變用戶所在組:usermod -g 組名 用戶名
    • 改變用戶登陸的初始目錄:usermod -d 目錄名 用戶名
  • 權限的基本介紹

    • 文件類型:

      • -:普通類型
      • d:目錄
      • l:軟鏈接
      • c:字符設備【鍵盤、鼠標等】
      • b:塊文件【硬盤】
    • ls -l 顯示內容說明:

      • rw-:表示文件全部者權限(rw,讀寫)
      • r--:表示文件所在組的用戶的權限(r,只有讀的權限)
      • r--:表示文件其餘組的用戶的權限(r,只有讀的權限)
      • 1:若是是文件,表示硬鏈接的數;若是是目錄則表示該目錄的子目錄個數
      • tom:文件全部者
      • bandit:文件所在組
      • 0:文件的大小,0個字節;若是是目錄,則統一爲4096
      • July 1 13:40:文件最後的修改時間
      • ok.txt:文件名

      img

  • rwx權限詳解

    • rwx做用到文件:
      • r:read,可讀。讀取查看。
      • w:write,能夠修改。但不表明能夠刪除該文件。刪除一個文件的前提條件是對該文件所在的目錄有寫權限,才能刪除該文件。
      • x:execute,可執行。能夠被執行。
    • rwx做用到目錄:
      • r:能夠讀取,ls查看目錄內容。
      • w:能夠修改,目錄內建立+刪除+重命名目錄。
      • x:可執行,能夠進入該目錄。
  • 修改權限 chmod

    • 修改文件或者目錄的權限
    • u:全部者;g:所在組;o:其餘人;a:全部人(u、g、o的總和)
    • chmod u=rwx,g=rx,o=x 文件目錄名:分別權限
    • chmod o+w 文件目錄名:給其餘人都增長寫的權限
    • chmod a-x 文件目錄名:給全部的用戶都減掉執行權限
  • 經過數字變動權限

    • 規則:r=4 w=2 x=1 rwx=4+2+1=7
    • chmod u=rwx,g=rx,o=x 文件目錄名 等價於 chmod 751 文件目錄名
  • 修改文件全部者 chown

    • chown newowner file:改變文件的全部者
    • chown newowner:newgroup file:改變用戶的全部者和所在組
    • -R:若是是目錄,則使其下全部子文件或目錄遞歸生效
  • 修改文件所在組 chgrp

    • chgrp newgroup file:改變文件的全部組
    • -R:若是是目錄,則使其下全部子文件或目錄遞歸生效

定時任務調度

  • crond任務調度:crontab進行定時任務調度

    • crontab [選項]
    • -e:編輯crontab定時任務
    • -i:查詢crontab任務
    • -r:刪除當前用戶全部的crontab任務
    • -l:列出當前有哪些任務調度
    • service crond restart:重啓任務調度
    • 當保存退出後就生效了
    • 參數細節說明
    項目 含義 範圍
    第一個「*」 一小時當中的第幾分鐘 0-59
    第二個「*」 一天當中的第幾小時 0-23
    第三個「*」 一個月當中的第幾天 1-31
    第四個「*」 一年當中的第幾月 1-12
    第五個「*」 一週當中的星期幾 0-7(0和7都表明星期日)
  • 特殊符號說明

    • *:表明任什麼時候間。好比第一個*就表明一小時中每分鐘都執行一次的意思。
    • ,:表明不連續的時間。好比「0 8,12,16 * * *命令」,就表明在天天的8點0分,12點0分,16點0分都執行一次命令。
    • -:表明連續的時間範圍。好比「0 5 * * 1-6命令」,表明在週一到週六的凌晨5點0分執行命令。
    • /n:表明每隔多久執行一次。好比「/10 * * * 命令」,表明每隔10分鐘就執行一遍命令。

Linux磁盤分區、掛載

  • 分區的方式

    • mbr分區
      • 最多支持四個主分區
      • 系統只能安裝在主分區
      • 擴展分區要佔一個主分區
      • MBR最大隻支持2TB,但擁有最好的兼容性
    • gpt分區
      • 支持無限多個主分區(但操做系統可能限制,好比windows下最多128個分區)
      • 最大支持18EB的大容量(1EB=1024PB,PB=1024TB)
      • windows7 64位之後支持gpt
  • Linux分區

    • Linux來講不管有幾個分區,分給哪個目錄使用,它歸根結底就只有一個根目錄,一個獨立且惟一的文件結構,Linux中每一個分區都是用來組成整個文件系統的一部分。
    • Linux採用了一種叫作「載入」的處理方法,它的整個文件系統中包含了一整套的文件和目錄,且將一個分區和一個目錄聯繫起來。這時要載入的一個分區將使它的存儲空間在一個目錄下得到。
  • 硬盤說明

    • Linux硬盤分IDE硬盤和SCSI硬盤,目前基本上是SCSI硬盤
    • lsblk -f:查看當前系統的分區和掛載狀況。(list block)
  • 掛載的經典案例

    • 需求是給咱們的Linux系統增長一個新的硬盤,而且掛載到/home/newdisk
    1. 虛擬機添加硬盤
    2. 分區:fdsk /dev/sdb
    3. 格式化:mkfs -t ext4 /dev/sdb1
    4. 掛載:新建目錄:mkdir /home/newdisk;掛載:mount /dev/sdb1 /home/newdisk
    5. 設置能夠自動掛載(永久掛載):重啓系統後,仍然能夠掛載。vim etc/fstab 增長掛載信息。mount -a:生效
    • 取消掛載:unmount /dev/sdb1
  • 磁盤狀況查詢:df -h / df -l

  • 查詢指定目錄的磁盤佔用狀況:du -h /目錄,默認爲當前目錄

    • -s:指定目錄佔用大小彙總
    • -h:帶計量單位
    • -a:含文件
    • --max-depth=1:子目錄深度
    • -c:列出明細的同時,增長彙總值
  • 磁盤狀況-工做實用指令

    1. 統計/home文件夾下文件的個數:ls -l /home | grep "^-" | wc -l
    2. 統計/home文件夾下目錄的個數:ls -l /home | grep "^d" | wc -l
    3. 統計/home文件夾下文件的個數,包括子文件夾裏的:ls -lR /home | grep "^-" | wc -l
    4. 統計文件夾下目錄的個數,包括子文件夾裏的:ls -lR /home | grep "^d" | wc -l
    5. 以樹狀顯示目錄結構:首先安裝tree指令:yum install tree,tree

網絡配置

  • 指定固定IP:直接修改配置文件來指定IP,並能夠鏈接到外網,編輯:vim /etc/sysconfig/network-scripts/ifcfg-eth0
  • 重啓網絡服務:service network restart

進程管理

  • 在Linux中,每一個執行的程序(代碼)都稱爲一個進程。每一個進程都分配一個ID號
  • 每個進程,都會對應一個父進程,而這個父進程能夠複製多個子進程。例如www服務器。
  • 每一個進程均可能以兩種方式存在。前臺和後臺
    • 前臺進程:用戶目前的屏幕上能夠進行操做的。
    • 後臺進程:實際在操做,但因爲屏幕上沒法看到的進程,一般使用後臺方式執行。
  • 通常系統的服務都是之後臺進程的方式存在,並且都會常駐在系統中,直到關機才結束。
  • 顯示系統執行的進程
    • ps:查看目前系統中,有哪些正在執行,以及它們執行的情況。能夠不加任何參數。PID:進程識別號;TTY:終端機號;TIME:此進程所消耗的CPU時間;CMD:正在執行的命令或進程名
    • ps -a:顯示當前終端的全部進程信息。
    • ps -u:以用戶的格式顯示進程信息。
    • ps -x:顯示後臺進程運行的參數。
    • ps -axu | grep xxx:過濾獲得xxx的信息。
    • ps -ef:以全格式顯示當前全部的進程,查看進程的父進程。
    • -e:顯示全部進程。
    • -f:全格式。
  • 終止進程
    • kill [選項] 進程號:經過進程號殺死進程
    • killall 進程名稱:經過進程名稱殺死進程,也支持通配符,這在系統因負載過大而變得很慢時頗有用
    • -9:表示強迫進程馬上中止
    • 案例1:踢掉非法用戶:kill 進程號
    • 案例2:終止遠程登陸服務sshd,在適當時候再次重啓sshd服務
    • 案例3:終止多個gedit編輯器:killall 進程名稱
    • 案例4:強制殺掉一個終端:kill -9 進程號
  • 查看進程樹:pstree [選項]
    • -p:顯示進程的PID
    • -u:顯示進程的所屬用戶
  • 服務(service)管理
    • service管理指令:service 服務名 [start | stop | restart | reload | status]
    • 在CentOS7.0以後,再也不使用service,而是systemctl
    • 查看防火牆狀況:
      • service iptables status
      • systemctl status firewalld(7.0以後的版本)
    • 測試某個端口是否在監聽:telnet
    • 查看服務名:
      • 方式1:使用setup->系統服務就能夠看到
      • 方式2:/etc/init.d/服務名稱
    • 服務的運行級別(runlevel):
      • 查看或修改默認級別:vim /etc/inittab
      • 每一個服務對應的每一個運行級別均可以設置
    • 若是不當心將默認的運行級別設置成0或者6,怎麼處理?
      • 進入單用戶模式,修改爲正常的便可。
    • chkconfig:能夠給每一個服務的各個運行級別設置自啓動/關閉
    • 查看xxx服務:chkconfig –list | grep xxx
    • 查看服務的狀態:chkconfig 服務名 --list
    • 給服務的運行級別設置自啓動:chkconfig –level 5 服務名 on/off
    • 要全部運行級別關閉或開啓:chkconfig 服務名 on/off
  • 動態監控進程
    • top [選項]
    • top和ps命令很類似。它們都用來顯示正在執行的進程。top和ps最大的不一樣之處在於top在執行一段時間能夠更新正在運行的進程。
    • -d 秒數:指定top命令每隔幾秒更新。默認是3秒。
    • -i:使top不顯示任何閒置或者僵死進程。
    • -p:經過指定監控進程ID來僅僅監控某個進程的狀態。
    • 案例1:監控特定用戶:top查看進程;u輸入用戶名。
    • 案例2:終止指定的進程:top查看進程;k輸入要結束的進程。
    • 案例3:指定系統狀態更新的時間(每隔10秒自動更新,默認是3秒):top -d 10
    • 交互操做說明:
      • P:以CPU使用率排序,默認就是此項
      • M:之內存的使用率排序
      • N:以PID排序
      • q:退出top
  • 監控網絡狀態
    • netstat [選項]
    • -an:按必定順序排列輸出
    • -p:顯示哪一個進程在調用

RPM

  • RPM:RedHat Package Manager,紅帽軟件包管理工具。
  • RPM查詢已安裝的rpm列表:rpm -qa | grep xx
  • rpm包的其它查詢指令:
    • rpm -qa:查詢所安裝的全部rpm軟件包
    • rpm -qa | more
    • rpm -qa | grep xx
    • rpm -q xx:查詢xx軟件包是否安裝
    • rpm -qi xx:查詢軟件包信息
    • rpm -ql xx:查詢軟件包中的文件
    • rpm -qf 文件全路徑名:查詢文件所屬的軟件包
  • 卸載rpm包:rpm -e 軟件包名稱
  • 刪除時可能會發生依賴錯誤,忽視依賴強制刪除的方法:rpm -e --nodeps 軟件包名稱
  • 安裝rpm包:rpm -ivh 軟件包全路徑名稱
    • i=install:安裝
    • v=verbose:提示
    • h=hash:進度條

YUM

  • YUM:是一個shell前端軟件包管理器。基於RPM包管理,可以從指定的服務器自動下載RPM包並安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟件包。使用yum的前提是聯網。
  • yum list | grep xx:查詢yum服務器是否有須要安裝的軟件
  • yum install xx:安裝指定的yum包
  • yum -y remove xx:卸載指定的yum包

搭建JAVAEE環境

  1. 將軟件上傳到/opt下
  2. 解壓縮
  3. 配置環境變量的配置文件vim /etc/profile
    • JAVA_HOME=/opt/jdk1.7.0_79
    • PATH=/opt/jdk1.7.0_79/bin:$PATH
    • export JAVA_HOME PATH
    • 保存而後source /etc/profile生效

安裝Tomcat

  1. 解壓縮到/opt:tar -zxvf apache-tomcat-7.0.70.tar.gz
  2. 進入tomcat的bin目錄,啓動tomcat ./startup.sh:./startup.sh
  3. 開放端口 vim /etc/sysconfig/iptables
    • firewall-cmd --zone=public --add-port=8080/tcp --permanent(Centos7)
    • systemctl restart firewalld.service
    • firewall-cmd --reload
    • 重啓防火牆生效
  4. 測試是否安裝成功:在windows和Linux下訪問http://linuxip:8080

安裝Eclipse

  1. 解壓縮到/opt:tar -zxvf eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz
  2. 啓動eclipse,配置jre和server:./eclipse
  3. 編寫Hello world程序並測試成功
  4. 編寫jsp頁面,並測試成功

安裝mysql

  1. 查看是否有mysql:rpm -qa | grep mysql

  2. 刪除舊mysql:rpm -e –nopdeps mysql(強制刪除)

  3. 安裝環境:yum -y install make gcc-c++ cmake bison-devel ncurses-devel

  4. 解壓mysql:tar -zxvf mysql-5.6.14.tar.gz

  5. 進入mysql目錄

  6. 編譯安裝:

    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
    -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc
    -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1
    -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1
    -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306
    -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENHINE=1
    -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8
    -DDEFAULT_COLLATION=utf8_general_ci

  7. 編譯並安裝:make && make install

  8. 配置mysql,設置權限

    • 查看是否有mysql用戶和組:cat /etc/passwd,cat /etc/group

    • 添加mysql組:groupadd mysql

    • 添加mysql用戶並放在mysql組中:useradd -g mysql mysql

    • 修改/usr/local/mysql權限:chown -R mysql:mysql /usr/local/mysql/

    • 初始化mysql:

      scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
      --user=mysql

      若是報錯:Can't locate Data/Dumper.pm,則運行:yum install 'perl(Data::Dumper)',參考連接:https://www.cnblogs.com/yanghongfei/p/7118072.html

    • 刪除以前mysql的配置文件:mv /etc/my.cnf /etc/my.cnf.bak

  9. 啓動MySQL

    • 添加服務,拷貝服務腳本到init.d目錄,並設置開機啓動

    • [注意在 /usr/local/mysql 下執行]

      cp support-files/mysql.server /etc/init.d/mysql

      chkconfig mysql on

      service mysql start

    • 執行下面的命令修改root密碼

      cd /usr/local/mysql/bin

      ./mysql -u root -p

      set password = password('root');(quit退出mysql)

Shell編程

  • Shell是一個命令行解釋器,它爲用戶提供了一個向Linux內核發送請求以便裕興程序的界面系統級程序,用戶能夠用Shell來啓動、掛起、中止甚至是編寫一些程序。

  • Shell腳本的執行方式:

    • 腳本格式要求:
      • 腳本以#!/bin/bash 開頭
      • 腳本須要有可執行權限
    • 腳本的經常使用執行方式:
      • 方式1(輸入腳本的絕對路徑或相對路徑)
        • 首先要賦予xx.sh腳本的+x權限:chmod 744 myShell.sh
        • 執行腳本:./myShell.sh
      • 方式2(sh+腳本):
        • 說明:不用賦予+x權限,直接執行便可
        • sh ./myShell.sh
  • shell的變量

    • shell變量的介紹

      • Linux Shell的變量分爲,系統變量和用戶自定義變量
      • 系統變量:$HOME$PWD$SHELL$USER等等
      • 顯示當前shell中全部變量:set
    • shell變量的定義

      • 基本語法

        定義變量:變量=值,=兩邊不能有空格

        撤銷變量:unset 變量

        聲明靜態變量:readonly 變量,注意:不能unset

    • 定義變量的規則

      • 變量名稱能夠由字母、數字和下劃線組成,可是不能以數字開頭
      • 等號兩側不能有空格
      • 變量名稱通常習慣爲大寫
    • 將命令的返回值賦給變量

      • A=ls -la這裏有反引號(ESC下面),運行裏面的命令,並把結果返回給變量A
      • A=$(ls -la)等價於上面
  • 設置環境變量

    • 基本語法

      • export 變量名=變量值:將shell變量輸出爲環境變量

      • source 配置文件:讓修改後的配置文件信息當即生效

      • echo $變量名:查詢環境變量的值

      • 多行註釋:

        :<<!

        須要註釋的內容

        !

  • 位置參數變量

    • 當咱們執行一個shell腳本時,若是但願獲取到命令行的參數信息就可使用到位置參數變量。好比: ./myshell.sh 100 200,這個就是一個執行shell的命令行,能夠在myshell腳本中傳參100,200。
    • 基本語法:
      • $n:n爲數字,$0表明命令自己,$1-$9表明第一到第九個參數,10以上的參數須要用大括號包含,如${10}
      • $*:這個變量表明命令行中全部的參數,$*把全部的參數當作一個總體
      • $@:這個變量也表明命令行中全部的參數,不過$@把每一個參數區分對待
      • $#:這個變量表明命令行中全部參數的個數
  • 預約義變量

    • shell設計者事先已經定義好的變量,能夠直接在shell腳本中使用
    • 基本語法:
      • $$:當前進程的進程號(PID)
      • $!:後臺運行的最後一個進程的進程號(PID)
      • $?:最後一次執行的命令的返回狀態。若是這個變量的值爲0,證實上一個命令正確執行;若是這個變量的值爲非0(具體是哪一個數,由命令本身來決定),則證實上一個命令執行不正確。
      • 後臺運行:./myShell.sh &
  • 運算符

    • 在Shell中進行各類運算操做
    • $((運算式))」或「$[運算時]」
    • expr m + n,注意expr運算符間要有空格
    • expr m - n
    • expr \* / %,乘,除,取餘
  • 條件判斷

    • 基本語法:[ condition ],注意condition先後有空格!
    • 非空返回true,可以使用$?驗證(0爲true,>1爲false)
    • 兩個整數比較
      • =:字符串比較
      • -lt:小於
      • -le:小於等於
      • -eq:等於
      • -gt:大於
      • -ge:大於等於
      • -ne:不等於
    • 按照文件權限進行判斷
      • -r:有讀的權限
      • -w:有寫的權限
      • -x:有執行的權限
    • 按照文件類型進行判斷
      • -f:文件存在而且是一個常規的文件
      • -e:文件存在
      • -d:文件存在而且是一個目錄
  • 流程控制if語句

    • if判斷基本語法:

      if [ 條件判斷式 ];then

      程序

      fi

    • 或者:

      if [ 條件判斷式 ]

      ​ then

      ​ 程序

      elif [ 條件判斷式 ]

      ​ then

      ​ 程序

      fi

  • 流程控制case語句

    • case語句基本語法:

      case $變量名 in

      「值1」)

      若是變量的值等於值1,則執行程序1

      ;;

      「值2」)

      若是變量的值等於值2,則執行程序2

      ;;

      …省略其餘分支…

      *)

      若是變量的值都不是以上的值,則執行此程序

      ;;

      esac

  • 流程控制for循環

    • for循環基本語法1:

      for 變量 in 值1 值2 值3…

      ​ do

      ​ 程序

      ​ done

    • for循環基本語法2

      for ((初始值;循環控制條件;變量變化))

      ​ do

      ​ 程序

      ​ done

  • 流程控制while循環

    • while循環基本語法1:

      while [ 條件判斷式 ]

      ​ do

      ​ 程序

      ​ done

  • read讀取控制檯的輸入

    • read [選項] (參數)
    • -p:指定讀取值時的提示符
    • -t:指定讀取值時等待的時間(秒),若是沒有在指定的時間內輸入,就再也不等待了。
    • 參數:變量:指定讀取值的變量名
  • 函數

    • 系統函數

      • basename:返回完整路徑最後/的部分,經常使用於獲取文件名
        • basename [pathname] [suffix]
        • basename [string] [suffix]
        • basename命令會刪掉全部的前綴包括最後一個/
        • 選項:suffix爲後綴,若是suffix被指定了,basename會將pathname或string中的suffix去掉
      • dirname:返回完整路徑最後/的前面的部分,經常使用於返回路徑部分
        • dirname 文件絕對路徑:從給定的包含絕對路徑的文件名中出去文件名(非目錄部分),而後返回剩下的路徑(目錄部分)
      • 反正兩個系統函數都不要最後一個/
    • 自定義函數

      • 基本語法:

        function funname()

        {

        ​ Action;

        ​ [return int;]

        }

      • 調用直接寫函數名:funname(不用寫括號),而後在後面寫參數

Shell編程綜合案例

  • 需求分析

    1. 天天凌晨2:10備份數據庫atguiguDB到/data/backup/db
    2. 備份開始和備份結束可以給出相應的提示信息
    3. 備份後的文件要求以備份時間爲文件名,並打包成.tar.gz的形式,好比:2018-03-12_230201.tar.gz
    4. 在備份的同時,檢查是否有10天前備份的數據庫文件,若是有就將其刪除。
  • 若是報錯:mysqldump: command not found

    解決方案:

    1. 先找到mysqldump的位置:find / -name mysqldump -print
    2. 而後創建一個連接:ln -fs /usr/local/mysql/bin/mysql /usr/bin
  • crontab -e

  • 10 2 * * * /usr/sbin/mysql_backup_db.sh

Python定製篇 開發平臺Ubuntu

  • 設置Ubuntu支持中文

  • su root顯示認證失敗:是由於咱們尚未對root用戶設置密碼

  • 給root用戶設密碼:sudo passwd

  • 若是ubuntu沒有vim:apt install vim

  • apt軟件管理和遠程登陸

    • apt:Advanced Packaging Tool,是一款安裝包管理工具。在Ubuntu下,咱們可使用apt命令進行軟件包的安裝、刪除、清理等。

    • 經常使用命令:

      sudo apt-get update
      更新源
      sudo apt-get install package 安裝包
      sudo apt-get remove package 刪除包
      sudo apt-cache search package 搜索軟件包
      sudo apt-cache show package
      獲取包的相關信息,如說明、大小、版本等
      sudo apt-get install package --reinstall
      從新安裝包

      sudo apt-get -f install
      修復安裝
      sudo apt-get remove package --purge 刪除包,包括配置文件等
      sudo apt-get build-dep package 安裝相關的編譯環境

      sudo apt-get upgrade 更新已安裝的包
      sudo apt-get dist-upgrade 升級系統
      sudo apt-cache depends package 瞭解使用該包依賴那些包
      sudo apt-cache rdepends package 查看該包被哪些包依賴
      sudo apt-get source package
      下載該包的源代碼

    • 更新Ubuntu軟件下載地址

      • 查看Ubuntu版本:cat /proc/version
      • 須要修改的文件位置:/etc/apt/source.list
  • Windows使用SSH遠程登陸Ubuntu

    • 安裝SSH:sudo apt-get install openssh-server
    • 啓用SSH:service sshd start
  • Linux使用SSH遠程登陸Ubuntu

    • 同上
    • 基本語法:ssh 用戶名@IP
    • 例如:ssh atguigu@192.168.188.130
    • 使用shh訪問,如訪問出現錯誤。可查看是否有該文件 ~/.ssh/known_ssh,嘗試刪除該文件解決。
    • 登出:exit或者logout

個人CSDN:https://blog.csdn.net/qq_21579045

個人博客園:https://www.cnblogs.com/lyjun/

個人Github:https://github.com/TinyHandsome

紙上得來終覺淺,絕知此事要躬行~

歡迎你們過來OB~

by 李英俊小朋友

相關文章
相關標籤/搜索