linux(2)

1、軟硬件的體系結構:
  一、硬件體系: IPO
    Input Process 處理 Output
    輸入設備 ----- 主機 ----- 輸出設備
    (鍵盤、鼠標等) (顯示器、打印機等)
    (CPU、內存、硬盤)php

 

  二、軟件體系:主流的B/S、C/S架構爲例 三層架構
    如何搭建一個測試環境?
      根據需求,具體問題具體分析css

      被測系統 SUT
      ___________________________________
      Client -網絡- Application Server -網絡- DB Server
      客戶端 應用服務器 數據庫服務器
    1)硬件
      PC、移動設備 服務器、工做站、 服務器、工做站、
      小型機 小型機
    2)操做系統(系統軟件)
      PC:Windows/Linux/Mac Linux/Unix Linux/Unix
      移動:Android/IOS/WP
    3)中間件(提供特殊的公共服務的軟件)
      無 Web/應用服務器軟件 DBMS數據庫管理系統
      Tomcat/Weblogic容器 Mysql/Oracle/DB2
    4)應用程序
      B/S: 瀏覽器 部署Web App 搭建數據庫
      C/S: 各類App 企業級應用 維護表、數據等
        請求Request ---> 處理 ------> 增刪查改
        響應Response <--- <------html

      提示:多和開發方溝通,共同搭建整個測試環境;
        包括系統架構、需求方、產品經理、項目經理、測試經理、SA、DBA等,搭建環境是整個團隊的任務。
        系統管理員 數據庫管理員java

 

2、Linux/Unix系統基本層次結構
  從外到內:
  應用程序(用戶)<-> Linux操做系統 <-> 硬件
    (Shell <-> Kernel 內核)sql


  一、shell (直譯:外殼) 命令解釋器(翻譯、解釋命令)
    介於用戶和內核之間,提供與系統的命令交互;
    shell自己也是一個進程,具備啓動的命令
    表現形式:終端、命令行窗口
    常見的shell: bash csh sh ksh ... (都是命令 可執行文件)
    相似於Windows: cmd 命令行窗口
      C:\windows\system32\cmd.exe 可執行文件
    查看當前是什麼shell,使用查看進程的命令:ps
      不加選項 -ef 只能查看部分進程:
    進程id 僞終端號 啓動該進程的命令名
      PID TTY TIME CMD
      2487 pts/0 00:00:00 bash 當前默認shell進程
      2523 pts/0 00:00:00 ps
    能夠切換shell:
      csh
      sh
      bashshell

    PID TTY TIME CMD
    2487 pts/0 00:00:00 bash
    2526 pts/0 00:00:00 csh
    2547 pts/0 00:00:00 sh
    2549 pts/0 00:00:00 bash
    2570 pts/0 00:00:00 ps數據庫

    不一樣shell,區別在於使用方式有差異,支持的命令基本一致
    shell的切換的本質就是在當前shell進程中啓動子進程;
    exit能夠結束當前進程,返回父進程;
    最後一次exit表示退出登陸;
    剛登陸成功後,系統會默認啓動一個shell進程,當前是bash
    bash是目前經常使用的shell,符合大衆習慣。
    shell環境下能夠寫腳本:shell編程 -- shell腳本
      目的:對系統進行自動化管理、對測試進行輔助管理
      將一些命令聯合編寫爲代碼,有邏輯的運行。
      對命令的自動化的編程。編程

 

  二、Kernel 內核:和硬件交互,比較底層,將硬件管理起來,將硬件屏蔽掉。好比:swap space 交換區(虛擬內存)、文件系統File System等。
    Linux內核的五大功能:
      1)進程/處理器管理
      2)內存管理
      3)接口管理
      4)文件管理
      5)設備管理
    查看當前內核版本號:uname -r 2.4.20-8
      格式:主版本號.次版本號.修訂次數
        2.4
        2.5
        2.6 偶數相對穩定windows

 

  三、File System 文件系統:對Linux中的文件進行管理
    文件:包括文件、目錄、外部設備等都被系統當作文件來管理。 1.txt dir1 /dev/sda1
    好處:一視同仁,便於管理
      文件具備大量屬性
    文件的內容:保存的數據
    目錄的內容:管理子文件、子目錄的指向關係
      (關係表)瀏覽器

 

3、Linux的通用特性
  一、支持多用戶


  二、支持多任務


  三、支持用戶界面


  四、硬件的支持


  五、網絡鏈接


  六、可安裝網絡服務


  七、應用程序的支持

 

