Linux學(xué)習(xí)筆記

Linux
習(xí)慣問題:

  1. 在vim編輯時,按了ctrl + s后,再按ctrl + q就可以繼續(xù)執(zhí)行了。
    ctrl + s 表示停止向終端輸出
    ctrl + q 表示恢復(fù)向終端輸出

  2. 重啟reboot

  3. vi和vim使用方法
    打開一個文件:vi/vim xxx.xxx
    進(jìn)入插入模式:i/a
    進(jìn)入命令行模式:按Esc
    退出:q(沒有修改的退出) w(保存) wq(保存并退出) q!(強(qiáng)制退出,不保存修改)

  4. vi\vim快捷鍵
    1)拷貝當(dāng)前行 yy,拷貝當(dāng)前行下的5行 5yy,并粘貼(p)
    2)刪除當(dāng)前行 dd,刪除當(dāng)前行下的5行 5dd
    3)在文件中查找某個單詞[命令行下/關(guān)鍵字,回車查找,輸入n就是查找下一個]
    4)設(shè)置文件的行號,取消文件的行號 [命令行下 :set nu 和 :set nonu]
    5)編輯 /etc/profile文件,使用快捷鍵到底文檔的最末行[G]和最首行[gg]
    6)在一個文件中輸入 "hello",然后又撤銷這個動作 u
    7)編輯 /etc/profile文件,并將光標(biāo)移動到20行 輸入20 再shift+g
    PS:命令的執(zhí)行都是在正常模式,而不是插入模式下進(jìn)行。

  5. 關(guān)機(jī)&重啟命令
    shutdown
    shutdown -h now :立即關(guān)機(jī)
    shutdown -h 1 :1分鐘后關(guān)機(jī)
    shutdown -r now :立即重啟
    halt :直接使用,效果等價于關(guān)機(jī)
    reboot :重啟系統(tǒng)
    sync :把內(nèi)存的數(shù)據(jù)同步到磁盤上,防止丟失數(shù)據(jù)
    PS:當(dāng)關(guān)機(jī)或重啟時,都應(yīng)先執(zhí)行一次sync指令,把內(nèi)存的數(shù)據(jù)寫入磁盤,防止數(shù)據(jù)丟失

  6. 用戶的登錄和注銷
    1)登錄時盡量不用root賬號登錄,因?yàn)樗窍到y(tǒng)管理員,擁有最大權(quán)限,避免操作失誤,可以利用普通用戶登錄,登錄后再用"su - 用戶名"命令來切換成系統(tǒng)管理員身份
    2)在提示符下輸入 logout即可注銷用戶,只對遠(yuǎn)程登錄有用

  7. 用戶管理
    1)添加用戶 useradd [選項(xiàng)] 用戶名 如:useradd guest 就會創(chuàng)建一個guest用戶
    當(dāng)創(chuàng)建用戶成功后,會自動的創(chuàng)建和用戶同名的家目錄
    也可以通過useradd -d 指定目錄 新的用戶名,給新創(chuàng)建的用戶指定家目錄
    2)指定/修改密碼
    a. passwd 用戶名
    b. 輸入新的密碼
    c. 再次確認(rèn)輸入的密碼
    3)刪除用戶
    a. userdel 用戶名
    b. 刪除用戶,但保留家目錄 :userdel 用戶名
    c. 刪除用戶,同時刪除家目錄 :userdel -r 用戶名
    在刪除用戶時,我們一般不會把家目錄刪除掉
    4)查詢用戶信息 :id 用戶名
    5)切換用戶
    a. su - 用戶名
    b. su 用戶名
    c. exit 退出切換的用戶,回到root用戶上
    PS: su [user]切換到其他用戶,但是不切換環(huán)境變量,su - [user]則是完整的切換到新的用戶環(huán)境。
    6)查看當(dāng)前登錄用戶/使用用戶:whoami

  8. 用戶組
    1)增加組:groupadd 組名
    2)刪除組:groupdel 組名
    3)創(chuàng)建用戶的同時附屬的指定的組中:useradd -g 組名 用戶名
    4)修改用戶組:usermod -g 用戶組 用戶名
    5)/etc/passwd 用戶配置文件,記錄用戶的各種信息
    如:zwj:x:1002:1003::/home/zwj:/bin/bash
    root:x:0:0::/home/root:/bin/bash
    用戶名:口令:用戶id:組id::家目錄:shell
    每行的含義:用戶名:口令:用戶標(biāo)識號:組標(biāo)識號:注釋性描述:主目錄:登錄shell
    6)/etc/shadow 口令配置文件
    每行的含義:登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標(biāo)志
    7)/etc/group 組配置文件,記錄Linux包含的組的信息
    每行的含義:組名:口令:組標(biāo)識號:組內(nèi)用戶列表

  9. Linux的運(yùn)行級別
    0:關(guān)機(jī)
    1:單用戶(找回丟失密碼)
    2:多用戶無網(wǎng)絡(luò)服務(wù)
    3:多用戶有網(wǎng)絡(luò)服務(wù)
    4:系統(tǒng)未使用保留給用戶
    5:圖形界面
    6:系統(tǒng)重啟
    常用運(yùn)行級別是3和5,要修改的運(yùn)行級別可改文件/etc/inittab的id:5:initdefault:這一行中的數(shù)字
    命令:init[0123456]
    1)切換到指定運(yùn)行級別的指令
    systemctl set-default multi-user.target
    systemctl set-default graphical.target
    2)查看當(dāng)前的運(yùn)行級別的指令
    systemctl get-default

  10. 幫組指令
    1)man 指令
    2)help 指令

  11. 文件目錄指令
    1)pwd 顯示當(dāng)前工作目錄的絕對路徑
    2)ls 顯示路徑下的所有文件和目錄
    ls -a 顯示當(dāng)前目錄所有的文件和目錄,包括隱藏的。
    ls -l 以列表的方式顯示信息
    ls -a -l 以列表的形式顯示所有文件和目錄,包括隱藏的
    ls -al 和ls -a -l功能一致
    3)cd 切換目錄
    cd ~ 回到自己的家目錄
    cd .. 回到上一級路徑
    cd / 回到根路徑
    cd ../home 回到上一級路徑下home目錄中
    cd /home 回到根目錄下的home目錄中
    4)mkdir 創(chuàng)建目錄
    mkdir /home/dog 在/home路徑下創(chuàng)建dog目錄(只能創(chuàng)建單級目錄)
    mkdir -p /home/animal/tiger 在/home路徑下創(chuàng)建animal目錄并在animal目錄下創(chuàng)建tiger目錄(創(chuàng)建多級目錄)
    5)rmdir 刪除目錄
    rmdir /home/dog 刪除/home目錄下的dog目錄(刪除的是一個空目錄)
    rm -r /home/dog(刪除一個非空目錄,dog目錄下有一個test.txt文件)
    6)touch 文件名 創(chuàng)建一個空文件
    touch 1.txt 創(chuàng)建一個1.txt的空文件
    touch 1.txt 2.txt 創(chuàng)建了1.txt和2.txt兩個文件
    7)cp 拷貝文件
    語法:cp [選項(xiàng)] source dest
    cp aaa.txt bbb/ 把當(dāng)前目錄下aaa.txt文件拷貝到當(dāng)前目錄下的bbb目錄下(拷貝單個文件到指定的目錄中)
    cp -r test/ zwj/ 把當(dāng)前目錄下的test目錄拷貝到當(dāng)前目錄下的zwj目錄下(循環(huán)拷貝內(nèi)容到指定的目錄下)
    \cp -r test/ zwj/ (強(qiáng)制覆蓋)把當(dāng)前目錄下的test目錄拷貝到當(dāng)前目錄下的zwj目錄下(循環(huán)拷貝內(nèi)容到指定的目錄下)
    cp -r first/. second/ 把路徑first下面的內(nèi)容拷貝到second目錄下,如first目錄下有a.txt和b.txt兩個文件,second目錄下為空,結(jié)果是second目錄下有a.txt和b.txt兩個文件
    8)rm 移除文件或目錄
    語法:rm [選項(xiàng)] 要刪除的文件或目錄
    rm aaa.txt 刪除當(dāng)前目錄下的aaa.txt文件(需要確認(rèn))
    \rm aaa.txt 強(qiáng)制刪除當(dāng)前目錄下的aaa.txt文件(不需要確認(rèn))
    rm -f aaa.txt 強(qiáng)制刪除當(dāng)前目錄下的aaa.txt文件(不需要確認(rèn))
    rm -r bbb 刪除當(dāng)前目錄下的bbb目錄,依次進(jìn)入目錄進(jìn)行刪除
    \rm -r bbb (強(qiáng)制刪除)刪除當(dāng)前目錄下的bbb目錄,依次進(jìn)入目錄進(jìn)行刪除
    rm -rf bbb (強(qiáng)制刪除)刪除當(dāng)前目錄下的bbb目錄,依次進(jìn)入目錄進(jìn)行刪除
    9)mv 移動文件
    語法:mv 移動文件與目錄或重命名
    mv oldNameFile newNameFile 重命名
    mv /temp/movefile /targetFolder 移動文件
    10)cat 查看文件內(nèi)容,以只讀的方式
    語法:cat [選項(xiàng)] 要查看的文件
    常用選項(xiàng):
    -n :顯示行號
    cat /etc/profile 查看/etc/profile文件
    cat -n /etc/profile 查看/etc/profile文件,并顯示行號
    cat -n /etc/profile | more 查看/etc/profile文件,并顯示行號,分頁顯示,回車顯示下一行,空格鍵顯示下一頁
    11)more 基于vi編輯器的文本過濾器,它以全屏幕的方式按頁顯示文本的內(nèi)容
    more 要查看的文件
    回車顯示下一行,空格鍵顯示下一頁
    Ctrl+b 顯示上一頁
    q 退出
    12)less 分屏查看文件內(nèi)容,與more指令類似,但是比more指令更加強(qiáng)大,并不是一次將整個文件加載之后顯示,對于顯示大型文件具有較高的效率。
    less 要查看的文件
    回車顯示下一行,空格鍵顯示下一頁
    Ctrl+b 顯示上一頁
    q 退出
    13)> 指令和 >> 指令
    > 輸出重定向,會將文件原來的內(nèi)容覆蓋
    >> 追加,不會覆蓋文件原來的內(nèi)容,而是追加到文件的尾部
    基本語法:
    a. ls -l > 文件 列表的內(nèi)容寫入文件a.txt中(覆蓋寫)
    ls -l > a.txt 將ls -l 的顯示內(nèi)容覆蓋寫入到a.txt文件,如果文件不存在,就創(chuàng)建該文件。
    b. ls -al >> 文件 列表的內(nèi)容追加到文件aa.txt的末尾
    ls -l >> b.txt 將ls -l 的顯示內(nèi)容追加寫入到b.txt文件,如果文件不存在,就創(chuàng)建該文件。
    c. cat 文件1 > 文件2 將文件1的內(nèi)容覆蓋到文件2中
    d. echo "內(nèi)容" >> 文件
    e. cal >> /home/mycal 將當(dāng)前日歷信息追加到/home/的mycal文件中
    14)cal 顯示當(dāng)前日歷
    15)echo 輸出內(nèi)容到控制臺
    echo 輸出的內(nèi)容 輸出普通文本
    echo $PATH 輸出環(huán)境變量路徑
    16)head 顯示文件的開頭部分,默認(rèn)情況下head指令顯示文件的前10行內(nèi)容
    語法:
    head 文件 查看文件頭10行內(nèi)容
    head -n 5 文件 查看文件前5行內(nèi)容
    head -n 5 /etc/profile 查看/etc/profile的前面5行內(nèi)容
    17)tail 用于輸出文件中尾部的內(nèi)容,默認(rèn)情況下tail指令顯示文件的后10行內(nèi)容
    語法:(和head類似)
    tail 文件 查看文件后10行內(nèi)容
    tail -n 5 文件 查看文件后5行內(nèi)容
    tail -f 文件 實(shí)時追蹤該文檔的所欲更新,工作中經(jīng)常使用
    tail -n 5 /etc/profile 查看/etc/profile的后面5行內(nèi)容
    18)ln 創(chuàng)建源文件的軟鏈接也叫符號鏈接,類似于windows里的快捷方式
    ln -s 源文件或目錄 軟鏈接名
    ln -s /root/ myroot
    rm -rf myroot 刪除軟鏈接,刪除時,軟鏈接后面不能加/
    19)history 查看已經(jīng)執(zhí)行過歷史命令,也可以執(zhí)行歷史命令
    history 顯示所有執(zhí)行過的歷史指令
    history 10 顯示最近執(zhí)行的10個指令
    !178 執(zhí)行歷史指令中178的指令

  12. 時間日期類型的指令
    1)date 顯示當(dāng)前日期
    date +%Y 顯示當(dāng)前年份
    date +%m 顯示當(dāng)前月份
    date +%d 顯示當(dāng)前是哪一天
    date "+%Y-%m-%d %H:%M:%s" 顯示年月日時分秒
    date +%y 顯示年份的最后兩個數(shù),如:2018,就會顯示18
    date -s 字符串時間 設(shè)置日期指令
    date -s "2018-04-12 12:20:00" 把時間設(shè)置成2018年4月12日12點(diǎn)20分
    2)cal 查看日歷指令
    cal 顯示當(dāng)前的日歷
    cal 2020 顯示2020年全年的日歷

  13. 搜索查找類指令
    1)find 將從指定目錄向下遞歸的遍歷各個子目錄,將滿足添加的文件或目錄顯示在終端
    find 搜索范圍 選項(xiàng)
    選項(xiàng):
    -name<查詢方法> 按照指定的文件名查找模式查找
    -user<用戶名> 查找屬于指定用戶名所有文件
    -size<文件大小> 按照指定的文件大小查找文件,+n大于 -n小于 n等于
    find /home -name hello.txt
    find /opt -user nobody 查找/opt目錄下,用戶名為nobody的文件
    find / -size +20M 查找整個Linux系統(tǒng)下大于20M的文件
    find /opt *.txt 查找/opt目錄下,所有.txt文件
    2)locate 快速定位文件路徑
    使用locate之前需要調(diào)用updatedb命令更新數(shù)據(jù)庫
    locate 文件名
    3)grep和管道符號| grep過濾查找,管道符“|”表示將前一個命令的處理結(jié)果輸出傳遞給后面的命令處理
    grep 選項(xiàng) 查找內(nèi)容 源文件
    選項(xiàng):
    -n 顯示匹配行及行號
    -i 忽略字母大小寫
    cat hello.txt | grep -n yes 在hello.txt文件中,區(qū)分大小寫查找"yes"所在行,并顯示行號
    cat hello.txt | grep -ni yes 在hello.txt文件中,不區(qū)分大小寫查找"yes"所在行,并顯示行號
    4)

  14. 壓縮解壓類指令
    1)gzip/gunzip gzip只能用于壓縮文件,gunzip只能用于解壓文件
    gzip 文件名 壓縮文件,只能將文件壓縮為*.gz文件
    gunzip 文件.gz 解壓縮文件命令
    gzip /home/hello.txt 將/home/路徑下的hello.txt壓縮成hello.txt.gz文件,壓縮后hello.txt文件就不存在了
    gunzip /home/hello.txt.gz 將/home/路徑下的hello.txt.gz文件解壓成hello.txt文件
    2)zip/unzip zip用于壓縮文件,unzip用于解壓文件,這個在項(xiàng)目打包中很有用
    zip 選項(xiàng) XXX.zip 將要壓縮的內(nèi)容 壓縮文件和目錄的命令
    選項(xiàng):
    -r 遞歸壓縮,即壓縮目錄
    unzip 選項(xiàng) XXX.zip 解壓縮文件
    選項(xiàng):
    -d 目錄 指定解壓后文件的存放目錄
    zip -r mypackage.zip /home/ 將/home/路徑下的所有文件進(jìn)行壓縮成mypackage.zip文件
    unzip -d /opt/tmp/ mypackage.zip 將mypackage.zip解壓到/opt/tmp/路徑下
    3)tar 是打包指令,最后打包的文件是.tar.gz的文件
    tar 選項(xiàng) xxx.tar.gz 打包的內(nèi)容 打包目錄,壓縮后的文件格式.tar.gz
    選項(xiàng):
    -c 產(chǎn)生tar打包文件
    -v 顯示詳細(xì)信息
    -f 指定壓縮后的文件名
    -z 打包同時壓縮
    -x 解包.tar文件
    tar -zcvf a.tar.gz a1.txt a2.txt 壓縮多個文件,將/home/a1.txt 和 /home/a2.txt 壓縮成 a.tar.gz
    tar -zcvf myhome.tar.gz /home/ 將/home 的文件夾壓縮成 myhome.tar.gz
    tar -zxvf a.tar.gz 將a.tar.gz解壓到當(dāng)前目錄
    tar -zxvf myhome.tar.gz -C /opt/ 將myhome.tar.gz 解壓到 /opt/ 目錄下,解壓到指定的目錄下要事先存在,不然會報(bào)錯
    4)

  15. Linux的目錄結(jié)構(gòu):https://blog.csdn.net/m0_38044196/article/details/72844025
    ______________
    |------/bin User Binaries 用戶的二進(jìn)制文件,包含了二進(jìn)制可執(zhí)行文件
    |------/sbin System Binaries 系統(tǒng)的二進(jìn)制文件
    |------/etc Configuration Files 配置文件,包含所有程序所需的配置文件,也包含了用于啟動/停止單個程序的啟動和關(guān)閉shell腳本
    |------/dev Device Files 設(shè)備文件,包括終端設(shè)備、USB或連接到系統(tǒng)的任何設(shè)備
    |------/proc Process Information 進(jìn)程信息,包含系統(tǒng)進(jìn)程的相關(guān)信息
    |------/var Variable Files 變量文件,包括系統(tǒng)日志/var/log、包和數(shù)據(jù)庫文件、電子郵件/var/mail、打印隊(duì)列/var/spool、鎖文件/var/lock、啟動的臨時文件/var/tmp
    /-------|------/tmp Temporary Files 臨時文件,包含系統(tǒng)和用戶創(chuàng)建的臨時文件,當(dāng)系統(tǒng)重啟時,這個目錄下的文件將被刪除
    |------/usr User Programs 用戶程序,包含二進(jìn)制文件、庫文件、文檔和二級程序的源代碼,/usr/bin中包含用戶程序的二進(jìn)制文件,/usr/sbin系統(tǒng)管理員的二進(jìn)制文件
    |------/home Home Directories 所有用戶用home目錄來存儲他們的個人檔案
    |------/boot Boot Loader Files 包含引導(dǎo)加載程序相關(guān)的文件,內(nèi)核的initrd、vmlinux、grub文件位于/boot下
    |------/lib System Libraries 系統(tǒng)庫,包含支持位于/bin和/sbin下的二進(jìn)制文件的庫文件
    |------/opt Optional add-on Apps 可選的附加應(yīng)用程序,opt代表可選的
    |------/mnt Mount Directory 掛載目錄,臨時安裝目錄,系統(tǒng)管理員可以掛載文件系統(tǒng)
    |------/media Removable Devices 可移動媒體設(shè)備,用于掛載可移動設(shè)備的臨時目錄。
    |------/srv Service Data 服務(wù)數(shù)據(jù),包含服務(wù)器特定服務(wù)相關(guān)的數(shù)據(jù)
    ________________

  16. Linux組相關(guān)內(nèi)容 在Linux中的每個用戶必須屬于一個組,不能獨(dú)立于組外。在Linux中每個文件有所有者、所有組、其他組的概念
    1)文件/目錄所有者 一般為文件的創(chuàng)建者,誰創(chuàng)建了該文件,就自然的成為該文件的所有者。
    1.1)查看文件的所有者 當(dāng)某個用戶創(chuàng)建了一個文件后,文件所在的所有人默認(rèn)為該用戶
    ls -ahl 查看文件所有者命令,a:all h:humen l:list
    創(chuàng)建一個組police,再創(chuàng)建一個用戶tom,將tom放進(jìn)police組,然后用tom創(chuàng)建一個ok.txt文件
    a. groupadd police
    b. useradd -g police tom
    c. su - tom
    d. touch ok.txt
    e. ls -ahl
    1.2)修改文件的所有者
    chown 用戶名 文件名
    使用root創(chuàng)建一個apple.txt,然后將其所有者改為tom
    a. touch apple.txt
    b. chown tom apple.txt
    c. ls -ahl
    2)文件/目錄所在組 當(dāng)某個用戶創(chuàng)建了一個文件后,文件所在的組默認(rèn)為用戶所在的組
    2.1)查看文件/目錄所在組
    ls -ahl 查看文件所有者命令,a:all h:humen l:list(同查看文件的所有者命令)
    2.2)修改文件/目錄所在組
    chgrp 組名 文件名
    使用root用戶創(chuàng)建文件orange.txt,看看當(dāng)前這個文件屬于哪個組,然后將這個文件所在組,修改到police組
    a. touch orange.txt
    b. ls -ahl
    c. chgrp police orange.txt
    d. ls -ahl
    3)更改用戶所在的組 在添加用戶時,可以指定將該用戶添加到哪個組中,同樣的用root的管理權(quán)限可以改變某個用戶所在組。
    3.1)usermod -g 組名 用戶名
    3.2)usermod -d 目錄名 用戶名 改變該用戶登錄的初始目錄
    創(chuàng)建一個土匪組(bandit),將tom從原來所在的police組,修改到bandit(土匪)組

  17. 權(quán)限管理
    1)權(quán)限的基本介紹
    ls -l中顯示的內(nèi)容如下:
    -rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
    0-9 10 11 12 13 14 15
    0-9位說明:
    a. 第0位確定文件類型(d(目錄), -(普通文件), c(字符設(shè)備,如鍵盤、鼠標(biāo)), b(塊文件,如硬盤), l(軟鏈接))
    b. 第1-3位確定所有者(該文件的所有者)擁有該文件的權(quán)限。---->user
    c. 第4-6位確定所屬組(同用戶組)擁有該文件的權(quán)限。---->group
    e. 第7-9位確定其他用戶擁有該文件的權(quán)限。------>other
    ps: r:4 w:2 x:1 rwx:7
    rwx作用到文件:
    r:read讀權(quán)限,可以讀取,查看
    w:write寫權(quán)限,可以修改,但是不代表可以刪除該文件,刪除一個文件的前提是對該文件所在的目錄有寫權(quán)限,才能刪除該文件
    x:execute執(zhí)行權(quán)限,可以被執(zhí)行
    -:沒權(quán)限
    rwx作用到目錄:
    r:read讀權(quán)限,可以讀取,ls查看目錄內(nèi)容
    w:write寫權(quán)限,可以修改,目錄內(nèi)創(chuàng)建+刪除+重命名目錄
    x:execute執(zhí)行權(quán)限,可以進(jìn)入該目錄
    -:沒權(quán)限
    10:如果是文件,表示硬鏈接的數(shù)量,一般值為1;如果是目錄,代表著目錄下的子目錄個數(shù)(其中有兩個目錄是隱藏的:. 和 ..)
    11:所有者
    12:所屬組
    13:大小
    14:最后修改時間
    15:名稱
    2)權(quán)限管理 chmod 通過chmod指令,可以修改文件或者目錄權(quán)限
    2.1)+、-、=變更權(quán)限
    u:所有者,g:所有組,o:其他人,a:所有人(u, g, o的總和)
    a. chmod u=rwx,g=rx,o=x 文件目錄名 給文件或目錄設(shè)置權(quán)限r(nóng)wxrx---x
    b. chmod o+w 文件目錄名 給文件或目錄的其他人增加執(zhí)行權(quán)限
    c. chmod a-x 文件目錄名 給所有的用戶都去掉一個執(zhí)行權(quán)限
    chmod u=rwx,g=rx,o=rx abc 給abc文件設(shè)置所有者讀寫執(zhí)行、所屬組讀執(zhí)行、其他人讀執(zhí)行的權(quán)限
    chmod u-x,g+w abc 給abc文件的所有者去除執(zhí)行權(quán)限,增加組寫的權(quán)限
    chmod a+r 給abc文件的所有用戶添加讀的權(quán)限
    2.2)通過數(shù)字變更權(quán)限
    r:4,w:2,x:1 rwx=4+2+1=7
    chmod u=rwx,g=rx,o=x 文件名
    相當(dāng)于 chmod 751 文件名
    chmod 755 /home/abc.txt 將/home/abc.txt文件的權(quán)限修改成rwxr-xr-x,使用數(shù)字的方式實(shí)現(xiàn)
    3)修改文件所有者
    3.1)chown newowner file 改變文件的所有者
    3.2)chown newowner:newgroup file 改變文件的所有者和所有組
    -R 如果是目錄,則使其下的所有子文件或目錄遞歸生效
    chown tom /home/abc.txt 將/home/abc.txt 文件的所有者改為tom
    chown -R tom /home/kkk 將/home/kkk 目錄下所有的文檔和目錄的所有者都修改成tom
    4)修改文件所有組
    4.1)chgrp newgroup file 改變文件的所屬組
    -R 如果是目錄,則使其下的所有子文件或目錄遞歸生效
    chgrp bandit abc.txt 把a(bǔ)bc.txt文件的所在組修改成bandit(土匪)組
    chgrp -R bandit kkk 把kkk目錄下所有的文檔和目錄的所在組都修改成bandit(土匪)組
    5)權(quán)限管理實(shí)踐
    police, bandit
    jack,jerry:警察
    xh,xd:土匪
    (1) 創(chuàng)建組police和bandit
    (2) 創(chuàng)建用戶jack、jerry、xh、xq
    (3) jack創(chuàng)建了一個文件,自己可以讀寫,本組人可以讀,其他人沒有任何權(quán)限
    (4) jack修改該文件,讓其他人可以讀,本組人可以讀寫
    (5) xh投靠警察,看看是否可以讀寫
    a. groupadd police
    b. groupadd bandit
    c. useradd -g police jack
    d. useradd -g police jerry
    e. useradd -g bandit xh
    f. useradd -g bandit xq
    g. jack: touch jack01.txt
    h. jack: chmod 640 jack01.txt
    i. jack: chmod g+w,o+r jack01.txt
    j. root: usermod -g police xh
    k.
    ps: 文件夾對應(yīng)成員的權(quán)限為r-x時,用戶才能進(jìn)入該目錄

  18. crond 任務(wù)調(diào)度 進(jìn)行定時任務(wù)的設(shè)置
    1)概述
    任務(wù)調(diào)度:是指系統(tǒng)在某個時間執(zhí)行的特定的命令或程序。
    任務(wù)調(diào)度分類:1.系統(tǒng)工作:有些重要的工作必須周而復(fù)始的執(zhí)行。如病毒掃描等
    2.個別用戶工作:個別用戶可能希望執(zhí)行某些程序,比如對mysql數(shù)據(jù)庫的備份
    2)基本語法
    crontab [選項(xiàng)]
    常用選項(xiàng):
    -e 編輯crontab定時任務(wù)
    -l 查詢crontab任務(wù)
    -r 刪除當(dāng)前用戶所有的crontab任務(wù)
    crontab -e 編輯一個定時任務(wù),在保存退出后就開始執(zhí)行
    crontab -l 列出當(dāng)前有哪些任務(wù)調(diào)度
    crontab -r 刪除所有的任務(wù)調(diào)度
    service crond restart 重啟任務(wù)調(diào)度
    3)入門案列
    設(shè)置任務(wù)調(diào)度文件:/etc/crontab
    設(shè)置個人任務(wù)調(diào)度。執(zhí)行crontab -e命令。
    接著輸入任務(wù)到調(diào)度文件
    如:/1 * * * * ls -l /etc/ > /tmp/to.txt
    意思說每小時的每分鐘執(zhí)行l(wèi)s -l /etc/ > /tmp/to.txt命令
    參數(shù)細(xì)節(jié)說明
    項(xiàng)目 含義 范圍
    第一個"
    " 一小時當(dāng)中的第幾分鐘 0-59
    第二個"" 一天當(dāng)中的第幾小時 0-23
    第三個"
    " 一個月當(dāng)中的第幾天 1-31
    第四個"" 一年當(dāng)中的第幾月 1-12
    第五個"
    " 一周當(dāng)中的星期幾 0-7
    參數(shù)特殊符號說明
    * 代表任何時間,比如第一個""就代表著一小時中每分鐘都執(zhí)行一次的意思。
    , 代表著不連續(xù)的時間。比如"0 8,12,16 * * * 命令",就代表著在每天的8點(diǎn)0分,12點(diǎn)0分,16點(diǎn)0分都執(zhí)行一次命令
    - 代表連續(xù)的時間范圍。比如"0 5 * * 1-6 命令",代表著周一到周六凌晨5點(diǎn)0分執(zhí)行命令
    /n 代表著每隔多久執(zhí)行一次。比如"/10 * * * * 命令",代表每隔10分鐘就執(zhí)行一次命令
    步驟:
    a. crontab -e
    b. 輸入:
    /1 * * * * ls -l /etc/ >> /tmp/to.txt
    c. 保存退出后就生效
    d. 在每一分鐘都會自動的調(diào)用 ls -l /etc/ >> /tmp/to.txt 命令
    特定時間執(zhí)行案列
    45 22 * * * 命令 在每天22點(diǎn)45分執(zhí)行命令
    0 17 * * 1 命令 在每周一的17點(diǎn)0分執(zhí)行命令
    0 5 1,15 * * 命令 在每月的1號15號的5點(diǎn)0分執(zhí)行命令
    40 4 * * 1-5 命令 在每周一到周五的4點(diǎn)40分執(zhí)行命令
    */10 4 * * * 命令 在每天的4點(diǎn)每隔10分鐘執(zhí)行一次命令
    0 0 1,15 * 1 命令 在每月1號和15號,每周1的0點(diǎn)0分都會執(zhí)行一次命令
    4)應(yīng)用實(shí)例
    案例1:每隔1分鐘,就將當(dāng)前的日期信息,追加到/tmp/mydate 文件中
    a. 先編寫一個文件 /home/mytask1.sh
    date >> /tmp/mydate
    b. 給mytask1.sh 一個可執(zhí)行權(quán)限
    chmod 744 mytask1.sh
    c. crontab -e
    d. */1 * * * * /home/mytask1.sh
    e. 成功
    案例2:每隔1分鐘,將當(dāng)前日期和日歷都追加到/home/mycal 文件中
    a. 先編寫一個文件 /home/mytask2.sh
    date >> /tmp/mycal
    cal >> /tmp/mycal
    b. 給mytask1.sh 一個可執(zhí)行權(quán)限
    chmod 744 mytasks.sh
    c. crontab -e
    d. */1 * * * * /home/mytask2.sh
    e. 成功
    案例3:每天凌晨2:00將mysql數(shù)據(jù)庫testdb,備份到文件中 mydb.bak。
    a. 先編寫一個文件 /home/mytask3.sh
    /usr/local/mysql/bin/mysqldump -uroot -proot testdb > /tmp/mydb.bak
    b. 給mytask1.sh 一個可執(zhí)行權(quán)限
    chmod 744 mytask3.sh
    c. crontab -e
    d. 0 2 * * * /home/mytask3.sh
    e. 成功

  19. Linux磁盤分區(qū)、掛載
    1)分區(qū)基礎(chǔ)知識
    分區(qū)的方式:
    1.1)mbr分區(qū):
    1. 最多支持四個主分區(qū)
    2. 系統(tǒng)只能安裝在主分區(qū)
    3. 擴(kuò)展分區(qū)要占一個主分區(qū)
    4. MBR最大只支持2TB,但擁有最好的兼容性
    1.2)gtp分區(qū):
    1. 支持無限多個主分區(qū)(但操作系統(tǒng)可能限制,比如window下最多128個分區(qū))
    2. 最大支持18EB的大容量(1EB=1024PB,1PB=1024TB)
    3. window7 64位以后支持gtp
    2)Linux分區(qū)
    原理介紹:
    2.1)Linux來說無論有幾個分區(qū),分給哪一目錄使用,它歸根結(jié)底就只有一個根目錄,一個獨(dú)立且唯一的文件結(jié)構(gòu),Linux中每個分區(qū)都是用來組成整個文件系統(tǒng)的一部分。
    2.2)Linux采用了一種叫“載入”的處理方法,它的整個文件系統(tǒng)中包含了一整套的文件和目錄,且將一個分區(qū)和一個目錄聯(lián)系起來。這時要載入的一個分區(qū)將使它的存儲空間在一個目錄下獲得。
    lsblk -f 查看系統(tǒng)的分區(qū)和掛載的情況
    lsblk 可以查看分區(qū)的大小
    ps:記憶命令的方法:老師不離開 lsblk
    3) 掛載的經(jīng)典案例
    需求是給我們的Linux系統(tǒng)增加一個新的硬盤,并且掛載到/home/newdisk
    3.1)如何增加一塊硬盤
    a. 虛擬機(jī)添加硬盤 通過虛擬機(jī)操作添加,然后重啟centos系統(tǒng)
    在[虛擬機(jī)]菜單中,選擇[設(shè)置],然后在設(shè)備列表中添加硬盤,然后一路[下一步],中間只有選擇磁盤大小的地方需要修改,直到完成,然后重啟系統(tǒng)(才能識別)!
    b. 分區(qū) fdisk /dev/sdb
    開始分區(qū)后輸入n,然后選擇p,分區(qū)類型為主分區(qū)。兩次回車默認(rèn)剩余全部空間。最后輸入w寫入分區(qū)并退出,若不保存退出輸入q。
    c. 格式化 mkfs -t ext4 /dev/sdb1
    d. 掛載 先創(chuàng)建一個目錄/home/newdisk,掛載mount /dev/sdb1 /home/newdisk
    e. 設(shè)置可以自動掛載(永久掛載,當(dāng)你重啟系統(tǒng),仍然可以掛載到/home/newdisk)
    1. vim /etc/fstab
    2. 添加一個掛載記錄,如:/dev/sdb1 /home/newdisk ext4 default 0 0
    3. mount -a
    ps: 卸載磁盤的命令 umount /home/newdisk
    4)磁盤情況查詢
    4.1)查詢系統(tǒng)整體磁盤使用情況
    df -h
    4.2)查詢指定目錄的磁盤占用情況
    du 選項(xiàng) /目錄
    選項(xiàng):
    -s 指定目錄占用大小匯總
    -h 帶計(jì)量單位
    -a 含文件
    --max-depth=1 子目錄深度
    -c 列出明細(xì)的同時,增加匯總值
    案例:查詢/opt/目錄的磁盤占用情況,深度為1
    du -ach --max-depth=1 /opt/
    4.3)磁盤情況-工作實(shí)用指令
    1)統(tǒng)計(jì)/home文件夾下文件的個數(shù)
    ls -l /home | grep "^-" | wc -l
    2)統(tǒng)計(jì)/home文件夾下目錄的個數(shù)
    ls -l /home | grep "^d" | wc -l
    3)統(tǒng)計(jì)/home文件夾下文件的個數(shù),包括子文件夾里的文件
    ls -lR /home | grep "^-" | wc -l
    4)統(tǒng)計(jì)文件夾下目錄的個數(shù),包括子文件夾里的
    ls -lR /home | grep "^d" | wc -l
    5)以樹狀顯示目錄結(jié)構(gòu)
    tree 顯示根目錄下的文件及目錄樹形結(jié)構(gòu)
    tree 目錄 顯示指定目錄下的文件及目樹形錄結(jié)構(gòu)

  20. Linux網(wǎng)絡(luò)配置
    1)Linux網(wǎng)絡(luò)配置原理圖(含虛擬機(jī))
    目前我們的網(wǎng)絡(luò)配置采用的是NAT模式。
    2)查看網(wǎng)絡(luò)IP和網(wǎng)關(guān)
    3)ping 測試主機(jī)之間網(wǎng)絡(luò)連通
    4)Linux網(wǎng)絡(luò)環(huán)境配置
    4.1)自動獲取
    缺點(diǎn):Linux啟動后悔自動獲取IP,缺點(diǎn)是每次自動獲取的ip可能不一樣,這個不適用于做服務(wù)器,因?yàn)槲覀兊姆?wù)器的ip需要是固定的。
    4.2)指定固定的ip
    直接修改配置文件來指定IP,并可以連接到外網(wǎng)(程序員推薦),編輯vi /etc/sysconfig/network-scripts/ifcfg-eth0
    要求:將ip地址配置成靜態(tài)的,ip地址為192.168.184.130
    ps:修改后需要重啟一下服務(wù),有兩種方式:
    1. 重啟系統(tǒng)
    2. 重啟網(wǎng)絡(luò)服務(wù) :service network restart

  21. 進(jìn)程管理
    1)基本介紹
    1.1)在Linux中,每個執(zhí)行的程序(代碼)都稱為一個進(jìn)程。每一個進(jìn)程都分配一個ID號。
    1.2)每一個進(jìn)程,都會對應(yīng)一個父進(jìn)程,而這個父進(jìn)程可以復(fù)制多個子進(jìn)程。例如www服務(wù)器
    1.3)每個進(jìn)程都可能以兩種方式存在的。前臺與后臺,所謂前臺進(jìn)程就是用戶目前的屏幕上可以進(jìn)行操作的。后臺進(jìn)程則是實(shí)際在操作,但由于屏幕上無法看到的進(jìn)程,通常使用后臺方式執(zhí)行。
    1.4)一般系統(tǒng)的服務(wù)都是以后臺進(jìn)程的方式存在,而且都會常駐在系統(tǒng)中,知道關(guān)機(jī)才結(jié)束。
    2)顯示系統(tǒng)執(zhí)行的進(jìn)程
    基本介紹:
    ps命令用來查看目前系統(tǒng)中,有哪些正在執(zhí)行,以及它們執(zhí)行的情況??梢圆患尤魏螀?shù)。
    ps顯示的信息選項(xiàng):
    PID 進(jìn)程識別號
    TTY 終端機(jī)號
    TIME 此進(jìn)程所消耗cpu時間
    CMD 正在執(zhí)行的命令或進(jìn)程名
    ps -a 顯示當(dāng)前終端的所有進(jìn)程信息
    ps -u 以用戶的格式顯示進(jìn)程信息
    ps -x 顯示后臺進(jìn)程運(yùn)行的參數(shù)
    說明:查看進(jìn)程使用的指令是 ps,一般來說使用的參數(shù)是 ps -aux

    ps詳解:
    a. 指令:ps -aux | grep xxx
    USER    PID    %CPU    %MEM    VSZ    RSZ    TTY    STAT    START    TIME    COMMAND
    System V展示風(fēng)格
    USER:用戶名陳
    PID:進(jìn)程號
    %CPU:進(jìn)程占用CPU的百分比
    %MEM:進(jìn)程占用物理內(nèi)存的百分比
    VSZ:進(jìn)程占用的虛擬內(nèi)存大小(單位:KB)
    RSS:進(jìn)程占用的物理內(nèi)存大小(單位:KB)
    TTY:終端名稱,縮寫
    STAT:進(jìn)程的狀態(tài) S:休眠 s:是會話的先導(dǎo)進(jìn)程 N:擁有比普通優(yōu)先級更低的優(yōu)先級 R:正在運(yùn)行 D:短期等待 Z:僵尸進(jìn)程 T:被跟蹤或被停止
    START:進(jìn)程的啟動時間
    TIME:進(jìn)程使用cpu的總時間
    COMMAND:啟動進(jìn)程所用的命令和參數(shù),如果過長會被截?cái)囡@示
    

    3)應(yīng)用實(shí)例
    要求:以全格式顯示當(dāng)前所有的進(jìn)程,查看進(jìn)程的父進(jìn)程
    ps -ef 是以全格式顯示當(dāng)前所有的進(jìn)程
    -e 顯示所有進(jìn)程 -f 全格式
    ps -ef | grep xxx
    是BSD風(fēng)格
    UID:用戶ID
    PID:進(jìn)程ID
    PPID:父進(jìn)程ID
    C:CPU用于計(jì)算機(jī)執(zhí)行優(yōu)先級的因子。數(shù)值越大,表明進(jìn)程是CPU密集型運(yùn)算,執(zhí)行優(yōu)先級會越低;數(shù)值越小,表明進(jìn)程是I/O密集型運(yùn)算,執(zhí)行優(yōu)先級會提高
    STIME:進(jìn)程啟動的時間
    TTY:完整的終端名稱
    TIME:CPU時間
    CMD:啟動進(jìn)程所用的命令和參數(shù)
    思考:如果我們希望查看sshd進(jìn)程的父進(jìn)程號是多少,應(yīng)該怎樣查詢?
    ps -ef | grep sshd
    4)終止進(jìn)程kill和killall
    4.1)介紹
    若是某個進(jìn)程執(zhí)行一般需要停止時,或是已消耗了很大的系統(tǒng)資源時,此時可以考慮停止該進(jìn)程,使用kill命令來完成此項(xiàng)任務(wù)。
    4.2)基本語法
    kill 選項(xiàng) 進(jìn)程號 通過進(jìn)程號殺死進(jìn)程
    killall 進(jìn)程名稱 通過進(jìn)程名稱殺死進(jìn)程,也支持通配符,這在系統(tǒng)因負(fù)載過大而變得很慢時很有用
    4.3)常用選項(xiàng)
    -9 表示強(qiáng)迫進(jìn)程立即停止
    4.4)最佳實(shí)踐
    案例1:踢掉某個非法登錄用戶
    a. ps -aux | grep sshd 找到對應(yīng)的進(jìn)程id
    b. kill 4010 kill掉進(jìn)程id對應(yīng)的進(jìn)程
    案例2:終止遠(yuǎn)程登錄服務(wù)sshd,在適當(dāng)時候再次重啟sshd服務(wù)
    a. ps -aux | grep sshd 找到對應(yīng)的進(jìn)程id
    b. kill 3908 kill掉進(jìn)程id對應(yīng)的進(jìn)程
    案例3:終止多個gedit編輯器[killall,通過進(jìn)程名陳來終止進(jìn)程]
    a. killall gedit
    案例4:強(qiáng)制殺掉一個終端
    a. ps -aux | grep bash 查到終端對應(yīng)的進(jìn)程ID
    b. kill -9 4090 強(qiáng)制kill掉進(jìn)程id對應(yīng)的進(jìn)程
    4.5)查看進(jìn)程樹pstree
    基本語法:
    pstree 選項(xiàng) 可以更加直觀的來看進(jìn)程信息
    選項(xiàng):
    -p :顯示進(jìn)程的PID
    -u :顯示進(jìn)程的所屬用戶
    應(yīng)用場景:
    案例1:請你樹狀的形式顯示進(jìn)程的pid
    pstree -p
    案例2:請你樹狀的形式顯示用戶的id
    pstree -u
    PS:安裝pstree的指令是:yum install psmisc
    5)服務(wù)(service)管理
    5.1)介紹
    服務(wù)(service)本質(zhì)就是進(jìn)程,但是是運(yùn)行在后臺的,通常都會監(jiān)聽某個端口,等待其他程序的請求,比如(mysql,sshd,防火墻等),因此我們又稱為守護(hù)進(jìn)程,是Linux中非常重要的知識點(diǎn)。
    5.2)service管理指令
    service 服務(wù)名 start | stop | restart | reload | status
    在centos7.0后不再使用service,而是用systemctl
    5.3)使用案例
    1)查看當(dāng)前防火墻的狀況,關(guān)閉防火墻和重啟防火墻。
    5.4)細(xì)節(jié)討論
    1)關(guān)閉或者啟用防火墻后,立即生效。[telnet 測試某個端口即可]
    2)這種方式知識臨時生效,當(dāng)重啟系統(tǒng)后,還是回歸以前對服務(wù)器的設(shè)置。
    3)如果希望設(shè)置某個服務(wù)自啟動或關(guān)閉永久生效,要使用chkconfig指令
    5.5)查看服務(wù)名:
    方式1:使用setup->系統(tǒng)服務(wù) 就可以看到
    方式2:/etc/init.d/服務(wù)名稱
    ls -l /etc/init.d/ 列出系統(tǒng)有哪些服務(wù)
    5.6)服務(wù)的運(yùn)行級別(runlevel):
    1)查看或者修改默認(rèn)級別:vi /etc/inittab
    2)Linux系統(tǒng)有7種運(yùn)行級別(runlevel):常用的級別是3和5
    運(yùn)行級別0:系統(tǒng)停機(jī)狀態(tài),系統(tǒng)默認(rèn)運(yùn)行級別不能設(shè)為0,否則不能正常啟動
    運(yùn)行級別1:單用戶工作狀態(tài),root權(quán)限,用于系統(tǒng)維護(hù),禁止遠(yuǎn)程登陸
    運(yùn)行級別2:多用戶狀態(tài)(沒有NFS),不支持網(wǎng)絡(luò)
    運(yùn)行級別3:完全的多用戶狀態(tài)(有NFS),登陸后進(jìn)入控制臺命令行模式
    運(yùn)行級別4:系統(tǒng)未使用,保留
    運(yùn)行級別5:X11控制臺,登陸后進(jìn)入圖形GUI模式
    運(yùn)行級別6:系統(tǒng)正常關(guān)閉并重啟,默認(rèn)運(yùn)行級別不能設(shè)為6,否則不能正常啟動
    3)開機(jī)的流程說明:
    開機(jī)->BIOS->/boot->init進(jìn)程->運(yùn)行級別->運(yùn)行級別對應(yīng)的服務(wù)
    4)chkconfig指令
    介紹:
    通過chkconfig命令可以給各個運(yùn)行級別設(shè)置自啟動/關(guān)閉
    基本語法
    a. 查看服務(wù) chkconfig --list | grep xxx
    b. chkconfig 服務(wù)名 --list
    c. chkconfig --level 5 服務(wù)名 on/off
    PS: 在Centos7.0 開始,換成了systemctl命令,具體操作請找度娘
    如:chkconfig --list -> systemctl list-unit-files
    chkconfig --level 5 sshd off -> systemctl disable sshd.service
    chkconfig --level 5 sshd on -> systemctl enable sshd.service
    chkconfig --list | grep sshd -> systemctl list-dependencies sshd
    應(yīng)用實(shí)例:
    案例1:請顯示當(dāng)前系統(tǒng)所有服務(wù)的各個運(yùn)行級別的運(yùn)行狀態(tài)
    chkconfig --list
    案例2:請查看sshd服務(wù)的運(yùn)行狀態(tài)
    service sshd status
    案例3:將sshd服務(wù)在運(yùn)行級別5下設(shè)置為不自動啟動,看看有什么效果?
    chkconfig --level 5 sshd off
    案例4:當(dāng)運(yùn)行級別為5時,關(guān)閉防火墻
    chkconfig --level 5 iptables off
    案例5:在所有運(yùn)行級別下,關(guān)閉防火墻
    chkconfig iptables off
    案例6:在所欲運(yùn)行級別下,開啟防火墻
    chkconfig iptables on
    使用細(xì)節(jié):
    a. chkconfig重新設(shè)置服務(wù)后自啟動或關(guān)閉,需要重啟機(jī)器reboot才能生效
    6)動態(tài)監(jiān)控進(jìn)程
    6.1)介紹
    top與ps命令很相似,他們都用來顯示正在執(zhí)行的進(jìn)程。top與ps最大的不同之處,在于top在執(zhí)行一段時間可以更新正在運(yùn)行的進(jìn)程。
    6.2)基本語法
    top 選項(xiàng)
    6.3)選項(xiàng)說明
    -d 秒數(shù) 指定top命令每隔幾秒更新。默認(rèn)是3秒,在top命令的交互模式當(dāng)中可以執(zhí)行的命令。
    -i 使top不顯示任何閑置或者僵尸進(jìn)程
    -p 通過指定監(jiān)控進(jìn)程ID來僅僅監(jiān)控某個進(jìn)程的狀態(tài)
    6.4)交互操作說明
    P 以cpu使用頻率排序,默認(rèn)就是此項(xiàng)
    M 以內(nèi)存的使用頻率排序
    N 以PID排序
    q 退出top
    6.5)應(yīng)用案例
    案例1:監(jiān)視特定用戶
    top: 輸入此命令,按回車鍵,查看執(zhí)行的進(jìn)程
    u: 然后輸入"u"回車,再輸入用戶名,即可
    案例2:終止指定的進(jìn)程
    top: 輸入此命令,按回車鍵,查看執(zhí)行的進(jìn)程
    k: 然后輸入"k"回車,再輸入要結(jié)束
    案例3:指定系統(tǒng)狀態(tài)更新的時間(每隔10秒自動更新)
    top -d 10
    6.6)top顯示的內(nèi)容解釋
    top 20:51:22 up 3:22, 3USERS, load average: 0.35, 0.24, 0.30
    (當(dāng)前時間,系統(tǒng)運(yùn)行時間,當(dāng)前登錄系統(tǒng)用戶數(shù)量,負(fù)載均衡(三個數(shù)加在一起除以3超過0.7時,說明系統(tǒng)有點(diǎn)不穩(wěn)定了))
    Tasks: 204 total, 1 running, 203 sleeping, 0 stopped, 0 zombine
    (總?cè)蝿?wù)數(shù)量,正在運(yùn)行的任務(wù)數(shù)量,掛載的任務(wù)數(shù)量,停止,僵尸)
    Cpu(s): 0.8%us, 0.5%sy, 0.0%ni, 98.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
    (用戶占用的cpu,系統(tǒng)占用的cpu,,空閑的,)
    Mem: 2038376K total, 783520k used, 1254856k free, 29636k buffers
    (內(nèi)存的總大小,使用了多少,還有多少空閑,)
    Swap: 2097148k total, 0k used, 2097148k free, 389404k cached
    (內(nèi)存不夠用了才會用swap分區(qū))
    7)監(jiān)控網(wǎng)絡(luò)狀態(tài)
    查看系統(tǒng)網(wǎng)絡(luò)情況netstat
    7.1)基本語法
    netstat 選項(xiàng)
    netstat -anp | more 常用指令,查看所有網(wǎng)絡(luò)服務(wù)
    7.2)選項(xiàng)說明
    -an 按一定順序排列輸出
    -p 顯示哪個進(jìn)程在調(diào)用
    7.3)應(yīng)用實(shí)例
    請查看服務(wù)名為sshd的服務(wù)的信息
    7.4)檢測主機(jī)連接命令ping:
    是一種網(wǎng)絡(luò)檢測工具,它主要是用檢測遠(yuǎn)程主機(jī)是否正常,或是兩部主機(jī)間的介質(zhì)是否為斷、網(wǎng)線是否脫落或網(wǎng)卡故障
    如:ping對方ip地址
    7.5)

  22. RPM和YUM
    1)rpm包的管理
    1.1)介紹
    一種用于互聯(lián)網(wǎng)下載包的打包及安裝工具,它包含在某些Linux發(fā)布版本中。它生成具有.RPM擴(kuò)展名的文件。
    RPM是RedHat Package Manager(RedHat軟件包管理工具)的縮寫,類似windows的setup.exe,這一文件格式名稱雖然打上了RedHat的標(biāo)志,但理念是通用的。
    1.2)rpm包的簡單查詢指令:
    查詢已安裝的rpm列表 rpm -qa | grep xxx
    1.3)rpm包名基本格式
    一個rpm保命:firefox-45.0.1-1.el6.centos.x86_64.rpm
    名稱:firefox
    版本號:45.0.1-1
    適用操作系統(tǒng):el6.centos.x86_64 表示centos6.x的64位系統(tǒng)
    如果是i686、i386表示32位系統(tǒng),noarch表示通用
    1.4)rpm包的其它查詢指令:
    rpm -qa 查詢所安裝的所有rpm軟件包
    rpm -qa | more 分頁顯示
    rpm -qa | grep XX 如:rpm -qa | grep firefox

        rpm -q 軟件包名        查詢軟件包信息
        rpm -q firefox
        
        rpm -qi 軟件包名    查詢安裝的rpm包軟件的信息
        rpm -qi file
        
        rpm -ql 軟件包名    查詢rpm包的文件安裝到哪里去了
        rpm -ql firefox
        
        rpm -qf 文件全路徑名    查詢某個文件屬于哪個rpm包
        rpm -qf /etc/passwd
        rpm -qf /root/install.log
    1.5)卸載rpm包
        基本語法:
            rpm -e RPM包的名稱
        應(yīng)用案例
            1)刪除firefox軟件包
        細(xì)節(jié)討論
            1)如果其他軟件包依賴于你要卸載的軟件包,卸載時則會產(chǎn)生錯誤信息。
                如:rpm -e foo
                removing these packages would break dependencies:foo is needed by bar-1.0-1
            2)如果我們就是要刪除foo這個rpm包,可以增加參數(shù)--nodeps,就可以強(qiáng)制刪除,但是一般不推薦這樣做,因?yàn)橐蕾囉谠撥浖某绦蚩赡軣o法運(yùn)行
                如:rpm -e --nodeps foo
    1.6)安裝rpm包
        基本語法:
            rpm -ivh RPM包全路徑名稱
        參數(shù)說明:
            i=install 安裝
            v=verbose 提示
            h=hash      進(jìn)度條
        應(yīng)用實(shí)例:
            1)演示卸載和安裝firefox瀏覽器
                a. 先找到firefox的安裝rpm包,需要掛載上我們安裝centos的iso文件,然后到/media/下去找rpm包。
                b. cp firefox-45.0.1-1.el6.centos.x86_64.rpm /opt/
                c. rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm
    

    2)yum
    介紹:
    YUM是一個Shell前端軟件包管理器。基于RPM包管理,能夠從指定的服務(wù)器自動下載RPM包并且安裝,可以自動處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包。
    yum的基本指令:
    查詢yum服務(wù)器是否有需要安裝的軟件
    yum list | grep XX 軟件列表
    安裝指定的yum包
    yum install XXX 下載安裝
    yum應(yīng)用實(shí)例:
    案例:請使用yum的方式來安裝firefox
    a. 先查看一下firefox rpm 在yum 服務(wù)器上是否存在
    yum list | grep firefox
    b. 安裝
    yum install firefox 會安裝最新版本

  23. Linux之JavaEE定制篇
    1)概述
    如果在Linux下進(jìn)行JavaEE的開發(fā),我們需要安裝如下軟件:
    mysql-5.6.14.tar.gz
    jdk-7u79-linux-x64.gz
    eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz
    apache-tomcat-7.0.70.tar.gz
    2)安裝JDK
    安裝步驟
    a. 先將軟件通過xftp5上傳到/opt/路徑下
    b. 解壓縮到/opt/路徑下
    c. 配置環(huán)境變量的配置文件vim /etc/profile
    d. JAVA_HOME=/opt/jdk1.7.0_79
    e. PATH=/opt/jdk1.7.0_79/bin:PATH f. export JAVA_HOME PATH g. 需要注銷用戶,環(huán)境變量才能生效 測試是否安裝成功 編寫一個簡單的hello.java 輸出"hello, world!" 3)安裝tomcat 安裝步驟 a. 解壓縮到/opt/路徑下 tar -zxvf apach-tomcat-7.0.70.tar.gz b. 啟動tomcat ./startup.sh 先進(jìn)入tomcat的bin目錄:cd apach-tomcat-7.0.70/bin/ c. 開放端口,這樣外網(wǎng)才能訪問tomcat vim /etc/sysconfig/iptables 增加一行:A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT 重啟防火墻:service iptables restart 測試是否安裝成功 在windows或linux下訪問http://linuxip:8080 4)Eclipse安裝 安裝步驟 a. 解壓縮到/opt/路徑下 tar -zxvf eclipse-jee-mars-2-linux-gtk-x86_64.tar.gz b. 啟動eclipse,配置jre和server c. 編寫hello world程序并測試 d. 編寫jsp頁面,并測試 5)mysql5.6的安裝和配置,安裝包地址:https://pan.baidu.com/s/1powjyUaS_Sh__ydReComRw CentOS 6.8 下編譯安裝MySQL5.6.14 概述: 通過源代碼安裝高版本的5.6.14 正文: 一:卸載舊版本 使用下面的命令檢查是否安裝有MySQL Server rpm -qa | grep mysql 有的話通過下面的命令來卸載掉 目前我們查詢到的是這樣子的: [root@hsp ~]#rpm -qa | grep mysql mysql-libs-5.1.73-7.el6.x86_64 如果查詢到了,就刪除吧 rpm -e mysql_libs // 普通刪除模式 rpm -e --nodeps mysql_libs // 強(qiáng)力刪除模式,如果使用上面命令刪除時,提示有依賴的其他文件,則用該命令可以對其進(jìn)行強(qiáng)力刪除 二:安裝MySQL 安裝編譯代碼需要的包 yum -y install make gcc-c++ cmake bison-devel ncurses-devel 下載MySQL 5.6.14 [這里我們已經(jīng)下載好了,看軟件文件夾],MySQL 5.6.14的路徑: 進(jìn)入mysql壓縮包所在的路徑:cd /opt/ tar -zxvf mysql-5.6.14.tar.gz cd mysql-5.6.14 編譯安裝[源碼-》編譯] 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_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci 編譯并安裝 make && make install 整個過程需要30分鐘左右。 三:配置MYSQL 設(shè)置權(quán)限 使用下面的命令查看是否有mysql用戶及用戶組 cat /etc/passwd 查看用戶列表 cat /etc/group 查看用戶組列表 如果沒有就創(chuàng)建 groupadd mysql useradd -g mysql mysql 修改/usr/local/mysql權(quán)限 chown -R mysql:mysql /usr/local/mysql 初始化配置,進(jìn)入安裝路徑(再執(zhí)行下面的指令),執(zhí)行初始化配置腳本,創(chuàng)建系統(tǒng)自帶的數(shù)據(jù)庫和表 cd /usr/local/mysql scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql 注:在啟動MySQL服務(wù)時,會按照一定次序搜索my.cnf,先在/etc/目錄下查找,找不到則會搜索"basedir/my.cnf",在本例中就是/usr/local/mysql/my.cnf,這是新版MySQL的配置文件的默認(rèn)位置!

    注意:在CentOS 6.8 版操作系統(tǒng)的最小安裝完成后,在/etc/目錄下會存在一個my.cnf,需要將此文件更名為其他的名字,如:/etc/my.cnf.bak,否則,該文件會干擾源碼安裝的MySQL的正確配置,造成無法啟動。
    mv /etc/my.cnf /etc/my.cnf.bak
    
    啟動 MySQL
    添加服務(wù),拷貝服務(wù)腳本到init.d目錄,并設(shè)置開機(jī)啟動
    [注意在/usr/local/mysql下執(zhí)行]
    cp support-files/mysql.server /etc/init.d/mysql
    chkconfig mysql on
    service mysql start            啟動MySQL
    
    執(zhí)行下面的命令修改root密碼
    cd /usr/local/mysql/bin
    ./mysql -uroot
    mysql>SET PASSWORD = PASSWORD('root');
    通過vim /etc/profile,添加環(huán)境變量
    
    PS:CentOS 7 MySQL安裝,親測可用:https://www.cnblogs.com/chxuyuan/p/7707392.html
    

    6)

  24. Linux之大數(shù)據(jù)定制篇
    大數(shù)據(jù)定制篇-Shell編程
    1)為什么要學(xué)習(xí)Shell編程
    1.1)Linux運(yùn)維工程師在進(jìn)行服務(wù)器集群管理時,需要編寫Shell程序來進(jìn)行服務(wù)器管理。
    1.2)對于JavaEE和Python程序員來說,工作的需要,你的老大會要求你編寫一些Shell腳本進(jìn)行程序或是服務(wù)器的維護(hù),比如編寫一個定時備份數(shù)據(jù)庫的腳本。
    1.3)對于大數(shù)據(jù)程序員來說,需要編寫Shell程序來管理集群。
    2)Shell是什么
    Shell是一個命令行解釋器,它為用戶提供了一個向Linux內(nèi)核發(fā)送請求以便運(yùn)行程序的界面系統(tǒng)級程序,用戶可以用Shell來啟動、掛起、停止甚至是編寫一些程序。
    3)Shell編程快速入門---Shell腳本的執(zhí)行方式
    a. 腳本格式要求
    1)腳本以#!/bin/bash開頭
    2)腳本需要有可執(zhí)行權(quán)限
    b. 編寫第一個Shell腳本
    需求說明
    創(chuàng)建一個Shell腳本,輸出hello world
    1. 編寫一個shell文件:vim myShell.sh
    2. 輸入內(nèi)容
    #!/bin/bash
    echo "hello,world"
    保存并退出
    3. 更改權(quán)限,使之有可執(zhí)行的權(quán)限
    chmod 744 myShell.sh
    4. 執(zhí)行可執(zhí)行文件,即myShell.sh文件
    ./myShell.sh
    c. 腳本的常用執(zhí)行方式
    方式1(輸出腳本的絕對路徑或相對路徑)
    1)首先要賦予helloworld.sh 腳本的+x權(quán)限(可執(zhí)行)
    chmod u+x helloworld.sh
    2)執(zhí)行腳本
    ./helloworld.sh
    方式2(sh+腳本)
    說明:不用賦予腳本+x權(quán)限,直接執(zhí)行即可。
    sh helloworld.sh
    4)Shell的變量
    4.1)Shell的變量的介紹
    1)Linux Shell中的變量分為:系統(tǒng)變量和用戶自定義變量。
    2)系統(tǒng)變量:HOME、PWD、SHELL、USER等等
    比如:echo HOME 等等 3)顯示當(dāng)前Shell中所有變量: set 4.2)Shell變量的定義 基本語法: 1)定義變量:變量=值 2)撤銷變量:unset 變量 3)聲明靜態(tài)變量:readonly變量,注意:不能unset 快速入門: 案例1:定義變量A A=100 定義變量A echo "A=A" 輸出變量A的值
    結(jié)果:A=100
    案例2:撤銷變量A
    unset A 注銷變量A
    echo "A=A" 輸出變量A的值 結(jié)果:A= 案例3:聲明靜態(tài)的變量B=2,不能unset readonly B=2 定義靜態(tài)變量 echo "B=B" 輸出靜態(tài)變量
    unset B 注銷靜態(tài)變量,會出錯,靜態(tài)變量不能注銷
    echo "B=B" 案例4:可把變量提升為全局環(huán)境變量,可提供其他shell程序使用 4)定義變量的規(guī)則 a. 變量名稱可以由字母、數(shù)字和下劃線組成,但是不能以數(shù)字開頭。 b. 等號兩側(cè)不能有空格 c. 變量名稱一般習(xí)慣為大寫 5)將命令的返回值賦給變量(重點(diǎn)) a. A=`ls -la` 反引號,運(yùn)行里面的命令,并把結(jié)果返回給變量A b. A=(ls -la) 等價于反引號
    PS:反引號是鍵盤的左上角,Esc下面的那個鍵,引文狀態(tài)下點(diǎn)擊即可`
    5)Shell設(shè)置環(huán)境變量
    5.1)基本語法
    1)export 變量名=變量值 將shell變量輸出為環(huán)境變量
    2)source 配置文件 讓修改后的配置信息立即生效
    3)echo 變量名 查詢環(huán)境變量的值
    5.2)快速入門
    1)在/etc/profile文件中定義TOMCAT_HOME環(huán)境變量
    a. vim /etc/profile
    b. 在末尾添加 TOMCAT_HOME=/opt/tomcat
    c. source /etc/profile
    2)查看環(huán)境變量TOMCAT_HOME的值
    echo TOMCAT_HOME 3)在另外一個shell程序中使用TOMCAT_HOME a. vim myShell.sh b. 在里面輸入 echo "TOMECAT_HOME=TOMECAT_HOME"
    c. ./myShell.sh
    注意:在輸出TOMCAT_HOME環(huán)境變量前,需要讓其生效
    source /etc/profile
    PS:# 被注釋的內(nèi)容 是單行注釋
    :<<! 開始
    被注釋的內(nèi)容
    ! 結(jié)束
    6)位置參數(shù)變量
    6.1)介紹
    當(dāng)我們執(zhí)行一個shell腳本時,如果希望獲取命令行的參數(shù)信息,就可以使用到位置參數(shù)變量
    比如:./myshell.sh 100 200,這個就是一個執(zhí)行shell的命令行,可以在myshell腳本中獲取到參數(shù)信息
    6.2)基本語法
    n n為數(shù)字,0代表命令本身,1-9代表第一到第九個參數(shù),十以上的參數(shù)需要用大括號包含,如{10}* 這個變量代表命令行中所有的參數(shù),*把所有的參數(shù)看成一個整體@ 這個變量也代表命令行中所有的參數(shù)
    # 這個變量代表命令行中所有參數(shù)的個數(shù) 6.3)位置參數(shù)變量 應(yīng)用案例 案例:編寫一個shell腳本positionPara.sh,在腳本中獲取到命令行的各個參數(shù)信息。 a. vim positionPara.sh b. 輸入 #!/bin/bash echo "0 12"
    echo "*" echo "@"
    echo "參數(shù)個數(shù)=$#"
    保存并退出
    c. 使文件擁有可執(zhí)行權(quán)限 chmod 744 positionPara.sh
    d. 執(zhí)行 ./positionPara.sh 30 60
    e. 結(jié)果
    ./positionPara.sh 30 60
    30 60
    30 60
    參數(shù)個數(shù)=2
    7)預(yù)定義變量
    7.1)基本介紹
    就是shell設(shè)計(jì)者事先已經(jīng)定義好的變量,可以直接在shell腳本中使用
    7.2)基本語法

當(dāng)前進(jìn)程的進(jìn)程號(PID) ! 后臺運(yùn)行的最后一個進(jìn)程的進(jìn)程號(PID)? 最后一次執(zhí)行的命令的返回狀態(tài)。如果這個變量的值為0,證明上一個命令正確執(zhí)行;否則(具體是哪個數(shù),由命令自己來決定),則證明上一個命令執(zhí)行不正確。 7.3)應(yīng)用實(shí)例 在一個shell腳本中簡單使用一下預(yù)定義變量 a. vim preVar.sh b. 輸入 #!/bin/bash echo "當(dāng)前的進(jìn)程號=
"
#后臺的方式運(yùn)行 myShell.sh
./myShell.sh &
echo "最后的進(jìn)程號=!" echo "執(zhí)行的值=?"
c. 使文件擁有可執(zhí)行權(quán)限 chmod 744 preVar.sh
d. 執(zhí)行 ./preVar.sh
e. 結(jié)果
當(dāng)前的進(jìn)程號=22083
最后的進(jìn)程號=22084
執(zhí)行的值=0
8)運(yùn)算符
8.1)基本介紹
學(xué)習(xí)如何在shell中進(jìn)行各種運(yùn)算符操作
8.2)基本語法
1)"((運(yùn)算符))"或"[運(yùn)算符]"
2)expr m + n
注意expr運(yùn)算符間要有空格
3)expr m - n
4)expr *,/,% 乘,除,取余
應(yīng)用實(shí)例
案例1:計(jì)算(2+3)4的值
1. (運(yùn)算符) RESULT1=(((2+3)
4))
echo "result1=RESULT1" 2.[運(yùn)算式]
RESULT2=[(2+3)*4] echo "result2=RESULT2"
3. expr
TEMP=expr 2 + 3
RESULT3=expr $TEMP \* 4
echo "result3=RESULT3" 案例2:請求出命令行的兩個參數(shù)[整數(shù)]的和 SUM=[1+2]
echo "sum=SUM" 9)條件判斷 9.1)判斷語句 [ condition ] 注意condition前后要有空格 #非空返回true,可使用?驗(yàn)證(0為true,>1為false)
9.2)實(shí)用案例
[ atguigu ] 返回true
[] 返回false
[ condition ] && echo OK || echo notok 條件滿足,執(zhí)行后面的語句
10)條件判斷
10.1)判斷語句
常用判斷條件
1)兩個整數(shù)的比較
= 字符串比較
-lt 小于 little
-le 小于等于 little equal
-eq 等于 equal
-gt 大于 greater
-ge 大于等于 greater equal
-ne 不等于 not equal
2)按照文件權(quán)限進(jìn)行判斷
-r 有讀權(quán)限
-w 有寫權(quán)限
-x 有執(zhí)行權(quán)限
3)按照文件類型進(jìn)行判斷
-f 文件存在并且是一個常規(guī)的文件 file
-e 文件存在 exit
-d 文件存在并且是一個目錄 directory
4)應(yīng)用實(shí)例
案例1:"ok"是否等于"ok"
a. vim judge.sh
b. 輸入
#!/bin/bash
if [ "ok" = "ok" ]
then
echo "equal"
fi
保存并退出
c. 更改權(quán)限,使之有可執(zhí)行的權(quán)限 chmod 744 judge.sh
d. ./judge.sh
e. 結(jié)果
equal
案例2:23是否大于等于22
a. vim judge.sh
b. 輸入
if [ 23 -ge 22 ]
then
echo "23>=22"
fi
保存并退出
c. ./judge.sh
d. 結(jié)果
23>=22
案例3:/root/shell/aaa.txt目錄中的文件是否存在
a. vim judge.sh
b. 輸入
if [ -e /root/shell/aaa.txt ]
then
echo "exit"
fi
保存并退出
c. ./judge.sh
d. 結(jié)果
exit
PS:if條件的格式是
if [ condition ] // 條件判斷
then // 滿足條件則進(jìn)行相應(yīng)處理
fi // 條件結(jié)束,final
11)if 判斷
11.1)基本語法
if [ condition ];then
程序
fi
或者
if [ condition ]
then
程序
elif [ condition ]
then
程序
fi
注意事項(xiàng):
(1) [ condition ],中括號和condition之間必須有空格
(2) 推薦使用第二種
11.2)應(yīng)用實(shí)例
案例:請編寫一個shell程序,如果輸入的參數(shù)大于等于60,則輸出"及格了",如果小于60,則輸出"不及格"
a. vim testIf.sh
b. 輸入
#!/bin/bash
if [ 1 -ge 60 ] then echo "及格了" elif [1 -lt 60 ]
then
echo "不及格"
fi
保存并退出
c. 更改權(quán)限,使之有可執(zhí)行的權(quán)限 chmod 744 testIf.sh
d. 執(zhí)行 ./testIf.sh 67
e. 結(jié)果
"及格了"
12)case 語句
12.1)基本語法
case 變量名 in "值1") 如果變量的值等于值1,則執(zhí)行程序1 ;; "值2") 如果變量的值等于值1,則執(zhí)行程序2 ;; *) 如果變量的值都不是以上的值,則執(zhí)行此程序 ;; esac 12.2)應(yīng)用實(shí)例 案例1:當(dāng)命令行參數(shù)是1時,輸出"周一",是2時,就輸出"周二",其它情況輸出"other" a. vi testCase.sh b. 輸入 #!/bin/bash case1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
)
echo "其它"
;;
esac
c. 更改權(quán)限,使之有可執(zhí)行的權(quán)限 chmod 744 testCase.sh
d. 執(zhí)行 ./testCase.sh 1
e. 結(jié)果
周一
13)for 循環(huán)
13.1)基本語法1
for 變量 in 值1 值2 值3 ...
do
程序
done
13.2)應(yīng)用案例
案例1:打印命令行輸入的參數(shù)
a. vim testFor.sh
b. 輸入
#!/bin/bash
for i in "*" // 或用 for i in "@" 也可以,只不過*是輸出一行,而@是每個參數(shù)輸出一行
do
echo "the num is i" done 退出并保持 c. 更改權(quán)限,使之有可執(zhí)行的權(quán)限 chmod 744 testFor.sh d. 執(zhí)行 ./testFor.sh 1 2 3 e. 結(jié)果 // 用
輸出的結(jié)果
the num is 1 2 3
// 用@輸出的結(jié)果 the num is 1 the num is 2 the num is 3 13.3)基本語法2 for((初始值;循環(huán)控制條件;變量變化)) do 程序 done 13.4)應(yīng)用案例 案例1:從1加到100的值輸出顯示[這里可以看出*和@的區(qū)別] a. vim testFor2.sh b. 輸入 #!/bin/bash SUM=0 for((i=0;i<=100;++i)) do SUM=[SUM+i]
done
echo "SUM=SUM" 保持并退出 c. 更改權(quán)限,使之有可執(zhí)行的權(quán)限 chmod 744 testFor2.sh d. 執(zhí)行 ./testFor2.sh e. 結(jié)果 SUM=5050 14)while 循環(huán) 14.1)基本語法1 while[條件判斷式] do 程序 done 14.2)應(yīng)用實(shí)例 案例1:從命令行輸入一個數(shù)n,統(tǒng)計(jì)從1+..+n的值是多少? a. vim testWhile.sh b. 輸入 #!/bin/bash SUM=0 i=0 while [i -le 1 ] do SUM=[SUM+i]
i=[i+1]
done
echo "SUM=SUM" 保持并退出 c. 更改權(quán)限,使之有可執(zhí)行的權(quán)限 chmod 744 testWhile.sh d. 執(zhí)行 ./testWhile.sh 10 e. 結(jié)果 SUM=55 15)read讀取控制臺輸入 15.1)基本語法 read [選項(xiàng)] {參數(shù)} 選項(xiàng): -p 指定讀取值時的提示符 -t 指定讀取值時等待的時間(秒),如果沒有在指定的時間內(nèi)輸入,就不再等待了 參數(shù) 變量 指定讀取值得變量名 15.2)應(yīng)用實(shí)例 案例1:讀取控制臺輸入一個num值 a. vim testRead.sh b. 輸入 read -p "請輸入一個數(shù)num1=" NUM1 echo "你輸入的值是num1=NUM1"
保存并退出
c. 更改權(quán)限,使之有可執(zhí)行的權(quán)限 chmod 744 testRead.sh
d. 執(zhí)行
./testRead.sh
123
e. 結(jié)果
你輸入的值是num1=123
案例2:讀取控制臺輸入一個num值,在10秒內(nèi)輸入
a. vim testRead.sh
b. 輸入
read -t -p "請輸入一個數(shù)num2=" NUM2
echo "你輸入的值是num2=NUM2" 保存并退出 c. 執(zhí)行 ./testRead.sh 不輸入內(nèi)容,等待10秒 d. 結(jié)果 請輸入一個數(shù)num2=你輸入的值是num2= 16)系統(tǒng)函數(shù) 16.1)函數(shù)介紹 shell編程和其他編程語言一樣,有系統(tǒng)函數(shù),也可以自定義函數(shù)。系統(tǒng)函數(shù)中,我們這里只學(xué)習(xí)兩個。 16.2)basename基本語法 功能:返回完整路徑最后/的部分,常用于獲取文件名 basename [pathname] [suffix] basename [string] [suffix] basename命令會刪掉所有的前綴包括最后一個('/')字符,然后將字符串顯示出來。 選項(xiàng): suffix為后綴,如果suffix被指定了,basename會將pathname或string中的suffix去掉。 16.3)應(yīng)用實(shí)例 案例1:請返回/home/aaa/test.txt的"test.txt"部分 a. basename /home/aaa/test.txt b. 顯示 test.txt c. basename /home/aaa/test.txt .txt d. 顯示 test 16.4)dirname 基本用法 功能:返回完整路徑最后/的前面的部分,常用于返回路徑部分 dirname 文件絕對路徑 從給定的包含絕對路徑的文件名中取出文件名(非目錄的部分),然后返回剩下的路徑(目錄的部分) 16.5)應(yīng)用案例 案例1:請返回 /home/aaa/test.txt 的/home/aaa a. dirname /home/aaa/test.txt b. 顯示 /home/aaa 17)自定義函數(shù) 17.1)基本語法 function funname() { Action; [return int;] } 調(diào)用直接寫函數(shù)名:funname [值] 17.2)應(yīng)用案例 案例1:計(jì)算輸入兩個參數(shù)的和,getSum a. vim testFun.sh b. 輸入 #!/bin/bash function getSum() { SUM=n1+n2 echo "sum=SUM"
}

                read -p "請輸入第一個參數(shù)n1=" n1
                read -p "請輸入第一個參數(shù)n2=" n2
                
                getSum $n1 $n2
                保存并退出
            c. 更改權(quán)限,使之有可執(zhí)行的權(quán)限 chmod 744 testFun.sh
            d. 執(zhí)行 ./testFun.sh
                90
                10
            e. 結(jié)果
                sum=100
18)Shell編程的綜合案例
    18.1)需求分析
        1)每天凌晨2:10分備份數(shù)據(jù)庫atguiguDB到/data/backup/db
        2)備份開始和備份結(jié)束能夠給出相應(yīng)的提示信息
        3)備份后的文件要求以備份時間為文件名,并打包成.tar.gz的形式,比如2018-03-12_230210.tar.gz
        4)在備份的同時,檢查是否有10天前備份的數(shù)據(jù)庫文件,如果有就將其刪除。
    18.2)實(shí)現(xiàn)流程
        a. vim mysql_db_backup.sh
        b. 輸入內(nèi)容如下:
            #!/bin/bash
            #完成數(shù)據(jù)庫的備份
            #備份數(shù)據(jù)庫
            BACKUP=/data/backup/db
            #當(dāng)前的時間作為文件名
            DATETIME=${date +%Y-%m-%d_%H%M%S}
            #可以輸出變量進(jìn)行調(diào)試
            echo ${DATETIME}
            echo "-------------begin-------------"
            echo "-----------開始備份------------"
            #主機(jī)
            HOST=localhost
            #用戶名
            DB_USER=root
            #密碼
            DB_PWD=root
            #備份數(shù)據(jù)庫名
            DATABASE=atguiguDB
            #創(chuàng)建備份的路徑
            #如果備份的路徑文件夾存在,就使用,否則就創(chuàng)建
            [ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
            #執(zhí)行mysql的備份數(shù)據(jù)庫的指令
            mysqldump -u${DB_USER} -p${DB_PWD} --host=${HOST} $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
            #打包備份文件
            cd $BACKUP
            tar -zcvf $DATETIME.tar.gz $DATETIME
            #刪除臨時目錄
            rm -rf $BACKUP/$DATETIME    也可以直接使用 rm -rf $DATETIME
            #刪除十天前的備份文件
            find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
            echo "----------備份結(jié)束-----------"
        c. 更改權(quán)限,使之有可執(zhí)行的權(quán)限 chmod 744 mysql_db_backup.sh
        d. crontab -e
        e. 輸入
            10 2 * * * /usr/sbin/mysql_db_backup.sh
        f. 結(jié)束
  1. Linux之Python定制篇
    1)Ubuntu介紹
    Ubuntu是一個以桌面應(yīng)用為主的開源GNU/Linux操作系統(tǒng),支持x86、amd64(即x64)和ppc架構(gòu),由全球化的專業(yè)開發(fā)團(tuán)隊(duì)(Canonical Ltd)打造的。
    專業(yè)的Python開發(fā)者一般會選擇Ubuntu這款Linux系統(tǒng)作為生產(chǎn)平臺。
    溫馨提示:
    Ubuntu和Centos都是基于GNU/Linux內(nèi)核的,因此基本使用和Centos是幾乎一樣的,他們的各種指令可以通用,只是界面和預(yù)安裝的軟件有所差異
    Ubuntu下載地址:http://cn.ubuntu.com/download/
    2)Ubuntu安裝
    3)Ubuntu的root用戶,給root用戶設(shè)置密碼并使用
    a. 輸入 sudo passwd 命令,輸入一般用戶密碼并設(shè)定root用戶密碼
    b. 設(shè)定 root 密碼成功后,輸入 su 命令,并輸入剛才設(shè)定的root密碼,就可以切換成root了。提示符$代表一般用戶,提示符#代表root用戶。
    c. 輸入exit命令,退出root并返回一般用戶
    d. 以后就可以使用root用戶了
    4)Ubuntu下開發(fā)Python
    4.1)說明
    安裝好Ubuntu后,默認(rèn)就已經(jīng)安裝好Python的開發(fā)環(huán)境[Python2.7 和 Python3.5]。
    4.2)在Ubuntu下開發(fā)一個Python程序
    a. vim hello.py 編寫hello.py
    提示:如果Ubuntu上沒有vim,我們可以根據(jù)提示信息安裝一個vim apt install vim
    b. 輸入
    print("hello,world!")
    c. python3 hello.py 運(yùn)行hello.py
    d. 結(jié)果
    hello,world
    5)Python定制篇-APT軟件管理和遠(yuǎn)程登錄
    5.1)apt介紹
    apt是Advanced Packaging Tool的簡稱,是一款安裝包管理工具。在Ubuntu下,我們可以使用apt命令可用于軟件包的安裝、刪除、清理等,類似于Windows中的軟件管理工具。
    Ubuntu的軟件管理示意圖(略)
    5.2)Ubuntu軟件曹組的相關(guān)命令
    sudo apt-get update 更新源
    sudo apt-get install package 安裝包
    sudo apt-get remove package 刪除包

        sudo apt-cache search package    搜索軟件包
        sudo apt-cache show package        獲取包的相關(guān)信息,如說明、大小、版本等
        sudo apt-get install package --reinstall    重新安裝
        
        sudo apt-get -f install            修復(fù)安裝
        sudo apt-get remove package --purge        刪除包,包括配置文件等
        sudo apt-get build-dep package    安裝相關(guān)的編譯環(huán)境
        
        sudo apt-get upgrade            更新已安裝的包
        sudo apt-get dist-upgrade        升級系統(tǒng)
        sudo apt-cache depends package    了解使用該包依賴哪些包
        sudo apt-cache rdepends package    查看該包被哪些包依賴
        sudo apt-get source package        下載該包的源代碼
    5.3)尋找國內(nèi)的鏡像源
        https://mirrors.tuna.tsinghua.edu.cn/
        所謂的鏡像源:可以理解為提供下載軟件的地方,比如Android手機(jī)上可以下載軟件的安卓市場;ios手機(jī)上可以下載軟件的AppStore
    5.4)Ubuntu軟件安裝、卸載的最佳實(shí)踐
        案例說明:使用apt完成安裝和卸載vim軟件,并查詢vim軟件的信息
            sudo apt-get remove vim
            sudo apt-get install vim
            sudo apt-cache show vim
    

    6)ssh遠(yuǎn)程登錄Ubuntu
    6.1)ssh介紹
    SSH為Secure Shell的縮寫,由IETF的網(wǎng)絡(luò)工作小組(Network Working Group) 所制定;SSH為建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議。
    SSH是目前較可靠,專為遠(yuǎn)程登錄會話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。常用于遠(yuǎn)程登錄,以及用戶之間進(jìn)行資料拷貝。幾乎所有Unix平臺--包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平臺,都可運(yùn)行SSH。
    使用SSH服務(wù),需要安裝相應(yīng)的服務(wù)器和客戶端??蛻舳撕头?wù)器的關(guān)系:如果,A機(jī)器想被B機(jī)器遠(yuǎn)程控制,那么,A機(jī)器需要安裝SSH服務(wù)器,B機(jī)器需要安裝SSH客戶端。
    和CentOS不一樣,Ubuntu默認(rèn)沒有安裝SSHD服務(wù),因此,我們不能進(jìn)行遠(yuǎn)程登錄。
    6.2)使用ssh遠(yuǎn)程登錄Ubuntu
    1)安裝SSH和啟用
    sudo apt-get install openssh-server
    執(zhí)行上面的指令后,在當(dāng)前這臺Linux上就安裝了SSH服務(wù)端和客戶端

            service sshd restart
            執(zhí)行上面的指令,就啟動了sshd服務(wù)。會監(jiān)聽端口22
        2)在Windows上使用xshell5或xftp5登錄Ubuntu
        3)從Linux系統(tǒng)客戶機(jī)遠(yuǎn)程登錄Linux系統(tǒng)服務(wù)機(jī)
            首先,我們需要在Linux的系統(tǒng)客戶機(jī)也要安裝openssh-server
            基本語法:
                ssh 用戶名@IP
                例如: ssh atguigu@192.168.188.130
                使用ssh訪問,如訪問出現(xiàn)錯誤??刹榭词欠裼性撐募?~/.ssh/known_ssh 嘗試刪除該文件解決。
                登出命令:
                exit或者logout
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容