4、Linux/Unix經常使用命令
  一、執行命令的原理:
    執行命令,就會執行一個可執行文件,會啓動一個進程;
    好比:ps pwd ls date ...
      sleep 5 啓動sleep進程,等待5秒 單位:秒
    結束當前進程:ctrl + c 馬上交回終端
    # sleep 3000
    掛起當前進程:ctrl + z 也會交回終端
    查看後臺任務:jobs
    [1]+ Stopped sleep 3000
    # sleep 5000
    # ctrl + z
    # jobs
    [1]- Stopped sleep 3000
    [2]+ Stopped sleep 5000
    將後臺任務前置繼續運行:fg 任務號
    # fg 1
    # ctrl + c
    # fg 2
    # ctrl + c

 

  二、命令的幫助手冊:man 命令名
    Linux/Unix中提供命令的幫助手冊 manual
    提示:手冊中都是英文、專業術語較多,涉及系統知識
      建議選擇的查看,好比關心某選項,重點查看。
      daemon 精靈、精力充沛的人
        系統爲精靈進程、守護進程,系統啓動後默默一直提供基礎服務。
    好比:查看ls命令的用法
    # man ls
    控制方法: 空格 -- 翻頁
      回車 -- 跳行
      q -- 退出 quit

    ls - list directory contents 顯示目錄內容
      -l use a long listing format 使用長格式列表
        顯示文件/目錄的詳細屬性列表
    練習:查看man手冊,找出如何查看全部進程 ps命令
      ps -ef
      -e select all processes
      -f does full listing 全格式

 

  三、查看目錄下內容:ls 查看目錄下的內容
    1)ls -l 以長格式顯示文件/目錄的詳細屬性
      當前Linux中簡寫爲ll,不推薦使用,ls -l 更通用
      文件類型 權限 屬主 屬組 文件大小 最後一次修改時間
      -rw-r--r-- 1 root root 967 4月 25 19:19 1.txt
        硬連接數 文件/目錄名

      文件類型:- 文件 d 目錄
      權限:rw-r--r--
      屬主:該文件屬於哪一個用戶
      屬組:該用戶屬於哪一個組
      文件大小:單位 Byte

    2)ls -a a就是all 全部的
      顯示目錄下使有內容,包括隱藏的文件和目錄;
      規律:凡是以 . 開頭命名的文件或目錄,具備隱藏屬性
        好比:. .. 任何目錄下都有的隱藏目錄
          .bash_profile bash環境下的配置文件

    3)ls -al 或 -la 選項能夠組合搭配使用(功能的疊加)
      既能查看全部內容,還能查看內容的詳細屬性

    4)ls -R 將目錄層次展開
    5)ls -t 按照時間前後排序(最後一次修改時間)
      常常關注最近修改過的文件,好比日誌文件
    6)ls -lt 組合使用
    7)ls -F 查看文件類型
      普通文件 無後綴顯示
      目錄 /結尾
      可執行文件 *結尾
      分別到不一樣目錄下,查看文件類型:
        cd /root
        cd /
        cd /bin

    8)ls -ld 查看當前目錄的屬性
      查看/root目錄屬性,目前就在/root下
      以前作法:先回到上一層目錄,再查看 ls -l
        cd ..
        ls -l
      drwxr-x--- 4 root root 4096 2月 28 11:45 root

      目前作法:在當前目錄中直接查看
        ls -ld
      drwxr-x--- 4 root root 4096 2月 28 11:45 .

 

  四、清屏:clear
    Windows: cls Sqlplus: clear screen

    Linux/Unix的發展和產品介紹:
    Unix: 1969
      廠商: 產品:
      IBM AIX
      SUN Solaris
      HP UX

    Linux: 1991 1994 Linux之父:Linus 規範、標準
      (Linux is not Unix) 吉祥物:企鵝
      廠商:Red Hat 紅帽
        Red Flag 紅旗
        SUSE
        Ubuntu

    IOE架構:IBM服務器、AIX + Oracle DB + EMC磁盤陣列
      (主機)(Unix)中間件 數據庫 數據存儲
      優勢:服務好、功能強大、全面 缺點:成本高
    BAT推崇「去IOE」:
      好比LAMP: 普通PC的集羣做爲服務器主機 + Linux
        + Apache 服務器軟件 + Mysql DB + PHP 開發語言
        優勢:成本低、開源(二次開發)、可定製、靈活
        缺點:技術成本高

 

  五、磁盤分區
    /dev/sda 硬盤分爲三個區:
    分區設備名 掛載點 類型 大小
    /dev/sda1 /boot ext3 100M
    /dev/sda2 無 swap 2G 系統內核管理
    /dev/sda3 / ext3 6G

    分區設備名規律: /dev是設備目錄,下面有設備文件
      device
      Linux系統將全部設備,好比硬盤分區當作文件來管理
    /dev/hda1
      1) hd -- IDE硬盤,性能通常
      2) a -- 第一塊硬盤
      3) 1 -- 第1個分區
    /dev/sdb3
      1) sd -- SCSI硬盤,性能高
      2) b -- 第二塊硬盤
      3) 3 -- 第3個分區

    請分析如下名稱的含義
    /dev/sda1
    /dev/sda2
    /dev/sda3
    /dev/sdb1
    /dev/sdb2
    以上都是Linux系統中的設備文件,表示硬盤中的不一樣分區:
      a b sd 1 2 3 1 2
    一共有2塊SCSI硬盤,其中第一塊有3個分區,第二塊2個分區。

 

  六、查看磁盤空間狀況:fdisk -l
    應用場合:當系統出現運行忽然變慢等性能問題時,能夠查看Linux服務器的磁盤空間,肯定是否出現空間不足致使的性能瓶頸。好比:日誌文件、數據庫數據、文件上傳不斷佔據磁盤空間。
    練習:查看磁盤空間的狀況
    Disk /dev/sda: 8589 MB, 8589934592 bytes
    255 heads, 63 sectors/track, 1044 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System
    /dev/sda1 * 1 13 104391 83 Linux
    /dev/sda2 14 268 2048287+ 82 Linux swap
    /dev/sda3 269 1044 6233220 83 Linux

    Blocks:塊 數據塊 是爲了系統更好分配存儲範圍
    Id:idle 空閒的磁盤空間 83%

    補充:df -k -k表示 以KB爲單位
    文件系統 1K-塊 已用 可用 已用% 掛載點
    /dev/sda3 6135236 1064864 4758712 19% /
    /dev/sda1 101089 9425 86445 10% /boot
    none 515444 0 515444 0% /dev/shm

    補充:mount 掛載、查看掛載狀況
      mount 設備名 掛載點
      mount /dev/sda1 /boot
    執行mount:查看掛載狀況
    /dev/sda3 on / type ext3 (rw)
    none on /proc type proc (rw)
    usbdevfs on /proc/bus/usb type usbdevfs (rw)
    /dev/sda1 on /boot type ext3 (rw)
    none on /dev/pts type devpts (rw,gid=5,mode=620)
    none on /dev/shm type tmpfs (rw)

    查看文件詳細屬性:ls -l 文件名

 

  七、查看文件的內容:cat 文件路徑名 ...
    適合看小文件,由於不能翻頁
    # cd /root 技巧:cd /r Tab 自動補全 /root
    # ls
    # cat install.log cat ins Tab
    # date
    # cal
    # cal 5 2018
    平時命令執行的結果默認向 終端 輸出。(標準輸出)
    技巧:> 輸出重定向 (Windows/Linux/Unix中通用)
      將命令輸出的結果改變輸出到文件中,而不是終端
    # date > 1.txt
      自動新建一個文件1.txt,將date的結果寫入1.txt文件中
      便於保存執行結果
    # ls -l 1.txt 查看1.txt文件的屬性
    -rw-r--r-- 1 root root 29 7月 11 14:30 1.txt
    # cat 1.txt 查看1.txt文件的內容
    二 7月 11 14:30:04 CST 2017
    規律:OS認爲,文件有結束符 EOF 佔1個Byte
      End Of File
      文件底層存在文件指針,在讀取文件數據時能夠偏移位置;
      文件存在開始指針、結束符
    # cal > 1.txt 覆蓋
    # cat 1.txt

      > 輸出重定向,新的會覆蓋舊的
      >> 輸出追加劇定向,向原有文件結尾追加內容
    # date >> 1.txt
    # cal 10 2017 >> 1.txt
    # cat 1.txt

    用途:在Windows/Linux系統中,咱們能夠將某些命令輸出的結果寫入到文件中保存,做爲後續分析的依據,好比日誌、測試結果等。
      好比:adb shell monkey ... > 文件名

 

  八、目錄路徑的常見概念
    1)絕對路徑:從/開始表示的具體的路徑名
      /root 目錄名
      /etc
      /root/1.txt 文件名
      /etc/passwd

      查看/etc/passwd文件 的詳細屬性
      # ls -l /etc/passwd
      -rw-r--r-- 1 root root 1283 7月 10 19:42 /etc/passwd

    2)當前路徑:當前所在目錄的路徑名 pwd可查看
      好比目前在 /root
    3)相對路徑:至關於當前路徑表示的新路徑
      1.txt
      ../etc/passwd ..回到/目錄下,進入ect中找到passwd

      好比目前在/etc下 (當前路徑),須要表示/root/1.txt
        1) 絕對路徑:/root/1.txt
        2) 相對路徑:../root/1.txt

 

    4)主目錄:用戶登陸系統後,默認所在的目錄
      Home Directory(家目錄)
      普通用戶在其主目錄下擁有大量權限,出了此目錄,將會到處受挫;
      在建立新用戶時,會在/home目錄下新建該用戶的主目錄,其目錄名就是用戶名;
      root用戶的主目錄很特殊,就是/root;
      查看用戶帳戶文件:/etc/passwd
      每一行對應每一個系統帳戶的記錄信息
      每一列表示每一個帳戶的屬性
      # cat /etc/passwd
      用戶名:口令佔位符:uid:gid:描述:用戶主目錄:登陸shell
      root:x:0:0:root:/root:/bin/bash

      uid: 用戶id 用戶身份的惟一標識 root都是0
      gid: 組id
      登陸shell: bash 用戶剛登陸後默認使用的是bash

      技巧:快速回到主目錄
        cd 回車 或 cd ~ 回車
      說明:~ 代替用戶的主目錄 /root
      技巧:查看~的值 echo 名稱
      # echo ~ echo 本意:回聲
      # ehco Hello 原樣返回
      # echo $PATH echo $系統環境變量名
      查看系統環境變量PATH的值
      /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/usr/bin/jdk1.6/bin
      PATH的做用:命令的搜索路徑
        咱們能夠將經常使用的命令所在的路徑名添加到PATH的值中(Windows經過分號分隔,Linux/Unix經過冒號分隔),越靠前的越優先找到,就能夠在命令行中使用相對路徑簡化對命令的表達,不然會提示命令找不到。
        好比 ls 在 /bin下 /bin/ls

    5)當前目錄: .
      cd . 意義不大,還在當前目錄
      1.txt 相對路徑
      ./1.txt 代替絕對路徑 /root/1.txt

    6)上一層目錄: ..
      cd .. 回上一層目錄
      cd ../.. 連退兩層目錄

 

  九、建立目錄:mkdir 目錄路徑名
    # cd 回到root的主目錄 /root
    # pwd
    # mkdir test 建立一個test目錄
    # ls -l
    drwxr-xr-x 2 root root 4096 4月 26 15:44 test
    # cd test
    # ls 什麼都沒有
    # ls -la 只有 . 和 ..

    練習:在test目錄中繼續建立其它目錄層次
    # pwd 在/root/test下
    # mkdir dir1/dir2
    mkdir: 沒法建立目錄‘dir1/dir2’: 沒有那個文件或目錄
    注意:Linux/Unix中,須要加-p選項,才能一鼓作氣
    # mkdir -p dir1/dir2
    # ls -R 查看目錄下層次
    # ls -aR 包括隱藏資源
    # cd dir1 ls -al
      cd dir2 ls -al
    # pwd 在/root/test/dir1/dir2下
    回到test下:
    # cd ../..
      或 cd ~/test ~就是/root /root/test
    # mkdir dir3 dir4 dir5 依次建立多個目錄
    在主目錄下新建一個game目錄:
    # mkdir ~/game
    # cd
    # ls
    結論:操做的關鍵在於--如何表達路徑名

    技巧:經過startx 切換到圖形界面
    # startx
    在服務器中啓動圖形界面:
      桌面: root主目錄
        右鍵 -> 新建終端 shell 執行命令
        放大: ctrl shift +
        縮小: ctr -
    返回字符界面:小紅帽 -> 註銷

 

  十、新建文件:touch 文件路徑名
    說明:若是文件不存在,建立一個新的、空的文件(0字節); 若是文件存在,只會修改文件的最後一次修改時間。
    # cd ~/test
    # date > 1.txt 經過重定向生成一個1.txt文件
    # ls -l 1.txt 查看文件屬性
    # cat 1.txt 查看文件內容
    # touch 2.txt 建立一個空文件
    # ls -l *.txt 查看全部.txt文件的屬性
    # cat 2.txt
    # touch 1.txt
    # ls -l *.txt 1.txt最後一次修改時間 更新了
    # cat 1.txt 文件內容不變

 

  十一、Linux中命名規則、規範
    1)區分大小寫 F1 f1
    2)不能使用特殊字符: / * % " $ # 空格 ...
    3)以.開頭的,具備隱藏屬性
    4)若是無特殊要求,後綴沒有要求,後綴起到見名知意的做用:
      特殊要求的: plus
        .java .c .cpp .html .css .js .php .xml
        .class .pdf .zip .jar ...
      沒有特殊要求的:普通文本
        1.txt f1 f1.abc f1.abc.hello
      建議:好比shell腳本,建議使用.sh結尾 見名知意
        Tomcat6/bin目錄下:管理命令、啓動項
          startup.sh 啓動服務器的腳本
          shutdown.sh 關閉服務器的腳本

 

  十二、拷貝文件:cp 源文件路徑 新路徑
    (copy)目的:備份
    # cp 1.txt 11.txt 將1.txt備份爲11.txt
    # ls -l 1*.txt 查看1開頭 .txt結尾文件屬性
    # cat 1.txt 11.txt 依次顯示多個文件內容

 

  1三、移動文件:mv 源文件路徑 新路徑
    (move)本質:改變文件的絕對路徑名
    # mv 11.txt 22.txt 重命名
      源文件路徑:/root/test/11.txt
      新路徑: /root/test/22.txt

    綜合練習:在~/test下,新建d1和d2目錄;
      d1目錄下新建1.txt文件,文本內容Hello;
      對文件進行備份、重命名操做。
    1)在~/test下,新建d1和d2目錄
      # cd ~/test
      # mkdir d1
      # mkdir d2 或 mkdir d1 d2

    2)d1目錄下新建1.txt文件,文本內容Hello
      # cd d1
      # pwd 在/root/test/d1下
      # touch 1.txt
      # ls -l 1.txt
      # echo Hello >> 1.txt

    3)將d1下的1.txt備份爲11.txt
      # cp 1.txt 11.txt

    4)將d1下的1.txt備份到d2下,也叫1.txt
      # cp 1.txt ../d2
      # cd ../d2
      # pwd 在/root/test/d2下
      # ls -l
      # cat 1.txt

    5)將d1下的11.txt備份到d2中,還叫11.txt
      # cp ../d1/11.txt .

    6)將d1下的1.txt備份到d2中,叫111.txt
      # cp ../d1/1.txt ./111.txt

    7)將d1下的11.txt移動到d2中,叫22.txt
      # mv ../d1/11.txt ./22.txt
      # ls -l
      # cd ../d1
      # ls -l

 

  1四、刪除文件和目錄
    1)刪除文件:rm 文件路徑名
      (remove) rm -f 文件路徑名 關閉交互
      # rm 22.txt 有交互 y 刪除 n 不刪除
      # rm *.txt 刪除全部.txt文件 屢次交互
      # rm -f *.txt 關閉交互,刪除全部.txt文件
      如何強制刪除一些文件?
        思路:rm 文件名
          強制就是關閉交互,不用多問

    2)刪除空目錄:rmdir 目錄名
      # cd ~/test
      # rmdir d2 非空,不能刪除
      # rmdir d1 爲空,能夠刪除

    3)刪除非空目錄: rm -r 目錄名 存在交互
      rm -rf 目錄名 關閉交互
      # rm -r d2 y n
      # rm -rf d2

      用戶登陸:
        Username: jojo
        Password: bean
        Login
      安全測試:也稱爲滲透測試
        經過各類攻擊方式,對SUT進行安全方面的攻擊,測試SUT是否安全。
        常見的攻擊方式:xxx注入
        好比SQL注入攻擊 SQL Injection
          用戶(攻擊者)填寫的信息極可能成爲業務邏輯的一部分,從而改變原有的邏輯。

      用戶登陸:
        Username: jojo hello
        Password: bean 123' or '1'='1
          Login
      後臺SQL: 只要能查到結果 >0 說明存在,登陸成功
        select count(id) from user
        where username='jojo' and password='bean';
                真     真
                結果:針對

        select count(id) from user 結果>0         where username='hello' and password='123' or '1'='1';                 假     假                   假      永真式                     真

相關文章
相關標籤/搜索