日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

(七)linux操作系统-linux韩顺平2021笔记

發布時間:2023/12/10 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (七)linux操作系统-linux韩顺平2021笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

linux韓順平2021

文章目錄

  • linux韓順平2021
    • p1 課程內容
      • 基礎篇
      • 實際操作篇
      • 2021高級篇
    • p2 應用領域
    • p3 概述
    • p4 Linux和Unix
    • p5 vmware15.5安裝
    • p6 centOS7.6安裝
    • p7 網絡連接的三種方式
    • p8 虛擬機克隆
    • p9 虛擬機快照
    • p10 虛擬機遷移和刪除
    • p11 vmtools
    • p12 第4章 linux目錄結構
    • p13 第5章 遠程登錄到Linux服務器
    • p14 遠程登錄
    • p15 遠程文件傳輸
    • p16 vi和vim編輯器
      • 常用三種模式
    • p17 vi和vim快捷鍵
    • p18 vi vim 內容整理
    • p19 第七章 開機、重啟和用戶注銷
    • p20 登錄注銷
    • p21 用戶管理
      • 添加用戶
    • p22 查詢用戶信息指令
      • 基本語法
      • 切換用戶
      • 查看當前用戶/登錄用戶
        • 基本語法
    • p23 用戶組
      • 介紹
      • 新增組
      • 刪除組
      • 增加用戶時直接加上組
      • 修改用戶的組
      • 用戶和組相關文件
        • /etc/password 文件
        • /etc/shadow 文件
    • p24 用戶管理總結
    • p25 第九章 實用指令
      • 指定運行級別
    • p26 如何找回root密碼
    • p27 幫助指令
    • p28 文件目錄類
      • pwd 指令
      • ls 指令
      • cd指令
    • p28 文件目錄類(2)
      • mkdir指令
      • rmdir指令
      • touch 指令
    • p30 文件目錄指令(3)
      • cp指令
      • rm指令
    • p31 文件目錄指令(4)
      • mv指令
      • cat指令
      • more 指令
      • less指令
      • echo 指令
      • head 指令
      • tail 指令
      • > 指令和>> 指令
      • ln 指令
      • history 指令
    • p34 時間日期類
      • 時間日期類
      • date 指令-顯示當前日期
      • date 指令-設置日期
      • cal 指令
    • p35 查找指令(1)
      • 搜索查找類
        • find指令
      • locate 指令
        • 基本語法
        • 特別說明
        • 應用實例
    • p36 查找指令(2)
      • grep 指令和管道符號 |
        • 基本語法
        • 常用選項
        • 應用實例
    • p37 壓縮和解壓類
      • gzip/gunzip 指令
        • 基本語法
        • 應用實例
      • zip/unzip 指令
        • 基本語法
        • zip 常用選項
        • unzip 的常用選項
    • p38 壓縮和解壓類(2)
      • tar 指令
        • 基本語法
        • 選項說明
        • 應用實例
    • p39 實用指令小結
    • p40 第十章 Linux組的介紹
      • Linux 組基本介紹
    • p41 所有者
      • 文件/目錄所有者
        • 查看文件的所有者
        • 修改文件所有者
      • 組的創建
        • 基本指令
        • 應用實例
    • p42 所在組
      • 文件/目錄所在組
        • 查看文件/目錄所在組
          • 基本指令
        • 修改文件/目錄所在的組
          • 基本指令
          • 應用實例
    • p43 修改所在組
      • 其它組
      • 改變用戶所在組
        • 改變用戶所在組
        • 應用實例
    • p44 rwx權限
      • 權限的基本介紹
      • rwx 權限詳解,難點
        • rwx 作用到文件
        • rwx 作用到目錄
    • p45 權限說明案例
      • ls -l 中顯示的內容如下:
        • 10 個字符確定不同用戶能對文件干什么
    • p46 修改權限
      • 修改權限-chmod
        • 基本說明:
        • 第一種方式:+ 、-、= 變更權限
          • 案例演示
        • 第二種方式:通過數字變更權限
          • 案例演示
    • p47 修改所在組和所有者
      • 基本介紹
        • 案例演示
        • 修改文件/目錄所在組-chgrp
          • 基本介紹
          • 案例演示
    • p48 最佳實踐-警察和土匪游戲
    • p49文件權限管理[課堂練習1]
    • p50 第10章總結
    • p51 第11章 定時任務調度
      • crond 任務調度
      • 概述
    • p52 crontab
      • 基本語法
      • 常用選項
      • 快速入門
        • 參數細節說明
    • p53 crond 時間規則
      • 特殊時間執行案例
    • p54 crond應用實例
      • crond 相關指令
    • p55 at定時任務
      • 基本介紹
      • at 命令格式
      • at 命令選項
      • at 時間定義
    • p56 at任務調度實例
      • 案例1:2 天后的下午5 點執行/bin/ls /home
      • 案例2:atq 命令來查看系統中沒有執行的工作任務
      • 案例3:明天17 點鐘,輸出時間到指定文件內比如/root/date100.log
      • 案例4:2 分鐘后,輸出時間到指定文件內比如/root/date200.log
      • 案例5:刪除已經設置的任務, atrm 編號
      • ***默認刪除鍵變^H,只要按住ctrl鍵,刪除鍵就可以使用了~***
    • p57 任務調度小結
    • p58 磁盤分區機制
      • Linux 分區
        • 原理介紹
        • 硬盤說明
      • 查看所有設備掛載情況
    • p59 增加磁盤應用實例
      • 掛載的經典案例
        • 說明:
        • 如何增加一塊硬盤
        • 虛擬機增加硬盤步驟1
        • 虛擬機增加硬盤步驟2
        • 虛擬機增加硬盤步驟3
        • 虛擬機增加硬盤步驟4
        • 虛擬機增加硬盤步驟5
    • p60 磁盤情況查詢
      • 查詢系統整體磁盤使用情況
        • 基本語法
        • 應用實例
      • 查詢指定目錄的磁盤占用情況
        • 基本語法
        • 應用實例
    • p61 磁盤情況-工作實用指令
    • p62 磁盤掛載小結
    • p63 NAT網絡原理圖
    • p64 網絡配置指令
      • 查看網絡IP 和網關
      • 查看網關
      • 查看windows 環境的中VMnet8 網絡配置(ipconfig 指令)
      • 查看linux 的網絡配置ifconfig
      • ping 測試主機之間網絡連通性
        • 基本語法
        • 應用實例
    • p65 網絡配置實例
      • linux 網絡環境配置
        • 第一種方法(自動獲取):
        • 第二種方法(指定ip)
          • ifcfg-ens33 文件說明
    • p66 主機名和hosts映射
      • 設置主機名
      • 設置hosts 映射
      • 主機名解析過程分析(Hosts、DNS)
        • Hosts 是什么
        • DNS
        • 應用實例: 用戶在瀏覽器輸入了www.baidu.com
    • p67 網絡配置小結
    • p68 進程基本介紹
    • p69 ps指令詳解
      • 顯示系統執行的進程
        • 基本介紹
      • ps 詳解
    • p70 父子進程
      • 應用實例
    • p71 終止進程kill 和killall
      • 介紹:
      • 基本語法
      • 常用選項
      • 最佳實踐
    • p72 查看進程樹
      • 14.4.1 基本語法
      • 14.4.2 常用選項
      • 14.4.3 應用實例:
    • p73 服務管理
      • 14.5.1 介紹:
      • 14.5.2 service 管理指令
      • service 管理指令案例
      • 14.5.4 查看服務名:
    • p74 服務管理(2)
      • 14.5.5 服務的運行級別(runlevel):
    • p75 服務管理(3)
      • 14.5.7 chkconfig 指令
        • 介紹
        • chkconfig 基本語法
        • 使用細節
    • p76 服務管理(4)
      • 14.5.8 systemctl 管理指令
      • 14.5.9 systemctl 設置服務的自啟動狀態
      • 14.5.10 應用案例:
      • 14.5.11 細節討論:
    • p77 服務管理(5)
      • 14.5.12 打開或者關閉指定端口
      • 14.5.13 firewall 指令
      • 14.5.14 應用案例:
    • p78 動態監控進程
      • 介紹:
      • 14.6.2 基本語法
        • 14.6.3 選項說明:
    • p79 交互操作說明
      • 14.6.5 應用實例
    • p80 監控網絡狀態
      • 14.7.1 查看系統網絡情況netstat
        • 基本語法
        • 選項說明
        • 應用案例
      • 14.7.2 檢測主機連接命令ping:
    • p81 進程管理小結
    • p82 rpm管理(1)
      • 15.1 rpm 包的管理
        • 15.1.1 介紹
        • 15.1.2 rpm 包的簡單查詢指令
        • 15.1.3 rpm 包名基本格式
        • 15.1.4 rpm 包的其它查詢指令:
    • p83 rpm的卸載
        • 15.1.5 卸載rpm 包:
          • 基本語法
          • 應用案例
          • 細節討論
        • 15.1.6 安裝rpm 包
          • 基本語法
          • 參數說明
          • 應用實例
    • p84 yum
      • 15.2.1 介紹:
      • 15.2.2 yum 的基本指令
      • 15.2.3 安裝指定的yum 包
      • 15.2.4 yum 應用實例:
    • p85 軟件包管理小結
    • p86 安裝配置JDK1.8
      • 16.1 概述
      • 16.2 安裝JDK
        • 16.2.1 安裝步驟
        • 16.2.2 測試是否安裝成功
    • p87 tomcat 的安裝
        • 16.3.1 步驟:
        • 16.3.2 測試是否安裝成功:
    • p88 idea2020 的安裝
      • 16.4.1 步驟
    • p89 mysql5.7 的安裝(!!)
    • p90 小結
    • p91 shell編程快速入門
      • 17.1 為什么要學習Shell 編程
      • 17.2 Shell 是什么
      • 17.3 Shell 腳本的執行方式
        • 17.3.1 腳本格式要求
        • 17.3.2 編寫第一個Shell 腳本
        • 17.3.3 腳本的常用執行方式
    • p92 shell變量
      • 17.4 Shell 的變量
        • 17.4.1 Shell 變量介紹
        • 17.4.2 shell 變量的定義
        • 17.4.3 shell 變量的定義
    • p93 設置環境變量
      • 17.5 設置環境變量
        • 17.5.1 基本語法
        • 17.5.2 快速入門
    • p94 位置參數變量
        • 17.6.1 介紹
        • 17.6.2 基本語法
        • 17.6.3 位置參數變量
    • p95 預定義變量
      • 17.7 預定義變量
        • 17.7.1 基本介紹
        • 17.7.2 基本語法
        • 17.7.3 應用實例
    • p96 運算符
        • 17.8.1 基本介紹
        • 17.8.2 基本語法
        • 17.8.3 應用實例oper.sh
    • p97 條件判斷
        • 17.9.1 判斷語句
          • 基本語法 :cry:
          • 應用實例 :no_bell:
          • 判斷語句 :fu:
          • 應用實例:rocket:
    • p98 流程控制
        • 17.10.1 if 判斷
          • 基本語法
      • :kissing:
      • :smirk:
    • p99 流程控制(2)
        • 17.10.2 case 語句
          • 基本語法
          • 應用實例 testCase.sh
    • p100 for 循環
        • 基本語法1:face_with_head_bandage:
        • 應用實例testFor1.sh:factory:
        • 基本語法2:face_with_thermometer:
        • 應用實例testFor2.sh:facepunch:
    • p101 while循環
        • 基本語法1
        • 應用實例testWhile.sh
    • p102 read 讀取控制臺輸入
        • 17.11.1 基本語法
        • 17.11.2 應用實例testRead.sh
    • p103 函數
        • 17.12.1 函數介紹
        • 17.12.2 系統函數
          • basename 基本語法
          • dirname 基本語法
    • p104 自定義函數
    • p105 Shell 編程綜合案例
      • 17.13.1 需求分析
        • 17.13.2 代碼/usr/sbin/mysql_db.backup.sh
    • p106 備份數據庫
    • p107 小結
    • p108 Ubuntu安裝
    • p109 中文包
    • p110 ubuntu的root
        • 18.4.1 介紹
        • 18.4.2 給root 用戶設置密碼并使用
    • p111 Ubuntu 下開發Python
        • 18.5.1 說明
        • 18.5.2 在Ubuntu 下開發一個Python 程序
    • p112 APT 軟件管理和遠程登錄
      • 19.1 apt 介紹
      • 19.2 Ubuntu 軟件操作的相關命令
        • 19.3.1 原理介紹
        • 19.3.2 尋找國內鏡像源
        • 19.3.3 尋找國內鏡像源
        • 19.3.4 備份Ubuntu 默認的源地址
        • 19.3.5 更新源服務器列表
    • p113 更新源和實例
        • 19.3.6 更新源
      • 19.4 Ubuntu 軟件安裝,卸載的最佳實踐
    • p114 ubuntu遠程登錄和集群
        • 19.5.1 ssh 介紹
        • 19.5.2 原理示意圖
        • 19.5.3 安裝SSH 和啟用
        • 19.5.4 在Windows 使用XShell6/XFTP6 登錄Ubuntu
        • 19.5.5 從一臺linux 系統遠程登陸另外一臺linux 系統
          • 基本語法:
          • 登出
    • p115 小結
    • p116 CentOS8.1/8.2的使用
      • 安裝Centos8.1/8.2
        • 20.1.1 Centos 下載地址
    • p117 日志管理
      • 21.1 基本介紹
      • 21.2 系統常用的日志
          • 應用案例
    • p118 日志管理服務rsyslogd
        • 21.3 日志管理服務rsyslogd
    • p119 日志服務配置文件
    • p120 自定義日志服務
    • p121 日志輪替
      • 21.4.1 基本介紹
      • 21.4.2 日志輪替文件命名
      • 21.4.3 logrotate 配置文件
    • p122 自定義日志輪替
        • 參數說明
      • 21.4.4 把自己的日志加入日志輪替
      • 21.4.5 應用實例
    • p123 日志輪替機制原理
      • 21.5 日志輪替機制原理
    • p124 查看內存日志
    • p125 小結
    • p126 定制自己的linux系統
      • 22.1 基本介紹
      • 22.2 基本原理
      • 22.3 制作min linux 思路分析
      • **制作自己的min linux(基于CentOS7.6)**
    • p127 定制自己的linux系統(2)
    • p128 小結
    • p129 Linux 內核源碼介紹&內核升級
      • 23.1 為什么要閱讀linux 內核?
      • 23.2 linux0.01 內核源碼
    • p130 linux0.01 內核源碼目錄&閱讀
      • 23.2.2 linux0.01 內核源碼目錄&閱讀
    • p131 linux 內核最新版和內核升級
        • 23.3.1 內核地址:https://www.kernel.org/ 查看
        • 23.3.2 下載&解壓最新版
        • 23.3.3 linux 內核升級應用實例
        • 23.3.4 具體步驟,看老師演示
    • p132 linux 內核最新版和內核升級(2)
    • p133 第24 章linux 系統-備份與恢復
      • 24.1 基本介紹
      • 24.2 安裝dump 和restore
      • 24.3 使用dump 完成備份
        • 24.3.1 基本介紹
        • 24.3.2 dump 語法說明
        • 24.3.3 dump 應用案例1
        • 24.3.4 dump 應用案例2
        • 24.3.5 dump -W
        • 24.3.6 查看備份時間文件
        • 24.3.7 dump 備份文件或者目錄
        • 24.3.8 老韓提醒
    • p134 數據備份與恢復
      • 24.4 使用restore 完成恢復
        • 24.4.1 基本介紹
        • 24.4.2 restore 基本語法
        • 24.4.3 應用案例1
        • 24.4.4 應用案例2
        • 24.4.5 應用案例3
        • 24.4.6 應用案例4
    • p135 數據備份與恢復(2)
    • p136 數據備份與恢復小結
    • p137 Linux 可視化管理-webmin 和bt 運維工具
      • 25.1 webmin
        • 25.1.1 基本介紹
        • 25.1.2 安裝webmin&配置
        • 在這個位置我出現了登錄不上去的問題,搜了很多方案沒有解決:cry:
    • p138 webmin演示
        • 25.1.3 簡單使用演示
    • p139 bt寶塔介紹和安裝
      • 25.2 bt(寶塔)
        • 25.2.1 基本介紹
        • 25.2.2 安裝和使用
        • myself command
    • p140 介紹
        • 25.2.3 使用介紹, 比如可以登錄終端, 配置,快捷安裝運行環境和系統工具, 添加計劃任務腳本
        • 25.2.4 如果bt 的用戶名,密碼忘記了,使用bt default 可以查看
    • p141 小結
    • p142 Linux 面試題-(騰訊,百度,美團,滴滴)
      • 26.1 分析日志t.log(訪問量),將各個ip 地址截取,并統計出現次數,并按從大到小排序(騰訊)
      • 26.2 統計連接到服務器的各個ip 情況,并按連接數從大到小排序(騰訊)
    • 其他

p1 課程內容

基礎篇

Linux入門

vm和linux的安裝

Linux目錄結構

實際操作篇

遠程登陸(Xshell XFtp)

實用指令

進程管理

用戶管理

Vi和Vim管理

定時任務調度

RPM和YUM

開機,重啟和用戶登陸注銷

磁盤分區,掛載

網絡配置

2021高級篇

日志管理

Linux內核源碼&內核升級

定制自己的Linux

Linux備份和恢復

Linux可視化管理webmin和bt運維工具

Linux入侵檢測&權限劃分&系統優化

Linux面試題(騰訊,百度,美團,滴滴 )

p2 應用領域

p3 概述

p4 Linux和Unix

p5 vmware15.5安裝

下載鏈接:https://www.nocmd.com/windows/740.html

p6 centOS7.6安裝

下載鏈接:http://mirrors.163.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

linux分區:3個區

boot 引導分區 1g

swap 交換分區 和內存大小一致2g 可以臨時充當內存

根分區 17g

p7 網絡連接的三種方式

橋接模式

會直接占用網段,會造成256個不夠用

虛擬系統可以和外部系統通訊,但是容易造成IP沖突

NAT模式

網絡地址轉換模式

虛擬系統可以和外部系統通訊,而且不造成IP沖突

主機模式

不和外部通訊

svn checkout https://192.168.0.144:8443/svn/ntbyrck/ --username=0027xxp --password=0027xxp D:\byrc

p8 虛擬機克隆

用于快速構建集群

方式一 直接拷貝一份安裝好的虛擬機文件

方式二 使用vmware的克隆操作(需要先關閉linux系統)

? 克隆方法

? 1.創建鏈接克隆(這只是引用)

? 2.創建完整克隆(這個是拷貝)

p9 虛擬機快照

在進行一些不確定的操作時,用于恢復原先的某個狀態,也叫快照管理

快照會占用一定空間

p10 虛擬機遷移和刪除

p11 vmtools

安裝后,在windows下更容易管理vm虛擬機,可以設置windows和centos的共享文件夾

1.進入centOS

2.點擊vm菜單的->install vmware tools

3.centos會出現一個vm安裝包,xx.tar.gz

4.拷貝到/opt

5.使用解壓命令tar,得到一個安裝文件

cd /opt

tar -zxvf

./ 進行安裝

可能會出現一些問題

參考鏈接

6.進入該vm解壓的目錄,/opt目錄下

7.安裝./vmware-install.pl

8.全部使用默認設置即可安裝成功

9.注意:安裝vmtools需要有gcc

主機的共享文件夾需要在vmware中設置

共享文件夾位置在/mnt/hgfs/

p12 第4章 linux目錄結構

linux采用層級樹狀結構,最上層根目錄/

/root root用戶的目錄

/home 每創建一個用戶都會出現一個用戶的主目錄

/bin 常用指令 環境設置 之類的文件 Binary

/sbin s代表Super user的意思

/etc 系統管理所需要的配置文件和子目錄 比如安裝了mysql數據庫 my.conf

/boot 系統啟動相關 核心文件,包括一些連接文件以及鏡像文件

/dev 設備管理器 linux會把所有的硬件映射成一個文件管理 一切皆文件

/media 自動識別設備掛載到這個目錄下

/lib 系統開機所需要的最基本的動態連接共享庫,作用類似Windows里的DDL文件。幾乎所有的應用程序都需要用到這些共享庫

/lost+found 一般是空的,當系統非法關機后,這里就存放了一些文件

/usr 用戶很多應用程序和文件都放在這個目錄下,類似windows下的program files 目錄

/proc 這個目錄是一個虛擬的目錄,它是系統內存的映射,訪問這個目錄來獲取系統信息

/srv service縮寫,存放一些服務啟動之后需要提取的數據

/sys linux2.6內核很大的一個變化 。安裝了新出現的文件系統 sysfs

/tmp 存放臨時文件

/mnt 為了讓用戶臨時掛載別的文件系統,我們可以把外部存儲掛載在/mnt/上,然后進入該目錄就可以查看里面的內容了。d:/myshare

/opt 這是主機額外安裝軟件(約定俗成)所擺放的目錄。如安裝Oracle數據庫就可擺放在該目錄下

掛載:例如將myshare文件夾掛載在/mnt/hgfs目錄下

/usr/local 額外安裝軟件所安裝的目錄,一般通過編譯源碼的方式安裝的程序

/var 這個目錄存放著不斷擴充著的東西,習慣將經常被修改的目錄放在這個目錄下。包括各種日志文件

/selinux[security-enhanced linux]

SELinux是一種安全子系統,它能控制程序只能訪問特定文件;三種工作模式,可以自行設置,需要啟用

p13 第5章 遠程登錄到Linux服務器

p14 遠程登錄

xshell6

p15 遠程文件傳輸

xftp6

p16 vi和vim編輯器

常用三種模式

正常模式

插入模式 iIoOaArR

命令行模式 輸入"esc" + “:” 或 “/” 再輸入:wq "wq"代表寫入并退出

p17 vi和vim快捷鍵

命令行模式輸入

:wq(保存退出)

:q(退出)

:q!(強制退出,不保存)

拷貝當前行 yy 拷貝當前行向下五行 5yy 粘貼 p

刪除當前行 dd 刪除當前行向下五行 5dd

查找 / + 所需的字段 n鍵用來切換

:setnu 顯示行號 :setnonu 關閉顯示行號

文檔最末行 G 最首行 gg 這些快捷鍵在一般模式下使用即可

指定行數 輸入行號 + shift +g

撤銷操作 一般模式下 按 u

p18 vi vim 內容整理

p19 第七章 開機、重啟和用戶注銷

shutdown -h now 立刻進行關機

shutdown -h 1 “hello,1分鐘后會關機了”

shutdown -r now 現在重新啟動計算機

halt 關機,作用和上面一樣

reboot 現在重啟

sync 內存同步到磁盤

不論重啟還是關閉系統,首先要運行sync指令,同步內存至磁盤

目前的shutdown/reboot/halt命令均已經在關機前進行了sync 建議還是先運行sync命令

p20 登錄注銷

su - 用戶名 為切換用戶

logout在圖形級界面運行級別是無效的 在運行級別3下有效

p21 用戶管理

添加用戶

useradd 用戶名

1.創建用戶成功后,會自動創建和用戶名同名的home目錄

2.也可以通過useradd -d 指定目錄 新的用戶名,給新創建的用戶指定家目錄

指定/修改密碼

passwd 用戶名(不寫用戶名會給當前登錄的用戶更改密碼)

顯示當前用戶 pwd

刪除用戶但是不刪除家目錄

userdel 用戶名

刪除用戶以及家目錄

userdel -r 用戶名 操作慎重 這樣刪除會把用戶家目錄所有內容刪除

一般情況下建議保留家目錄

p22 查詢用戶信息指令

基本語法

id 用戶名

切換用戶

su - 切換用戶名

權限高的用戶切換到權限低的不需要輸入密碼,反之需要

返回到原來的用戶 exit/logout

查看當前用戶/登錄用戶

基本語法

whoami/Who am I

p23 用戶組

介紹

類似于角色,系統可對有共性的多個用戶進行統一的管理

新增組

指令:groupadd 組名

刪除組

groupdel 組名

增加用戶時直接加上組

useradd -g 用戶組 用戶名

修改用戶的組

usermod -g 用戶組 用戶名

用戶和組相關文件

/etc/password 文件

用戶的配置文件

用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄shell

/etc/shadow 文件

口令配置文件

登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間標志

/etc/group 文件

組配置文件

組名:口令:組標志號:組內用戶列表

p24 用戶管理總結

p25 第九章 實用指令

指定運行級別

基本介紹

0:關機

1:單用戶【找回丟失密碼】

2:多用戶狀態沒有網絡服務

3:多用戶狀態有網絡服務

4:系統未使用保留給用戶

5:圖形界面

6:系統重啟

常用運行級別為3和5,也可以指定默認運行級別

init[0123456]

在centos7之前,/etc/inittab文件中指定

簡化為

multi-user.target:analogous to runlevel 3

graphical.target:analagous to runlevel 5

當前運行級別 systemctl get-default

systemctl set-default TARGET.target

p26 如何找回root密碼

參考鏈接

p27 幫助指令

man 命令或配置文件

Linux下,隱藏文件以.開頭 選項可以組合使用

help 命令

p28 文件目錄類

pwd 指令

顯示當前工作目錄絕對路徑

ls 指令

ls 目錄或文件

常用選項

-a 所有

-l 列表

應用實例

查看當前目錄所有內容信息

cd指令

cd ~ 或者cd :回到自己的家目錄

cd… 回到當前目錄的上一級目錄

p28 文件目錄類(2)

mkdir指令

創建目錄 mkdir 要創建的目錄

常見選項

-p:創建多級目錄

案例一:創建一個目錄 /home/dog

mkdir /home/dog

案例二:創建一個多級目錄 /home/animal/tiger

mkdir -p /home/animal/tiger

rmdir指令

刪除空目錄

rmdir 要刪除的空目錄

案例:刪除一個目錄 /home/dog

細節注意:刪除的是空目錄,有內容則無法刪除

如果要刪除非空目錄,需要使用 rm-rf 要刪除的目錄

例:rm -rf /home/animal

touch 指令

創建空文件

touch 文件名稱

案例:創建一個空文件 hello.txt

p30 文件目錄指令(3)

cp指令

拷貝文件到指定目錄

cp [選項] source dest

常用選項

-r:遞歸復制整個文件夾

cp hello.txt /home/bbb

cp -r /home/bbb /opt/

\cp 表示強制覆蓋不提示

rm指令

移除文件或目錄

rm [選項] 要刪除的文件或目錄

常用選項:

-r:遞歸刪除整個文件夾

-f:強制刪除不提示

案例一:將/home/hello.txt 刪除,rm /home/hello.txt

案例二:遞歸刪除整個文件夾 /home/bbb,rm -rf /home/bbb

p31 文件目錄指令(4)

mv指令

mv移動文件與目錄或重命名

基本語法

mv oldNameFile newNameFile (功能描述:重命名)

mv /temp/movefile /targetFolder (功能描述:移動文件)

實例

案例一:將/home/cat.txt 文件 重新命名為pig.txt

案例二:將/home/pig.txt 文件 移動到/root目錄下

案例三:移動整個目錄

cat指令

cat 查看文件內容

基本用法

? cat [選項] 要查看的文件

常用選項

? -n:顯示行號

cat只能瀏覽文件,而不能修改文件,為了瀏覽方便,一般會帶上 管道命令| more

管道指的是 將前面得到的結果交給后面的指令來完成

more 指令

基于vi編輯器的文本過濾器,全屏幕按頁顯示文本文件內容。more指令中內置了若干快捷鍵

基本語法:

more 要查看的文件

less指令

分屏查看文件內容,功能與more類似,但比more更加強大,支持各種顯示終端。less指令在顯示文件內容時,并不是一次將整個文件加載之后才顯示,而是根據顯示需要加載內容,對于大型文件具有更高的效率。

基本語法

less 要查看的文件

應用實例

案例: 采用less 查看一個大文件文件 /opt/雜文.txt

less /opt/雜文.txt

echo 指令

echo 輸出內容到控制臺

基本語法

echo [選項] [輸出內容]

應用實例

案例: 使用echo 指令輸出環境變量, 比如輸出 $PATH $HOSTNAME, echo $HOSTNAME

案例: 使用echo 指令輸出hello,world!

head 指令

head 用于顯示文件的開頭部分內容,默認情況下head 指令顯示文件的前10 行內容

基本語法

head 文件(功能描述:查看文件頭10 行內容)

head -n 5 文件(功能描述:查看文件頭5 行內容,5 可以是任意行數)

應用實例

案例: 查看/etc/profile 的前面5 行代碼

head -n 5 /etc/profile

tail 指令

tail 用于輸出文件中尾部的內容,默認情況下tail 指令顯示文件的前10 行內容。

基本語法

  • tail 文件(功能描述:查看文件尾10 行內容)

  • tail -n 5 文件(功能描述:查看文件尾5 行內容,5 可以是任意行數)

  • tail -f 文件(功能描述:實時追蹤該文檔的所有更新)

  • 應用實例

    案例1: 查看/etc/profile 最后5 行的代碼

    tail -n 5 /etc/profile

    案例2: 實時監控mydate.txt , 看看到文件有變化時,是否看到, 實時的追加hello,world

    tail -f /home/mydate.txt

    > 指令和>> 指令

    > 輸出重定向(覆蓋)和>> 追加

    基本語法

  • ls -l >文件(功能描述:列表的內容寫入文件a.txt 中(覆蓋寫))

  • ls -al >>文件(功能描述:列表的內容追加到文件aa.txt 的末尾)

  • cat 文件1 > 文件2 (功能描述:將文件1 的內容覆蓋到文件2)

  • echo “內容”>> 文件(追加)

  • 應用實例

    案例1: 將/home 目錄下的文件列表寫入到/home/info.txt 中, 覆蓋寫入

    ls -l /home > /home/info.txt [如果info.txt 沒有,則會創建]

    案例2: 將當前日歷信息追加到/home/mycal 文件中

    指令為: cal >> /home/mycal

    ln 指令

    link

    軟鏈接也稱為符號鏈接,類似于windows 里的快捷方式,主要存放了鏈接其他文件的路徑

    基本語法

    ln -s [原文件或目錄] [軟鏈接名] (功能描述:給原文件創建一個軟鏈接)

    應用實例

    案例1: 在/home 目錄下創建一個軟連接myroot,連接到/root 目錄

    history 指令

    查看已經執行過歷史命令,也可以執行歷史指令

    基本語法

    history (功能描述:查看已經執行過歷史命令)

    應用實例

    案例1: 顯示所有的歷史命令

    history

    案例2: 顯示最近使用過的10 個指令。

    history 10

    案例3:執行歷史編號為5 的指令

    !5

    p34 時間日期類

    時間日期類

    date 指令-顯示當前日期

    基本語法

  • date (功能描述:顯示當前時間)
  • date +%Y (功能描述:顯示當前年份)
  • date +%m(功能描述:顯示當前月份)
  • date +%d (功能描述:顯示當前是哪一天)
  • date “+%Y-%m-%d %H:%M:%S”(功能描述:顯示年月日時分秒)
  • 應用實例
    案例1: 顯示當前時間信息
    date
    案例2: 顯示當前時間年月日
    date “+%Y-%m-%d”

    案例3: 顯示當前時間年月日時分秒
    date “+%Y-%m-%d %H:%M:%S”

    date 指令-設置日期

    基本語法
    date -s 字符串時間

    應用實例
    案例1: 設置系統當前時間, 比如設置成2020-11-03 20:02:10
    date -s “2020-11-03 20:02:10”

    cal 指令

    查看日歷指令cal

    基本語法
    cal [選項] (功能描述:不加選項,顯示本月日歷)

    應用實例
    案例1: 顯示當前日歷cal
    案例2: 顯示2020 年日歷: cal 2020

    p35 查找指令(1)

    搜索查找類

    find指令

    find 指令將從指定目錄向下遞歸地遍歷其各個子目錄,將滿足條件的文件或者目錄顯示在終端。

    基本語法
    find [搜索范圍] [選項]

    選項說明

    應用實例
    案例1: 按文件名:根據名稱查找/home 目錄下的hello.txt 文件
    find /home -name hello.txt
    案例2:按擁有者:查找/opt 目錄下,用戶名稱為nobody 的文件
    find /opt -user nobody
    案例3:查找整個linux 系統下大于200M 的文件(+n 大于-n 小于n 等于, 單位有k,M,G)
    find / -size +200M

    ls -lh h表示大小用k,m之類表示

    locate 指令

    locate 指令可以快速定位文件路徑。locate 指令利用事先建立的系統中所有文件名稱及路徑的locate 數據庫實現快速定位給定的文件。Locate 指令無需遍歷整個文件系統,查詢速度較快。為了保證查詢結果的準確度,管理員必須定期更新locate 時刻

    基本語法

    locate 搜索文件

    特別說明

    由于locate 指令基于數據庫進行查詢,所以第一次運行前,必須使用updatedb 指令創建locate 數據庫。

    應用實例

    案例1: 請使用locate 指令快速定位hello.txt 文件所在目錄
    which 指令,可以查看某個指令在哪個目錄下,比如ls 指令在哪個目錄
    which ls

    p36 查找指令(2)

    grep 指令和管道符號 |

    grep 過濾查找, 管道符,“|”,表示將前一個命令的處理結果輸出傳遞給后面的命令處理。

    基本語法

    grep [選項] 查找內容源文件

    常用選項

    應用實例

    案例1: 請在hello.txt 文件中,查找"yes" 所在行,并且顯示行號
    寫法1: cat /home/hello.txt | grep “yes”
    寫法2: grep -n “yes” /home/hello.txt

    p37 壓縮和解壓類

    gzip/gunzip 指令

    gzip 用于壓縮文件, gunzip 用于解壓的

    基本語法

    gzip 文件(功能描述:壓縮文件,只能將文件壓縮為*.gz 文件)
    gunzip 文件.gz (功能描述:解壓縮文件命令)

    應用實例

    案例1: gzip 壓縮, 將/home 下的hello.txt 文件進行壓縮
    gzip /home/hello.txt
    案例2: gunzip 壓縮, 將/home 下的hello.txt.gz 文件進行解壓縮
    gunzip /home/hello.txt.gz

    zip/unzip 指令

    zip 用于壓縮文件, unzip 用于解壓的,這個在項目打包發布中很有用的

    基本語法

    zip [選項] XXX.zip 將要壓縮的內容(功能描述:壓縮文件和目錄的命令)
    unzip [選項] XXX.zip (功能描述:解壓縮文件)

    zip 常用選項

    -r:遞歸壓縮,即壓縮目錄

    unzip 的常用選項

    -d<目錄> :指定解壓后文件的存放目錄

    p38 壓縮和解壓類(2)

    tar 指令

    tar 指令是打包指令,最后打包后的文件是.tar.gz 的文件。

    基本語法

    tar [選項] XXX.tar.gz 打包的內容(功能描述:打包目錄,壓縮后的文件格式.tar.gz)

    選項說明

    應用實例

    案例1: 壓縮多個文件,將/home/pig.txt 和/home/cat.txt 壓縮成pc.tar.gz
    tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
    案例2: 將/home 的文件夾壓縮成myhome.tar.gz
    tar -zcvf myhome.tar.gz /home/
    案例3: 將pc.tar.gz 解壓到當前目錄
    tar -zxvf pc.tar.gz
    案例4: 將myhome.tar.gz 解壓到/opt/tmp2 目錄下(1) mkdir /opt/tmp2 (2) tar -zxvf /home/myhome.tar.gz -C /opt/tmp2

    p39 實用指令小結

    p40 第十章 Linux組的介紹

    Linux 組基本介紹

    在linux 中的每個用戶必須屬于一個組,不能獨立于組外。在linux 中每個文件
    有所有者、所在組、其它組的概念。

  • 所有者
  • 所在組
  • 其它組
  • 改變用戶所在的組
  • p41 所有者

    文件/目錄所有者

    一般為文件的創建者,誰創建了該文件,就自然的成為該文件的所有者。

    查看文件的所有者

    指令:ls –ahl
    應用實例

    修改文件所有者

    (change owner)

    指令:chown 用戶名 文件名
    應用案例
    要求:使用root 創建一個文件apple.txt ,然后將其所有者修改成tom
    chown tom apple.txt

    組的創建

    基本指令

    groupadd 組名

    應用實例

    創建一個組, ,monster
    groupadd monster

    創建一個用戶fox ,并放入到monster 組中
    useradd -g monster fox

    p42 所在組

    文件/目錄所在組

    當某個用戶創建了一個文件后,這個文件的所在組就是該用戶所在的組(默認)。

    查看文件/目錄所在組

    基本指令

    ls –ahl
    應用實例, 使用fox 來創建一個文件,看看該文件屬于哪個組?

    -rw-r–r--. 1 fox monster 0 12月 30 15:08 ok.txt

    修改文件/目錄所在的組

    基本指令

    chgrp 組名文件名

    應用實例

    使用root 用戶創建文件orange.txt ,看看當前這個文件屬于哪個組,然后將這個文件所在組,修改到fruit 組。

  • groupadd fruit

  • touch orange.txt

  • 看看當前這個文件屬于哪個組-> root 組

  • chgrp fruit orange.txt

  • p43 修改所在組

    其它組

    除文件的所有者和所在組的用戶外,系統的其它用戶都是文件的其它組

    改變用戶所在組

    在添加用戶時,可以指定將該用戶添加到哪個組中,同樣的用root 的管理權限可以改變某個用戶所在的組。

    改變用戶所在組

    usermod –g 新組名用戶名
    usermod –d 目錄名用戶名改變該用戶登陸的初始目錄。特別說明:用戶需要有進入到新目錄的權限。

    應用實例

    將zwj 這個用戶從原來所在組,修改到wudang 組
    usermod -g wudang zwj

    p44 rwx權限

    權限的基本介紹

    ls -l 中顯示的內容如下:
    -rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

    0-9 位說明
    第0 位確定文件類型(d, - , l , c , b)
    -代表是一個普通文件
    l 是鏈接,相當于windows 的快捷方式 link
    d 是目錄,相當于windows 的文件夾
    c 是字符設備文件,鼠標,鍵盤
    b 是塊設備,比如硬盤
    第1-3 位確定所有者(該文件的所有者)擁有該文件的權限。—User
    第4-6 位確定所屬組(同用戶組的)擁有該文件的權限,—Group
    第7-9 位確定其他用戶擁有該文件的權限—Other

    rwx 權限詳解,難點

    rwx 作用到文件

  • [ r ]代表可讀(read): 可以讀取,查看
  • [ w ]代表可寫(write): 可以修改,但是不代表可以刪除該文件,刪除一個文件的前提條件是對該文件所在的目錄有寫權
    限,才能刪除該文件.
  • [ x ]代表可執行(execute):可以被執行
  • rwx 作用到目錄

  • [ r ]代表可讀(read): 可以讀取,ls 查看目錄內容
  • [ w ]代表可寫(write): 可以修改, 對目錄內創建+刪除+重命名目錄
  • [ x ]代表可執行(execute):可以進入該目錄
  • p45 權限說明案例

    ls -l 中顯示的內容如下:

    -rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

    10 個字符確定不同用戶能對文件干什么

    第一個字符代表文件類型: - l d c b
    其余字符每3 個一組(rwx) 讀? 寫(w) 執行(x)
    第一組rwx : 文件擁有者的權限是讀、寫和執行
    第二組rw- : 與文件擁有者同一組的用戶的權限是讀、寫但不能執行
    第三組r-- : 不與文件擁有者同組的其他用戶的權限是讀不能寫和執行

    可用數字表示為: r=4,w=2,x=1 因此rwx=4+2+1=7 , 數字可以進行組合

    其它說明
    1 文件:硬連接數或目錄:子目錄數
    root 用戶
    root 組
    1213 文件大小(字節),如果是文件夾,顯示4096 字節
    Feb 2 09:39 最后修改日期
    abc 文件名

    p46 修改權限

    修改權限-chmod

    基本說明:

    通過chmod 指令,可以修改文件或者目錄的權限。

    第一種方式:+ 、-、= 變更權限

    u:所有者g:所有組o:其他人a:所有人(u、g、o 的總和)

  • chmod u=rwx,g=rx,o=x 文件/目錄名
  • chmod o+w 文件/目錄名
  • chmod a-x 文件/目錄名
  • 案例演示
  • 給abc 文件的所有者讀寫執行的權限,給所在組讀執行權限,給其它組讀執行權限。
    chmod u=rwx,g=rx,o=rx abc
  • 給abc 文件的所有者除去執行的權限,增加組寫的權限
    chmod u-x,g+w abc
  • 給abc 文件的所有用戶添加讀的權限
    chmod a+r abc
  • 第二種方式:通過數字變更權限

    r=4 w=2 x=1 rwx=4+2+1=7
    chmod u=rwx,g=rx,o=x 文件目錄名
    相當于chmod 751 文件/目錄名

    案例演示

    要求:將/home/abc.txt 文件的權限修改成rwxr-xr-x, 使用給數字的方式實現:

    chmod 755 /home/abc.txt

    p47 修改所在組和所有者

    基本介紹

    chown newowner 文件/目錄改變所有者
    chown newowner:newgroup 文件/目錄改變所有者和所在組

    -R 如果是目錄則使其下所有子文件或目錄遞歸生效

    案例演示

  • 請將/home/abc.txt 文件的所有者修改成tom
    chown tom /home/abc.txt

  • 請將/home/test 目錄下所有的文件和目錄的所有者都修改成tom
    chown -R tom /home/test

  • 修改文件/目錄所在組-chgrp

    基本介紹

    chgrp newgroup 文件/目錄【改變所在組】

    案例演示

    請將/home/abc .txt 文件的所在組修改成shaolin (少林)
    groupadd shaolin
    chgrp shaolin /home/abc.txt
    請將/home/test 目錄下所有的文件和目錄的所在組都修改成shaolin(少林)
    chgrp -R shaolin /home/test

    p48 最佳實踐-警察和土匪游戲

    police , bandit
    jack, jerry: 警察
    xh, xq: 土匪

  • 創建組groupadd police ; groupadd bandit
  • 創建用戶
    useradd -g police jack ; useradd -g police jerry
    useradd -g bandit xh; useradd -g bandit xq
  • jack 創建一個文件,自己可以讀r 寫w,本組人可以讀,其它組沒人任何權限
    首先jack 登錄; vim jack.txt ; chmod 640 jack.txt
  • jack 修改該文件,讓其它組人可以讀, 本組人可以讀寫
    chmod o=r,g=r jack.txt
  • xh 投靠警察,看看是否可以讀寫.
    usermod -g police xh
  • 測試,看看xh 是否可以讀寫,xq 是否可以, 小結論,就是如果要對目錄內的文件進行操作,需要要有對該目錄的
    相應權限
  • p49文件權限管理[課堂練習1]

  • 建立兩個組(神仙(sx),妖怪(yg))

  • 建立四個用戶(唐僧,悟空,八戒,沙僧)

  • 設置密碼

  • 把悟空,八戒放入妖怪唐僧沙僧在神仙

  • 用悟空建立一個文件(monkey.java 該文件要輸出i am monkey)

  • 給八戒一個可以r w 的權限

  • 八戒修改monkey.java 加入一句話( i am pig)

  • 唐僧沙僧對該文件沒有權限

  • 把沙僧放入妖怪組

  • 讓沙僧修改該文件monkey, 加入一句話(“我是沙僧,我是妖怪!”);

  • 對文件夾rwx 的細節討論和測試!!!
    x: 表示可以進入到該目錄, 比如cd
    r: 表示可以ls , 將目錄的內容顯示
    w: 表示可以在該目錄,刪除或者創建文件

  • 示意圖

  • 課堂練習2,完成如下操作

  • 用root 登錄,建立用戶mycentos,自己設定密碼
  • 用mycentos 登錄,在主目錄下建立目錄test/t11/t1
  • 在t1 中建立一個文本文件aa,用vi 編輯其內容為ls –al
  • 改變aa 的權限為可執行文件[可以將當前日期追加到一個文件],運行該文件./aa
  • 刪除新建立的目錄test/t11/t1
  • 刪除用戶mycentos 及其主目錄中的內容
  • 將linux 設置成進入到圖形界面的
  • 重新啟動linux 或關機
  • p50 第10章總結

    p51 第11章 定時任務調度

    crond 任務調度

    crontab 進行 定時任務的設置

    概述

    任務調度:是指系統在某個時間執行的特定的命令或程序。
    任務調度分類:1.系統工作:有些重要的工作必須周而復始地執行。如病毒掃描等
    個別用戶工作:個別用戶可能希望執行某些程序,比如對mysql 數據庫的備份。
    示意圖

    p52 crontab

    基本語法

    crontab [選項]

    常用選項

    快速入門

    設置任務調度文件:/etc/crontab
    設置個人任務調度。執行crontab –e 命令。
    接著輸入任務到調度文件
    如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
    意思說每小時的每分鐘執行ls –l /etc/ > /tmp/to.txt 命令

    參數細節說明

    cron表達式

    5 個占位符的說明

    p53 crond 時間規則

    特殊時間執行案例

    每天的凌晨4點,每10分鐘的時間段為 4-5點之內

    p54 crond應用實例

    案例1:每隔1 分鐘,就將當前的日期信息,追加到/tmp/mydate 文件中

    */1 * * * * date >> /tmp/mydate

    案例2:每隔1 分鐘, 將當前日期和日歷都追加到/home/mycal 文件中
    步驟:

    (1) vim /home/my.sh 寫入內容date >> /home/mycal 和cal >> /home/mycal
    (2) 給my.sh 增加執行權限,chmod u+x /home/my.sh
    (3) crontab -e 增加*/1 * * * * /home/my.sh

    crond 相關指令

    conrtab –r:終止任務調度。其實就是刪除crondtab -e 中的任務
    crontab –l:列出當前有那些任務調度
    service crond restart [重啟任務調度]

    p55 at定時任務

    基本介紹

  • at 命令是一次性定時計劃任務,at 的守護進程atd 會以后臺模式運行,檢查作業隊列來運行。
  • 默認情況下,atd 守護進程每60 秒檢查作業隊列(任務隊列),有作業時,會檢查作業運行時間,如果時間與當前時間匹配,則
    運行此作業。
  • at 命令是一次性定時計劃任務,執行完一個任務后不再執行此任務了
  • 在使用at 命令的時候,一定要保證atd 進程的啟動, 可以使用相關指令來查看
    ps -ef | grep atd //可以檢測atd 是否在運行
  • ps -ef 檢測現在有哪些進程在運行

    | grep 過濾

  • 畫一個示意圖
  • at 命令格式

    at [選項] [時間]
    Ctrl + D 結束at 命令的輸入, 輸出兩次

    at 命令選項

    at 時間定義

    at 指定時間的方法:

  • 接受在當天的hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那么就放在第二天執行。例如:04:00
  • 使用midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午4 點)等比較模糊的詞語來指定時間。
  • 采用12 小時計時制,即在時間后面加上AM(上午)或PM(下午)來說明是上午還是下午。例如:12pm
  • 指定命令執行的具體日期,指定格式為month day(月日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指
    定的日期必須跟在指定時間的后面。例如:04:00 2021-03-1
  • 使用相對計時法。指定格式為:now + count time-units ,now 就是當前時間,time-units 是時間單位,這里能夠是minutes
    (分鐘)、hours(小時)、days(天)、weeks(星期)。count 是時間的數量,幾天,幾小時。例如:now + 5 minutes
  • 直接使用today(今天)、tomorrow(明天)來指定完成命令的時間。
  • p56 at任務調度實例

    案例1:2 天后的下午5 點執行/bin/ls /home

    案例2:atq 命令來查看系統中沒有執行的工作任務

    案例3:明天17 點鐘,輸出時間到指定文件內比如/root/date100.log

    案例4:2 分鐘后,輸出時間到指定文件內比如/root/date200.log

    案例5:刪除已經設置的任務, atrm 編號

    atrm 4 //表示將job 隊列,編號為4 的job 刪除.

    默認刪除鍵變^H,只要按住ctrl鍵,刪除鍵就可以使用了~

    p57 任務調度小結

    p58 磁盤分區機制

    Linux 分區

    原理介紹

  • Linux 來說無論有幾個分區,分給哪一目錄使用,它歸根結底就只有一個根目錄,一個獨立且唯一的文件結構, Linux
    中每個分區都是用來組成整個文件系統的一部分。
  • Linux 采用了一種叫“載入”的處理方法,它的整個文件系統中包含了一整套的文件和目錄,且將一個分區和一個目錄
    聯系起來。這時要載入的一個分區將使它的存儲空間在一個目錄下獲得。
  • 示意圖
  • 硬盤說明

  • Linux 硬盤分IDE 硬盤和SCSI 硬盤,目前基本上是SCSI 硬盤
  • 對于IDE 硬盤,驅動器標識符為“hdx~”,其中“hd”表明分區所在設備的類型,這里是指IDE 硬盤了。“x”為盤號(a 為
    基本盤,b 為基本從屬盤,c 為輔助主盤,d 為輔助從屬盤),“~”代表分區,前四個分區用數字1 到4 表示,它們是主分區或擴展分區,從5 開始就是邏輯分區。例,hda3 表示為第一個IDE 硬盤上的第三個主分區或擴展分區,hdb2表示為第二個IDE 硬盤上的第二個主分區或擴展分區。
  • 對于SCSI 硬盤則標識為“sdx~”,SCSI 硬盤是用“sd”來表示分區所在設備的類型的,其余則和IDE 硬盤的表示方法一樣
  • 查看所有設備掛載情況

    命令:lsblk 或者lsblk -f

    p59 增加磁盤應用實例

    掛載的經典案例

    說明:

    下面我們以增加一塊硬盤為例來熟悉下磁盤的相關指令和深入理解磁盤分區、掛載、卸載的概念。

    如何增加一塊硬盤

  • 虛擬機添加硬盤
  • 分區
  • 格式化
  • 掛載
  • 設置可以自動掛載
  • 虛擬機增加硬盤步驟1

    在【虛擬機】菜單中,選擇【設置】,然后設備列表里添加硬盤,然后一路【下一步】,中間只有選擇磁盤大小的地方
    需要修改,至到完成。然后重啟系統(才能識別)!

    虛擬機增加硬盤步驟2

    分區命令fdisk /dev/sdb

    開始對/sdb 分區
    m 顯示命令列表
    p 顯示磁盤分區同fdisk –l
    n 新增分區
    d 刪除分區
    w 寫入并退出

    說明: 開始分區后輸入n,新增分區,然后選擇p ,分區類型為主分區。兩次回車默認剩余全部空間。最后輸入w
    寫入分區并退出,若不保存退出輸入q。

    虛擬機增加硬盤步驟3

    格式化磁盤
    分區命令:mkfs -t ext4 /dev/sdb1
    其中ext4 是分區類型

    虛擬機增加硬盤步驟4

    掛載: 將一個分區與一個目錄聯系起來,
    mount 設備名稱掛載目錄
    例如: mount /dev/sdb1 /newdisk

    umount 設備名稱或者掛載目錄

    例如: umount /dev/sdb1 或者umount /newdisk

    老師注意: 用命令行掛載,重啟后會失效

    問題:1.能否在一個目錄下掛載多個分區

    不能,只能掛載一個

    如果切換掛載 已經寫入的文件位置仍然不變

    虛擬機增加硬盤步驟5

    永久掛載: 通過修改/etc/fstab 實現掛載
    添加完成后執行mount –a 即刻生效

    p60 磁盤情況查詢

    查詢系統整體磁盤使用情況

    基本語法

    df -h

    應用實例

    查詢系統整體磁盤使用情況

    查詢指定目錄的磁盤占用情況

    基本語法

    du -h

    查詢指定目錄的磁盤占用情況,默認為當前目錄
    -s 指定目錄占用大小匯總
    -h 帶計量單位
    -a 含文件
    –max-depth=1 子目錄深度
    -c 列出明細的同時,增加匯總值

    應用實例

    查詢/opt 目錄的磁盤占用情況,深度為1

    p61 磁盤情況-工作實用指令

  • 統計/opt 文件夾下文件的個數
    ls -l /opt | grep “^-” | wc -l
  • 統計/opt 文件夾下目錄的個數
    ls -l /opt | grep “^d” | wc -l
  • 統計/opt 文件夾下文件的個數,包括子文件夾里的
    ls -lR /opt | grep “^-” | wc -l

  • 統計/opt 文件夾下目錄的個數,包括子文件夾里的
    ls -lR /opt | grep “^d” | wc -l

  • 以樹狀顯示目錄結構tree 目錄, 注意,如果沒有tree ,則使用yum install tree 安裝

  • p62 磁盤掛載小結

    p63 NAT網絡原理圖

    p64 網絡配置指令

    查看網絡IP 和網關

    ip自動分配與指定ip

    查看網關

    查看windows 環境的中VMnet8 網絡配置(ipconfig 指令)

    查看linux 的網絡配置ifconfig

    ping 測試主機之間網絡連通性

    基本語法

    ping 目的主機(功能描述:測試當前服務器是否可以連接目的主機)

    應用實例

    測試當前服務器是否可以連接百度
    ping www.baidu.com

    p65 網絡配置實例

    linux 網絡環境配置

    第一種方法(自動獲取):

    說明:登陸后,通過界面的來設置自動獲取ip,特點:linux 啟動后會自動獲取IP,缺點是每次自動獲取的ip 地址可
    能不一樣

    [外鏈圖片轉存中…(img-F39wjlym-1621999041398)]

    第二種方法(指定ip)

    說明
    直接修改配置文件來指定IP,并可以連接到外網(程序員推薦)

    編輯vi /etc/sysconfig/network-scripts/ifcfg-ens33
    要求:將ip 地址配置的靜態的,比如: ip 地址為192.168.200.130

    ifcfg-ens33 文件說明

    DEVICE=eth0 #接口名(設備,網卡)

    HWADDR=00:0C:2x:6x:0x:xx #MAC 地址

    TYPE=Ethernet #網絡類型(通常是Ethemet)

    UUID=926a57ba-92c6-4231-bacb-f27e5e6a9f44 #隨機id

    #系統啟動的時候網絡接口是否有效(yes/no)
    ONBOOT=yes

    #IP 的配置方法[none|static|bootp|dhcp](引導時不使用協議|靜態分配IP|BOOTP 協議|DHCP 協議)
    BOOTPROTO=static
    #IP 地址
    IPADDR=192.168.200.130
    #網關
    GATEWAY=192.168.200.2
    #域名解析器
    DNS1=192.168.200.2
    重啟網絡服務或者重啟系統生效
    service network restart 、reboot

    p66 主機名和hosts映射

    設置主機名

  • 為了方便記憶,可以給linux 系統設置主機名, 也可以根據需要修改主機名
  • 指令hostname : 查看主機名
  • 修改文件在/etc/hostname 指定
  • 修改后,重啟生效
  • 設置hosts 映射

    思考:如何通過主機名能夠找到(比如ping) 某個linux 系統?

    windows
    在C:\Windows\System32\drivers\etc\hosts 文件指定即可

    win10無法修改host文件參考

    案例: 192.168.200.130 hspedu100

    linux
    在/etc/hosts 文件指定

    案例: 192.168.200.1 ThinkPad-PC

    主機名解析過程分析(Hosts、DNS)

    Hosts 是什么

    一個文本文件,用來記錄IP 和Hostname(主機名)的映射關系

    DNS

    DNS,就是Domain Name System 的縮寫,翻譯過來就是域名系統
    是互聯網上作為域名和IP 地址相互映射的一個分布式數據庫

    應用實例: 用戶在瀏覽器輸入了www.baidu.com

  • 瀏覽器先檢查瀏覽器緩存中有沒有該域名解析IP 地址,有就先調用這個IP 完成解析;如果沒有,就檢查DNS 解析
    器緩存,如果有直接返回IP 完成解析。這兩個緩存,可以理解為本地解析器緩存
  • 一般來說,當電腦第一次成功訪問某一網站后,在一定時間內,瀏覽器或操作系統會緩存他的IP 地址(DNS 解析記
    錄).如在cmd 窗口中輸入
    ipconfig /displaydns //DNS 域名解析緩存
    ipconfig /flushdns //手動清理dns 緩存
  • 如果本地解析器緩存沒有找到對應映射,檢查系統中hosts 文件中有沒有配置對應的域名IP 映射,如果有,則完成
    解析并返回。
  • 如果本地DNS 解析器緩存和hosts 文件中均沒有找到對應的IP,則到域名服務DNS 進行解析域
  • 示意圖
  • p67 網絡配置小結

    p68 進程基本介紹

  • 在LINUX 中,每個執行的程序都稱為一個進程。每一個進程都分配一個ID 號(pid,進程號)。=>windows => linux
  • 每個進程都可能以兩種方式存在的。前臺與后臺,所謂前臺進程就是用戶目前的屏幕上可以進行操作的。后臺進程
    則是實際在操作,但由于屏幕上無法看到的進程,通常使用后臺方式執行。
  • 一般系統的服務都是以后臺進程的方式存在,而且都會常駐在系統中。直到關機才才結束。
  • 示意圖
  • p69 ps指令詳解

    顯示系統執行的進程

    基本介紹

    ps 命令是用來查看目前系統中,有哪些正在執行,以及它們執行的狀況。可以不加任何參數.

    [外鏈圖片轉存中…(img-y3IOZRBM-1621999041399)]

    ps 詳解

  • 指令:ps –aux|grep xxx ,比如我看看有沒有sshd 服務

  • 指令說明

  • System V 展示風格
    USER:用戶名稱
    PID:進程號
    %CPU:進程占用CPU 的百分比
    %MEM:進程占用物理內存的百分比
    VSZ:進程占用的虛擬內存大小(單位:KB)
    RSS:進程占用的物理內存大小(單位:KB)
    TT:終端名稱,縮寫.
    STAT:進程狀態,其中S-睡眠,s-表示該進程是會話的先導進程,N-表示進程擁有比普通優先級更 低的優先級,R-
    正在運行,D-短期等待,Z-僵死進程,T-被跟蹤或者被停止等等
    STARTED:進程的啟動時間
    TIME:CPU 時間,即進程使用CPU 的總時間
    COMMAND:啟動進程所用的命令和參數,如果過長會被截斷顯示

    p70 父子進程

    應用實例

    要求:以全格式顯示當前所有的進程,查看進程的父進程。查看sshd 的父進程信息
    ps -ef 是以全格式顯示當前所有的進程
    -e 顯示所有進程。-f 全格式
    ps -ef|grep sshd

    是BSD 風格
    UID:用戶ID
    PID:進程ID
    PPID:父進程ID
    C:CPU 用于計算執行優先級的因子。數值越大,表明進程是CPU 密集型運算,執行優先級會降低;數值越小,表
    明進程是I/O 密集型運算,執行優先級會提高
    STIME:進程啟動的時間
    TTY:完整的終端名稱
    TIME:CPU 時間
    CMD:啟動進程所用的命令和參數

    p71 終止進程kill 和killall

    介紹:

    若是某個進程執行一半需要停止時,或是已消了很大的系統資源時,此時可以考慮停止該進程。使用kill 命令來完
    成此項任務。

    基本語法

    kill [選項] 進程號(功能描述:通過進程號殺死/終止進程)
    killall 進程名稱(功能描述:通過進程名稱殺死進程,也支持通配符,這在系統因負載過大而變得很慢時很有用)

    常用選項

    -9 :表示強迫進程立即停止

    最佳實踐

  • 案例1:踢掉某個非法登錄用戶
    kill 進程號, 比如kill 11421
  • 案例2: 終止遠程登錄服務sshd, 在適當時候再次重啟sshd 服務
    kill sshd 對應的進程號; /bin/systemctl start sshd.service
  • 案例3: 終止多個gedit , 演示killall gedit
  • 案例4:強制殺掉一個終端, 指令kill -9 bash 對應的進程號
  • p72 查看進程樹

    14.4.1 基本語法

    pstree [選項] ,可以更加直觀的來看進程信息

    14.4.2 常用選項

    -p :顯示進程的PID
    -u :顯示進程的所屬用戶

    14.4.3 應用實例:

    ? 案例1:請你樹狀的形式顯示進程的pid
    pstree -p
    ? 案例2:請你樹狀的形式進程的用戶
    pstree -u

    p73 服務管理

    14.5.1 介紹:

    服務(service) 本質就是進程,但是是運行在后臺的,通常都會監聽某個端口,等待其它程序的請求,比如(mysqld , sshd
    防火墻等),因此我們又稱為守護進程,是Linux 中非常重要的知識點。【原理圖】

    14.5.2 service 管理指令

  • service 服務名[start | stop | restart | reload | status]
  • 在CentOS7.0 后很多服務不再使用 service ,而是 systemctl (后面專門講)
  • service 指令管理的服務在/etc/init.d 查看
  • service 管理指令案例

    請使用service 指令,查看,關閉,啟動network [注意:在虛擬系統演示,因為網絡連接會關閉]
    指令:
    service network status
    service network stop
    service network start

    14.5.4 查看服務名:

    方式1:使用setup -> 系統服務就可以看到全部。
    setup

    按tab會進入圖形化界面的下面的菜單 ,利于退出

    方式2: /etc/init.d 看到service 指令管理的服務
    ls -l /etc/init.d

    p74 服務管理(2)

    14.5.5 服務的運行級別(runlevel):

    Linux 系統有7 種運行級別(runlevel):常用的是級別3 和5
    運行級別0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動
    運行級別1:單用戶工作狀態,root 權限,用于系統維護,禁止遠程登陸
    運行級別2:多用戶狀態(沒有NFS),不支持網絡
    運行級別3:完全的多用戶狀態(有NFS),無界面,登陸后進入控制臺命令行模式
    運行級別4:系統未使用,保留
    運行級別5:X11 控制臺,登陸后進入圖形GUI 模式
    運行級別6:系統正常關閉并重啟,默認運行級別不能設為6,否則不能正常啟動
    開機的流程說明:

    p75 服務管理(3)

    14.5.7 chkconfig 指令

    介紹

    通過chkconfig 命令可以給服務的各個運行級別設置自啟動/關閉
    chkconfig 指令管理的服務在/etc/init.d 查看
    注意: Centos7.0 后,很多服務使用systemctl 管理(后面馬上講)

    chkconfig 基本語法

  • 查看服務chkconfig --list [| grep xxx]
  • chkconfig 服務名–list
  • chkconfig --level 5 服務名on/off
    ? 案例演示: 對network 服務進行各種操作, 把network 在3 運行級別,關閉自啟動
    chkconfig --level 3 network off
    chkconfig --level 3 network on
  • 使用細節

    chkconfig 重新設置服務后自啟動或關閉,需要重啟機器reboot 生效.

    p76 服務管理(4)

    14.5.8 systemctl 管理指令

    基本語法: systemctl [start | stop | restart | status] 服務名
    systemctl 指令管理的服務在/usr/lib/systemd/system 查看

    14.5.9 systemctl 設置服務的自啟動狀態

    systemctl list-unit-files [ | grep 服務名] (查看服務開機啟動狀態, grep 可以進行過濾)
    systemctl enable 服務名(設置服務開機啟動)
    systemctl disable 服務名(關閉服務開機啟動)
    systemctl is-enabled 服務名(查詢某個服務是否是自啟動的)

    14.5.10 應用案例:

    查看當前防火墻的狀況,關閉防火墻和重啟防火墻。=> firewalld.service
    systemctl status firewalld; systemctl stop firewalld; systemctl start firewalld

    14.5.11 細節討論:

    關閉或者啟用防火墻后,立即生效。[telnet 測試某個端口即可]
    這種方式只是臨時生效,當重啟系統后,還是回歸以前對服務的設置。
    如果希望設置某個服務自啟動或關閉永久生效,要使用systemctl [enable|disable] 服務名. [演示]

    p77 服務管理(5)

    14.5.12 打開或者關閉指定端口

    在真正的生產環境,往往需要將防火墻打開,但問題來了,如果我們把防火墻打開,那么外部請求數據包就不能跟
    服務器監聽端口通訊。這時,需要打開指定的端口。比如80、22、8080 等,這個又怎么做呢?老韓給給大家講一講。[示
    意圖]

    14.5.13 firewall 指令

  • 打開端口: firewall-cmd --permanent --add-port=端口號/協議
  • 關閉端口: firewall-cmd --permanent --remove-port=端口號/協議
  • 重新載入,才能生效: firewall-cmd --reload
  • 查詢端口是否開放: firewall-cmd --query-port=端口/協議
  • 14.5.14 應用案例:

  • 啟用防火墻, 測試111 端口是否能telnet , 不行
  • 開放111 端口
    firewall-cmd --permanent --add-port=111/tcp ; 需要firewall-cmd --reload
  • 再次關閉111 端口
    firewall-cmd --permanent --remove-port=111/tcp ; 需要firewall-cmd --reload
  • p78 動態監控進程

    介紹:

    top 與ps 命令很相似。它們都用來顯示正在執行的進程。Top 與ps 最大的不同之處,在于top 在執行一段時間可以
    更新正在運行的的進程。

    14.6.2 基本語法

    top [選項]

    14.6.3 選項說明:

    p79 交互操作說明

    14.6.5 應用實例

    ? 案例1.監視特定用戶, 比如我們監控tom 用戶
    top:輸入此命令,按回車鍵,查看執行的進程。
    u:然后輸入“u”回車,再輸入用戶名,即可,
    ? 案例2:終止指定的進程, 比如我們要結束tom 登錄
    top:輸入此命令,按回車鍵,查看執行的進程。
    k:然后輸入“k”回車,再輸入要結束的進程ID 號
    ? 案例3:指定系統狀態更新的時間(每隔10 秒自動更新), 默認是3 秒
    top -d 10

    p80 監控網絡狀態

    14.7.1 查看系統網絡情況netstat

    基本語法

    netstat [選項]

    選項說明

    -an 按一定順序排列輸出
    -p 顯示哪個進程在調用

    應用案例

    請查看服務名為sshd 的服務的信息。
    netstat -anp | grep sshd

    14.7.2 檢測主機連接命令ping:

    是一種網絡檢測工具,它主要是用檢測遠程主機是否正常,或是兩部主機間的網線或網卡故障。
    如: ping 對方ip 地址

    p81 進程管理小結

    p82 rpm管理(1)

    15.1 rpm 包的管理

    15.1.1 介紹

    rpm 用于互聯網下載包的打包及安裝工具,它包含在某些Linux 分發版中。它生成具有.RPM 擴展名的文件。RPM
    是RedHat Package Manager(RedHat 軟件包管理工具)的縮寫,類似windows 的setup.exe,這一文件格式名稱雖然打上
    了RedHat 的標志,但理念是通用的。
    Linux 的分發版本都有采用(suse,redhat, centos 等等),可以算是公認的行業標準了。

    15.1.2 rpm 包的簡單查詢指令

    查詢已安裝的rpm 列表rpm –qa|grep xx
    舉例: 看看當前系統,是否安裝了firefox
    指令: rpm -qa | grep firefox

    15.1.3 rpm 包名基本格式

    一個rpm 包名:firefox-60.2.2-1.el7.centos.x86_64
    名稱:firefox
    版本號:60.2.2-1
    適用操作系統: el7.centos.x86_64
    表示centos7.x 的64 位系統
    如果是i686、i386 表示32 位系統,noarch 表示通用

    15.1.4 rpm 包的其它查詢指令:

    rpm -qa :查詢所安裝的所有rpm 軟件包
    rpm -qa | more
    rpm -qa | grep X [rpm -qa | grep firefox ]

    rpm -q 軟件包名:查詢軟件包是否安裝
    案例:rpm -q firefox
    rpm -qi 軟件包名:查詢軟件包信息
    案例: rpm -qi firefox
    rpm -ql 軟件包名:查詢軟件包中的文件
    比如: rpm -ql firefox
    rpm -qf 文件全路徑名查詢文件所屬的軟件包
    rpm -qf /etc/passwd
    rpm -qf /root/install.log

    p83 rpm的卸載

    15.1.5 卸載rpm 包:

    基本語法

    rpm -e RPM 包的名稱//erase

    應用案例

    刪除firefox 軟件包
    rpm -e firefox

    細節討論
  • 如果其它軟件包依賴于您要卸載的軟件包,卸載時則會產生錯誤信息。
    如: $ rpm -e foo
    removing these packages would break dependencies:foo is needed by bar-1.0-1
  • 如果我們就是要刪除foo 這個rpm 包,可以增加參數–nodeps ,就可以強制刪除,但是一般不推薦這樣做,因為依
    賴于該軟件包的程序可能無法運行
    如:$ rpm -e --nodeps foo
  • 15.1.6 安裝rpm 包

    基本語法

    rpm -ivh RPM 包全路徑名稱

    參數說明

    i=install 安裝
    v=verbose 提示
    h=hash 進度條

    應用實例

    演示卸載和安裝firefox 瀏覽器
    rpm -e firefox
    rpm -ivh firefox

    😢 2021年2月20日10點59分

    p84 yum

    15.2.1 介紹:

    Yum 是一個Shell 前端軟件包管理器。基于RPM 包管理,能夠從指定的服務器自動
    下載RPM 包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包。
    示意圖

    15.2.2 yum 的基本指令

    查詢yum 服務器是否有需要安裝的軟件
    yum list|grep xx 軟件列表

    15.2.3 安裝指定的yum 包

    yum install xxx 下載安裝

    15.2.4 yum 應用實例:

    案例:請使用yum 的方式來安裝firefox
    rpm -e firefox
    yum list | grep firefox
    yum install firefox

    p85 軟件包管理小結

    p86 安裝配置JDK1.8

    16.1 概述

    如果需要在Linux 下進行JavaEE 的開發,我們需要安裝如下軟件

    16.2 安裝JDK

    16.2.1 安裝步驟

  • mkdir /opt/jdk
  • 通過xftp6 上傳到/opt/jdk 下
  • cd /opt/jdk
  • 解壓tar -zxvf jdk-8u261-linux-x64.tar.gz
  • mkdir /usr/local/java
  • mv /opt/jdk/jdk1.8.0_261 /usr/local/java
  • 配置環境變量的配置文件vim /etc/profile
  • export JAVA_HOME=/usr/local/java/jdk1.8.0_261
  • export PATH=JAVAHOME/bin:JAVA_HOME/bin:JAVAH?OME/bin:PATH
  • source /etc/profile [讓新的環境變量生效]
  • 刷新系統環境變量

    16.2.2 測試是否安裝成功

    編寫一個簡單的Hello.java 輸出"hello,world!"

    p87 tomcat 的安裝

    16.3.1 步驟:

  • 上傳安裝文件,并解壓縮到/opt/tomcat
  • 進入解壓目錄/bin , 啟動tomcat ./startup.sh
  • 開放端口8080 , 回顧firewall-cmd
  • 16.3.2 測試是否安裝成功:

    在windows、Linux 下訪問http://linuxip:8080

    p88 idea2020 的安裝

    16.4.1 步驟

  • 下載地址: https://www.jetbrains.com/idea/download/#section=windows
  • 解壓縮到/opt/idea
  • 啟動idea bin 目錄下./idea.sh,配置jdk
  • 編寫Hello world 程序并測試成功!
  • p89 mysql5.7 的安裝(!!)

  • 新建文件夾/opt/mysql,并cd進去

  • 運行wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar,下載mysql安裝包

  • PS:centos7.6自帶的類mysql數據庫是mariadb,會跟mysql沖突,要先刪除。

  • 運行tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

  • 運行rpm -qa|grep mari,查詢mariadb相關安裝包

  • 運行rpm -e --nodeps mariadb-libs,卸載

  • 然后開始真正安裝mysql,依次運行以下幾條

  • rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm

    rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm

    rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm

    rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm

  • 運行systemctl start mysqld.service,啟動mysql

  • 然后開始設置root用戶密碼

  • Mysql自動給root用戶設置隨機密碼,運行grep “password” /var/log/mysqld.log可看到當前密碼

  • 運行mysql -u root -p,用root用戶登錄,提示輸入密碼可用上述的,可以成功登陸進入mysql命令行

  • 設置root密碼,對于個人開發環境,如果要設比較簡單的密碼(生產環境服務器要設復雜密碼),可以運行

  • set global validate_password_policy=0; 提示密碼設置策略

    (validate_password_policy默認值1,)

  • set password for ‘root’@‘localhost’ =password(‘xjxj1109’);

  • 運行flush privileges;使密碼設置生效

  • p90 小結

    p91 shell編程快速入門

    17.1 為什么要學習Shell 編程

  • Linux 運維工程師在進行服務器集群管理時,需要編寫Shell 程序來進行服務器管理。
  • 對于JavaEE 和Python 程序員來說,工作的需要,你的老大會要求你編寫一些Shell 腳本進行程序或者是服務器的維
    護,比如編寫一個定時備份數據庫的腳本。
  • 對于大數據程序員來說,需要編寫Shell 程序來管理集群
  • 17.2 Shell 是什么

    Shell 是一個命令行解釋器,它為用戶提供了一個向Linux 內核發送請求以便運行程序的界面系統級程序,用戶可以
    用Shell 來啟動、掛起、停止甚至是編寫一些程序。看一個示意圖

    17.3 Shell 腳本的執行方式

    17.3.1 腳本格式要求

  • 腳本以#!/bin/bash 開頭
  • 腳本需要有可執行權限
  • chmod u+x [file]

    17.3.2 編寫第一個Shell 腳本

    需求說明:創建一個Shell 腳本,輸出hello world!
    vim hello.sh
    #!/bin/bash
    echo “hello,world~”

    可以使用絕對也可以使用相對路徑來執行這個腳本,前提是有可執行權限

    ./hello.sh 相對路徑

    /root/shcode/hello.sh 絕對路徑

    17.3.3 腳本的常用執行方式

    方式1(輸入腳本的絕對路徑或相對路徑)
    說明:首先要賦予helloworld.sh 腳本的+x 權限, 再執行腳本
    比如./hello.sh 或者使用絕對路徑/root/shcode/hello.sh
    方式2(sh+腳本)
    說明:不用賦予腳本+x 權限,直接執行即可。
    比如sh hello.sh , 也可以使用絕對路徑

    p92 shell變量

    17.4 Shell 的變量

    17.4.1 Shell 變量介紹

  • Linux Shell 中的變量分為,系統變量和用戶自定義變量。
  • 系統變量:HOME、HOME、HOMEPWD、SHELL、SHELL、SHELLUSER 等等,比如: echo $HOME 等等…
  • 顯示當前shell 中所有變量:set
  • 17.4.2 shell 變量的定義

    基本語法

  • 定義變量:變量名=值
  • 中間不要空格

  • 撤銷變量:unset 變量
  • 聲明靜態變量:readonly 變量,注意:不能unset
    快速入門
  • 案例1:定義變量A
  • 案例2:撤銷變量A
  • 案例3:聲明靜態的變量B=2,不能unset
  • #!/bin/bash #案例1:定義變量A A=100 #輸出變量需要加上$ echo A=$A echo "A=$A" #案例2:撤銷變量A unset A echo "A=$A" #案例3:聲明靜態的變量B=2,不能unset readonly B=2 echo "B=$B" #unset B #將指令返回的結果賦給變量 :<<! C=`date` D=$(date) echo "C=$C" echo "D=$D" ! #使用環境變量TOMCAT_HOME echo "tomcat_home=$TOMCAT_HOME"
  • 案例4:可把變量提升為全局環境變量,可供其他shell 程序使用[該案例后面講]
  • 17.4.3 shell 變量的定義

    定義變量的規則

  • 變量名稱可以由字母、數字和下劃線組成,但是不能以數字開頭。5A=200(×)
  • 等號兩側不能有空格
  • 變量名稱一般習慣為大寫, 這是一個規范,我們遵守即可
    將命令的返回值賦給變量
  • A=date反引號,運行里面的命令,并把結果返回給變量A
  • A=$(date) 等價于反引號
  • p93 設置環境變量

    17.5 設置環境變量

    17.5.1 基本語法

  • export 變量名=變量值(功能描述:將shell 變量輸出為環境變量/全局變量)
  • source 配置文件(功能描述:讓修改后的配置信息立即生效)
  • echo $變量名(功能描述:查詢環境變量的值)
  • 示意
  • 17.5.2 快速入門

  • 在/etc/profile 文件中定義TOMCAT_HOME 環境變量
  • 查看環境變量TOMCAT_HOME 的值
  • 在另外一個shell 程序中使用TOMCAT_HOME
    注意:在輸出TOMCAT_HOME 環境變量前,需要讓其生效
    source /etc/profile
  • shell 腳本的多行注釋
    :<<! 內容!

    p94 位置參數變量

    17.6.1 介紹

    當我們執行一個shell 腳本時,如果希望獲取到命令行的參數信息,就可以使用到位置參數變量
    比如: ./myshell.sh 100 200 , 這個就是一個執行shell 的命令行,可以在myshell 腳本中獲取到參數信息

    17.6.2 基本語法

    $n (功能描述:n 為數字,$0 代表命令本身,$1-9代表第一到第九個參數,十以上的參數,十以上的參數需要用大括號包含,如9 代表第一到第九個參數,十以上的參數,十以上的參數需要用 大括號包含,如9{10})
    ?(功能描述:這個變量代表命令行中所有的參數,* (功能描述:這個變量代表命令行中所有的參數,?*把所有的參數看成一個整體)
    @(功能描述:這個變量也代表命令行中所有的參數,不過@(功能描述:這個變量也代表命令行中所有的參數,不過@@把每個參數區分對待)
    $#(功能描述:這個變量代表命令行中所有參數的個數)

    17.6.3 位置參數變量

    案例:編寫一個shell 腳本position.sh , 在腳本中獲取到命令行的各個參數信息。

    p95 預定義變量

    17.7 預定義變量

    17.7.1 基本介紹

    就是shell 設計者事先已經定義好的變量,可以直接在shell 腳本中使用

    17.7.2 基本語法

  • $$ (功能描述:當前進程的進程號(PID))
  • $! (功能描述:后臺運行的最后一個進程的進程號(PID))
  • $?(功能描述:最后一次執行的命令的返回狀態。如果這個變量的值為0,證明上一個命令正確執行;如果這個變
    量的值為非0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了。)
  • 17.7.3 應用實例

    在一個shell 腳本中簡單使用一下預定義變量
    preVar.sh
    #!/bin/bash
    echo “當前執行的進程id=$KaTeX parse error: Expected 'EOF', got '#' at position 3: " #?以后臺的方式運行一個腳本,并獲…!”
    echo “執行的結果是=$?”

    p96 運算符

    17.8.1 基本介紹

    學習如何在shell 中進行各種運算操作。

    17.8.2 基本語法

    1) “$((運算式))”或“$[運算式]”或者expr m + n //expression 表達式 2) 注意expr 運算符間要有 空格 , 如果希望將expr 的結果賦給某個變量,使用`` 3) expr m - n 4) expr \*, /, % 乘,除,取余

    17.8.3 應用實例oper.sh

    案例1:計算(2+3)X4 的值 案例2:請求出命令行的兩個參數[整數]的和20 50 #!/bin/bash #案例1:計算(2+3)X4 的值 #使用第一種方式 RES1=$(((2+3)*4)) echo "res1=$RES1" #使用第二種方式, 推薦使用 RES2=$[(2+3)*4] echo "res2=$RES2" #使用第三種方式expr TEMP=`expr 2 + 3` RES4=`expr $TEMP \* 4` echo "temp=$TEMP" echo "res4=$RES4" #案例2:請求出命令行的兩個參數[整數]的和20 50 SUM=$[$1+$2] echo "sum=$SUM"

    p97 條件判斷

    17.9.1 判斷語句

    基本語法 😢

    [ condition ](注意condition 前后要有空格)
    #非空返回true,可使用$?驗證(0 為true,>1 為false)

    應用實例 🔕

    [ hspEdu ] 返回true
    [ ] 返回false
    [ condition ] && echo OK || echo notok 條件滿足,執行后面的語句

    判斷語句 🖕

    常用判斷條件

  • = 字符串比較

  • 兩個整數的比較
    -lt 小于
    -le 小于等于little equal
    -eq 等于
    -gt 大于
    -ge 大于等于
    -ne 不等于

  • 按照文件權限進行判斷
    -r 有讀的權限
    -w 有寫的權限
    -x 有執行的權限

  • 按照文件類型進行判斷
    -f 文件存在并且是一個常規的文件
    -e 文件存在
    -d 文件存在并是一個目錄

  • 應用實例🚀

    案例1:“ok"是否等于"ok”
    判斷語句:使用=
    案例2:23 是否大于等于22
    判斷語句:使用-ge
    案例3:/root/shcode/aaa.txt 目錄中的文件是否存在
    判斷語句: 使用-f
    代碼如下:

    p98 流程控制

    17.10.1 if 判斷

    基本語法
    if [ 條件判斷式] then 代碼 fi 或者, 多分支if [ 條件判斷式] then 代碼 elif [條件判斷式] then 代碼 fi

    注意事項:[ 條件判斷式],中括號和條件判斷式之間必須有空格
    應用實例ifCase.sh
    案例:請編寫一個shell 程序,如果輸入的參數,大于等于60,則輸出"及格了",如果小于60,則輸出"不及格"

    😗

    😏

    p99 流程控制(2)

    17.10.2 case 語句

    基本語法

    case $變量名in
    “值1”)
    如果變量的值等于值1,則執行程序1
    ;;
    “值2”)
    如果變量的值等于值2,則執行程序2
    ;;
    …省略其他分支…

    *)
    如果變量的值都不是以上的值,則執行此程序
    ;;
    esac

    應用實例 testCase.sh

    案例1 :當命令行參數是1 時,輸出"周一", 是2 時,就輸出"周二", 其它情況輸出"other"

    p100 for 循環

    基本語法1🤕

    for 變量in 值1 值2 值3…
    do
    程序/代碼
    done

    應用實例testFor1.sh🏭

    案例1 :打印命令行輸入的參數[這里可以看出?和* 和?@ 的區別]

    基本語法2🤒

    for (( 初始值;循環控制條件;變量變化))
    do
    程序/代碼
    done

    應用實例testFor2.sh👊

    案例1 :從1 加到100 的值輸出顯示

    p101 while循環

    基本語法1

    while [ 條件判斷式]
    do
    程序/代碼
    done
    注意:while 和[有空格,條件判斷式和[也有空格

    應用實例testWhile.sh

    案例1 :從命令行輸入一個數n,統計從1+…+ n 的值是多少?

    #!/bin/bash #案例1 :從命令行輸入一個數n,統計從1+..+ n 的值是多少? SUM=0 i=0 while [ $i -le $1 ] do SUM=$[$SUM+$i] #i 自增 i=$[$i+1] done echo "執行結果=$SUM"

    p102 read 讀取控制臺輸入

    17.11.1 基本語法

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

    17.11.2 應用實例testRead.sh

    案例1:讀取控制臺輸入一個NUM1 值
    案例2:讀取控制臺輸入一個NUM2 值,在10 秒內輸入。
    代碼:

    #!/bin/bash #案例1:讀取控制臺輸入一個NUM1 值 read -p "請輸入一個數NUM1=" NUM1 echo "你輸入的NUM1=$NUM1" #案例2:讀取控制臺輸入一個NUM2 值,在10 秒內輸入。 read -t 10 -p "請輸入一個數NUM2=" NUM2 echo "你輸入的NUM2=$NUM2"

    p103 函數

    17.12.1 函數介紹

    shell 編程和其它編程語言一樣,有系統函數,也可以自定義函數。系統函數中,我們這里就介紹兩個。

    17.12.2 系統函數

    basename 基本語法

    功能:返回完整路徑最后/ 的部分,常用于獲取文件名
    basename [pathname] [suffix]
    basename [string] [suffix] (功能描述:basename 命令會刪掉所有的前綴包括最后一個(‘/’)字符,然后將字符串
    顯示出來。
    選項:
    suffix 為后綴,如果suffix 被指定了,basename 會將pathname 或string 中的suffix 去掉。

    應用實例
    案例1:請返回/home/aaa/test.txt 的"test.txt" 部分
    basename /home/aaa/test.txt

    dirname 基本語法

    功能:返回完整路徑最后/ 的前面的部分,常用于返回路徑部分
    dirname 文件絕對路徑(功能描述:從給定的包含絕對路徑的文件名中去除文件名(非目錄的部分),然后返回剩
    下的路徑(目錄的部分))
    應用實例
    案例1:請返回/home/aaa/test.txt 的/home/aaa
    dirname /home/aaa/test.txt

    p104 自定義函數

    基本語法
    [ function ] funname[()]
    {
    Action;
    [return int;]
    }
    調用直接寫函數名:funname [值]
    應用實例
    案例1:計算輸入兩個參數的和(動態的獲取), getSum
    代碼

    #!/bin/bash #案例1:計算輸入兩個參數的和(動態的獲取), getSum #定義函數getSum function getSum() { SUM=$[$n1+$n2] echo "和是=$SUM" } #輸入兩個值 read -p "請輸入一個數n1=" n1 read -p "請輸入一個數n2=" n2 #調用自定義函數 getSum $n1 $n2

    p105 Shell 編程綜合案例

    17.13.1 需求分析

  • 每天凌晨2:30 備份數據庫hspedu 到/data/backup/db
  • 備份開始和備份結束能夠給出相應的提示信息
  • 備份后的文件要求以備份時間為文件名,并打包成.tar.gz 的形式,比如:2021-03-12_230201.tar.gz
  • 在備份的同時,檢查是否有10 天前備份的數據庫文件,如果有就將其刪除。
  • 畫一個思路分析圖
  • [外鏈圖片轉存中…(img-GDocIJI8-1621999041412)]

    17.13.2 代碼/usr/sbin/mysql_db.backup.sh

    #備份目錄 BACKUP=/data/backup/db #當前時間 DATETIME=$(date +%Y-%m-%d_%H%M%S) echo $DATETIME #數據庫的地址 HOST=localhost #數據庫用戶名 DB_USER=root #數據庫密碼 DB_PW=hspedu100 #備份的數據庫名 DATABASE=hspedu #創建備份目錄, 如果不存在,就創建 [ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}" #備份數據庫 mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz #將文件處理成tar.gz cd ${BACKUP} tar -zcvf $DATETIME.tar.gz ${DATETIME} #刪除對應的備份目錄 rm -rf ${BACKUP}/${DATETIME} #刪除10 天前的備份文件 find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "備份數據庫${DATABASE} 成功~"

    p106 備份數據庫

    p107 小結

    p108 Ubuntu安裝

    p109 中文包

    p110 ubuntu的root

    18.4.1 介紹

    安裝ubuntu 成功后,都是普通用戶權限,并沒有最高root 權限,如果需要使用root 權限的時候,通常都會在命令
    前面加上sudo 。有的時候感覺很麻煩。(演示)
    我們一般使用su 命令來直接切換到root 用戶的,但是如果沒有給root 設置初始密碼,就會拋出su : Authentication
    failure 這樣的問題。所以,我們只要給root 用戶設置一個初始密碼就好了。

    18.4.2 給root 用戶設置密碼并使用

  • 輸入sudo passwd 命令,設定root 用戶密碼。
  • 設定root 密碼成功后,輸入su 命令,并輸入剛才設定的root 密碼,就可以切換成root 了。提示符$代表一般用戶,
    提示符#代表root 用戶。
  • 以后就可以使用root 用戶了
  • 輸入exit 命令,退出root 并返回一般用戶
  • p111 Ubuntu 下開發Python

    18.5.1 說明

    安裝好Ubuntu 后,默認就已經安裝好Python 的開發環境。

    18.5.2 在Ubuntu 下開發一個Python 程序

    vi hello.py [編寫hello.py]
    python3 hello.py [運行hello.py]

    p112 APT 軟件管理和遠程登錄

    19.1 apt 介紹

    apt 是Advanced Packaging Tool 的簡稱,是一款安裝包管理工具。在Ubuntu 下,我們可以使用apt 命令進行軟件包
    的安裝、刪除、清理等,類似于Windows 中的軟件管理工具。
    unbuntu 軟件管理的原理示意圖:

    19.2 Ubuntu 軟件操作的相關命令

    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 軟件下載地址

    19.3.1 原理介紹

    (畫出示意圖)

    19.3.2 尋找國內鏡像源

    https://mirrors.tuna.tsinghua.edu.cn/
    所謂的鏡像源:可以理解為提供下載軟件的地方,比如Android 手機上可以下載軟件的安卓市場;iOS 手機上可
    以下載軟件的AppStore

    19.3.3 尋找國內鏡像源

    19.3.4 備份Ubuntu 默認的源地址

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

    19.3.5 更新源服務器列表

    先清空sources.list 文件復制鏡像網站的地址

    復制鏡像網站的地址, 拷貝到sources.list 文件

    [外鏈圖片轉存中…(img-caiK2xFB-1621999041415)]

    p113 更新源和實例

    19.3.6 更新源

    更新源地址:sudo apt-get update

    19.4 Ubuntu 軟件安裝,卸載的最佳實踐

    案例說明:使用apt 完成安裝和卸載vim 軟件,并查詢vim 軟件的信息:(因為使用了鏡像網站, 速度很快)
    sudo apt-get remove vim //刪除
    sudo apt-get install vim //安裝
    sudo apt-cache show vim //獲取軟件信息

    p114 ubuntu遠程登錄和集群

    19.5.1 ssh 介紹

    SSH 為Secure Shell 的縮寫,由IETF 的網絡工作小組(Network Working Group)所制
    定;SSH 為建立在應用層和傳輸層基礎上的安全協議。

    SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。常用于遠程登錄。幾乎所有UNIX/LInux
    平臺都可運行SSH。
    使用SSH 服務,需要安裝相應的服務器和客戶端。客戶端和服務器的關系:如果,A 機器想被B 機器遠程控制,
    那么,A 機器需要安裝SSH 服務器,B 機器需要安裝SSH 客戶端。
    和CentOS 不一樣,Ubuntu 默認沒有安裝SSHD 服務(使用netstat 指令查看: apt install net-tools),因此,我們不能進行遠程登錄。

    19.5.2 原理示意圖

    19.5.3 安裝SSH 和啟用

    sudo apt-get install openssh-server
    執行上面指令后,在當前這臺Linux 上就安裝了SSH 服務端和客戶端。
    service sshd restart
    執行上面的指令,就啟動了sshd 服務。會監聽端口22

    19.5.4 在Windows 使用XShell6/XFTP6 登錄Ubuntu

    前面我們已經安裝了XShell6,直接使用即可。
    注意:使用hspEdu 用戶登錄,需要的時候再su - 切換成root 用戶

    19.5.5 從一臺linux 系統遠程登陸另外一臺linux 系統

    在創建服務器集群時,會使用到該技術

    基本語法:

    ssh 用戶名@IP
    例如:ssh hspedu@192.168.200.130
    使用ssh 訪問,如訪問出現錯誤。可查看是否有該文件~/.ssh/known_ssh 嘗試刪除該文件解決,一般不會有問題

    登出

    登出命令:exit 或者logout

    p115 小結

    p116 CentOS8.1/8.2的使用

    安裝Centos8.1/8.2

    20.1.1 Centos 下載地址

    CentOS-8.1.1911-x86_64-dvd1.iso CentOS 8.1/8.2 DVD 版8G (未來的主流.)
    https://mirrors.aliyun.com/centos/8.1.1911/isos/x86_64/

    p117 日志管理

    21.1 基本介紹

  • 日志文件是重要的系統信息文件,其中記錄了許多重要的系統事件,包括用戶的登錄信息、系統的啟動信息、系統
    的安全信息、郵件相關信息、各種服務相關信息等。
  • 日志對于安全來說也很重要,它記錄了系統每天發生的各種事情,通過日志來檢查錯誤發生的原因,或者受到攻擊
    時攻擊者留下的痕跡。
  • 可以這樣理解日志是用來記錄重大事件的工具
  • 21.2 系統常用的日志

    /var/log/ 目錄就是系統日志文件的保存位置,看張圖

    系統常用的日志

    應用案例

    使用root 用戶通過xshell6 登陸, 第一次使用錯誤的密碼,第二次使用正確的密碼登錄成功
    看看在日志文件/var/log/secure 里有沒有記錄相關信息

    p118 日志管理服務rsyslogd

    21.3 日志管理服務rsyslogd

    CentOS7.6 日志服務是rsyslogd , CentOS6.x 日志服務是syslogd 。rsyslogd 功能更強大。rsyslogd 的使用、日志
    文件的格式,和syslogd 服務兼容的。原理示意圖

    p119 日志服務配置文件

    查詢Linux 中的rsyslogd 服務是否啟動
    ps aux | grep “rsyslog” | grep -v “grep”

    -v 表示反向匹配 表示查詢不包含grep的服務

    查詢rsyslogd 服務的自啟動狀態
    systemctl list-unit-files | grep rsyslog
    配置文件:/etc/rsyslog.conf
    編輯文件時的格式為: . 存放日志文件
    其中第一個代表日志類型,第二個代表日志級別

  • 日志類型分為:
    auth ##pam 產生的日志
  • authpriv ##ssh、ftp 等登錄信息的驗證信息
    corn ##時間任務相關
    kern ##內核
    lpr ##打印
    mail ##郵件
    mark(syslog)-rsyslog##服務內部的信息,時間標識
    news ##新聞組
    user ##用戶程序產生的相關信息
    uucp ##unix to nuix copy 主機之間相關的通信
    local 1-7 ##自定義的日志設備
    2) 日志級別分為:
    debug ##有調試信息的,日志通信最多
    info ##一般信息日志,最常用
    notice ##最具有重要性的普通條件的信息
    warning ##警告級別
    err ##錯誤級別,阻止某個功能或者模塊不能正常工作的信息
    crit ##嚴重級別,阻止整個系統或者整個軟件不能正常工作的信息
    alert ##需要立刻修改的信息
    emerg ##內核崩潰等重要信息
    none ##什么都不記錄
    注意:從上到下,級別從低到高,記錄信息越來越少
    由日志服務rsyslogd 記錄的日志文件,日志文件的格式包含以下4 列:

  • 事件產生的時間
  • 產生事件的服務器的主機名
  • 產生事件的服務名或程序名
  • 事件的具體信息
  • 日志如何查看實例
    查看一下/var/log/secure 日志,這個日志中記錄的是用戶驗證和授權方面的信息來分析如何查看

    p120 自定義日志服務

    日志管理服務應用實例
    在/etc/rsyslog.conf 中添加一個日志文件/var/log/hsp.log,當有事件發送時(比如sshd 服務相關事件),該文件會接收到
    信息并保存. 給小伙伴演示重啟,登錄的情況,看看是否有日志保存

    [外鏈圖片轉存中…(img-7W28wukM-1621999041420)]

    p121 日志輪替

    21.4.1 基本介紹

    日志輪替就是把舊的日志文件移動并改名,同時建立新的空日志文件,當舊日志文件超出保存的范圍之后,就會進
    行刪除

    21.4.2 日志輪替文件命名

  • centos7 使用logrotate 進行日志輪替管理,要想改變日志輪替文件名字,通過/etc/logrotate.conf 配置文件中“dateext”
    參數:

  • 如果配置文件中有“dateext”參數,那么日志會用日期來作為日志文件的后綴,例如“secure-20201010”。這樣日
    志文件名不會重疊,也就不需要日志文件的改名, 只需要指定保存日志個數,刪除多余的日志文件即可。

  • 如果配置文件中沒有“dateext”參數,日志文件就需要進行改名了。當第一次進行日志輪替時,當前的“secure”日
    志會自動改名為“secure.1”,然后新建“secure”日志, 用來保存新的日志。當第二次進行日志輪替時,“secure.1”
    會自動改名為“secure.2”, 當前的“secure”日志會自動改名為“secure.1”,然后也會新建“secure”日志,用來
    保存新的日志,以此類推。

  • 21.4.3 logrotate 配置文件

    /etc/logrotate.conf 為logrotate 的全局配置文件

    # rotate log files weekly, 每周對日志文件進行一次輪替weekly# keep 4 weeks worth of backlogs, 共保存4 份日志文件,當建立新的日志文件時,舊的將會被刪除rotate 4# create new (empty) log files after rotating old ones, 創建新的空的日志文件,在日志輪替后create# use date as a suffix of the rotated file, 使用日期作為日志輪替文件的后綴dateext# uncomment this if you want your log files compressed, 日志文件是否壓縮。如果取消注釋,則日志會在轉儲的同時進行壓縮#compress#RPM packages drop log rotation information into this directoryinclude /etc/logrotate.d# 包含/etc/logrotate.d/ 目錄中所有的子配置文件。也就是說會把這個目錄中所有子配置文件讀取進來,#下面是單獨設置,優先級更高。# no packages own wtmp and btmp -- we'll rotate them here/var/log/wtmp {monthly # 每月對日志文件進行一次輪替create 0664 root utmp # 建立的新日志文件,權限是0664 ,所有者是root ,所屬組是utmp 組minsize 1M # 日志文件最小輪替大小是1MB 。也就是日志一定要超過1MB 才會輪替,否則就算時間達到一個月,也不進行日志轉儲rotate 1 # 僅保留一個日志備份。也就是只有wtmp 和wtmp.1 日志保留而已}/var/log/btmp {missingok # 如果日志不存在,則忽略該日志的警告信息monthlycreate 0600 root utmprotate 1}

    p122 自定義日志輪替

    參數說明

    參數參數說明daily 日志的輪替周期是每天weekly 日志的輪替周期是每周monthly 日志的輪替周期是每月rotate 數字保留的日志文件的個數。0 指沒有備份compress 日志輪替時,舊的日志進行壓縮create mode owner group 建立新日志,同時指定新日志的權限與所有者和所屬組。mail address 當日志輪替時,輸出內容通過郵件發送到指定的郵件地址。missingok 如果日志不存在,則忽略該日志的警告信息notifempty 如果日志為空文件,則不進行日志輪替minsize 大小日志輪替的最小值。也就是日志一定要達到這個最小值才會輪替,否則就算時間達到也不輪替size 大小日志只有大于指定大小才進行日志輪替,而不是按照時間輪替。dateext 使用日期作為日志輪替文件的后綴。sharedscripts 在此關鍵字之后的腳本只執行一次。prerotate/endscript 在日志輪替之前執行腳本命令。postrotate/endscript 在日志輪替之后執行腳本命令。

    21.4.4 把自己的日志加入日志輪替

  • 第一種方法是直接在/etc/logrotate.conf 配置文件中寫入該日志的輪替策略
  • 第二種方法是在/etc/logrotate.d/目錄中新建立該日志的輪替文件,在該輪替文件中寫入正確的輪替策略,因為該目錄
    中的文件都會被“include”到主配置文件中,所以也可以把日志加入輪替。
  • 推薦使用第二種方法,因為系統中需要輪替的日志非常多,如果全都直接寫入/etc/logrotate.conf 配置文件,那么這
    個文件的可管理性就會非常差,不利于此文件的維護。
  • 在/etc/logrotate.d/ 配置輪替文件一覽
  • 21.4.5 應用實例

    看一個案例, 在/etc/logrotate.conf 進行配置, 或者直接在/etc/logrotate.d/ 下創建文件hsplog 編寫如下內容, 具體
    輪替的效果可以參考/var/log 下的boot.log 情況.

    p123 日志輪替機制原理

    21.5 日志輪替機制原理

    日志輪替之所以可以在指定的時間備份日志,是依賴系統定時任務。在/etc/cron.daily/目錄,就會發現這個目錄中是有logrotate 文件(可執行),logrotate 通過這個文件依賴定時任務執行的。

    [外鏈圖片轉存中…(img-ExElucyQ-1621999041422)]

    p124 查看內存日志

    journalctl 可以查看內存日志, 這里我們看看常用的指令
    journalctl ##查看全部
    journalctl -n 3 ##查看最新3 條
    journalctl --since 19:00 --until 19:10:10 #查看起始時間到結束時間的日志可加日期
    journalctl -p err ##報錯日志
    journalctl -o verbose ##日志詳細內容
    journalctl _PID=1245 _COMM=sshd ##查看包含這些參數的日志(在詳細日志查看)
    或者journalctl | grep sshd

    注意: journalctl 查看的是內存日志, 重啟清空
    演示案例:
    使用journalctl | grep sshd 來看看用戶登錄清空, 重啟系統,再次查詢,看看日志有什么變化沒有

    p125 小結

    p126 定制自己的linux系統

    22.1 基本介紹

    通過裁剪現有Linux 系統(CentOS7.6),創建屬于自己的min Linux 小系統,可以加深我們對linux 的理解。
    老韓利用centos7.6,搭建一個小小linux 系統, 很有趣。

    22.2 基本原理

    啟動流程介紹:
    制作Linux 小系統之前,再了解一下Linux 的啟動流程:
    1、首先Linux 要通過自檢,檢查硬件設備有沒有故障
    2、如果有多塊啟動盤的話,需要在BIOS 中選擇啟動磁盤
    3、啟動MBR 中的bootloader 引導程序
    4、加載內核文件
    5、執行所有進程的父進程、老祖宗systemd
    6、歡迎界面
    在Linux 的啟動流程中,加載內核文件時關鍵文件:
    1)kernel 文件: vmlinuz-3.10.0-957.el7.x86_64
    2)initrd 文件: initramfs-3.10.0-957.el7.x86_64.img

    22.3 制作min linux 思路分析

  • 在現有的Linux 系統(centos7.6)上加一塊硬盤/dev/sdb,在硬盤上分兩個分區,一個是/boot,一個是/,并將其格式化。
    需要明確的是,現在加的這個硬盤在現有的Linux 系統中是/dev/sdb,但是,當我們把東西全部設置好時,要把這個
    硬盤拔除,放在新系統上,此時,就是/dev/sda
  • 在/dev/sdb 硬盤上,將其打造成獨立的Linux 系統,里面的所有文件是需要拷貝進去的
  • 作為能獨立運行的Linux 系統,內核是一定不能少,要把內核文件和initramfs 文件也一起拷到/dev/sdb 上
  • 以上步驟完成,我們的自制Linux 就完成, 創建一個新的linux 虛擬機,將其硬盤指向我們創建的硬盤,啟動即可
  • 示意圖
  • 制作自己的min linux(基于CentOS7.6)

  • 首先,我們在現有的linux添加一塊大小為20G的硬盤
  • 點擊完成,就OK了, 可以使用 lsblk 查看,需要重啟

  • 添加完成后,點擊確定,然后啟動現有的linux(centos7.6)。 通過fdisk來給我們的/dev/sdb進行分區
  • 1 [root@localhost ~]# fdisk /dev/sdb 2 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel 3 Building a new DOS disklabel with disk identifier 0x4fde4cd0. 4 Changes will remain in memory only, until you decide to write them. 5 After that, of course, the previous content won't be recoverable. 6 7 8 Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) 9 10 11 WARNING: DOS-compatible mode is deprecated. It's strongly recommended to12 switch off the mode (command 'c') and change display units to13 sectors (command 'u').14 15 16 Command (m for help): n17 Command action18 e extended19 p primary partition (1-4)20 p21 Partition number (1-4): 122 First cylinder (1-2610, default 1):23 Using default value 124 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +500M25 26 27 Command (m for help): n28 Command action29 e extended30 p primary partition (1-4)31 p32 Partition number (1-4): 233 First cylinder (15-2610, default 15):34 Using default value 1535 Last cylinder, +cylinders or +size{K,M,G} (15-2610, default 2610):36 Using default value 261037 #查看分區38 Command (m for help): p39 40 41 Disk /dev/sdb: 21.5 GB, 21474836480 bytes42 255 heads, 63 sectors/track, 2610 cylinders43 Units = cylinders of 16065 * 512 = 8225280 bytes44 Sector size (logical/physical): 512 bytes / 512 bytes45 I/O size (minimum/optimal): 512 bytes / 512 bytes46 Disk identifier: 0x4fde4cd047 48 49 Device Boot Start End Blocks Id System50 /dev/sdb1 1 14 112423+ 83 Linux51 /dev/sdb2 15 2610 20852370 83 Linux52 #保存并退出53 Command (m for help): w54 The partition table has been altered!
  • 接下來,我們對/dev/sdb的分區進行格式化
  • [root@localhost ~]# mkfs.ext4 /dev/sdb1[root@localhost ~]# mkfs.ext4 /dev/sdb2
  • 創建目錄,并掛載新的磁盤
  • #mkdir -p /mnt/boot /mnt/sysroot #mount /dev/sdb1 /mnt/boot #mount /dev/sdb2 /mnt/sysroot/
  • 安裝grub, 內核文件拷貝至目標磁盤
  • #grub2-install --root-directory=/mnt /dev/sdb#我們可以來看一下二進制確認我們是否安裝成功#hexdump -C -n 512 /dev/sdb #cp -rf /boot/* /mnt/boot/
  • 修改 grub2/grub.cfg 文件, 標紅的部分 是需要使用 指令來查看的
  • 在grub.cfg文件中 , 紅色部分用 上面 sdb1 的 UUID替換,藍色部分用 sdb2的UUID來替換, 紫色部分是添加的,表示

    selinux給關掉,同時設定一下init,告訴內核不要再去找這個程序了,不然開機的時候會出現錯誤的

    ### BEGIN /etc/grub.d/10_linux ###menuentry 'CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-957.el7.x86_64-advanced-2eef594e-68fc-49a0-8b23-07cf87dda424' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1--hint='hd0,msdos1' 6ba72e9a-19ec-4552-ae54-e35e735142d4 else search --no-floppy --fs-uuid --set=root 6ba72e9a-19ec-4552-ae54-e35e735142d4 fi linux16 /vmlinuz-3.10.0-957.el7.x86_64 root=UUID=d2e0ce0f-e209-472a-a4f1-4085f777d9bb ro crashkernel=auto rhgb quiet LANG=zh_CN.UTF-8 selinux=0 init=/bin/bash initrd16 /initramfs-3.10.0-957.el7.x86_64.img}menuentry 'CentOS Linux (0-rescue-5bd4fb8d8e9d4198983fc1344f652b5d) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-5bd4fb8d8e9d4198983fc1344f652b5d-advanced-2eef594e-68fc-49a0-8b23-07cf87dda424' { load_video insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 6ba72e9a-19ec-4552-ae54-e35e735142d4 else search --no-floppy --fs-uuid --set=root 6ba72e9a-19ec-4552-ae54-e35e735142d4 fi linux16 /vmlinuz-0-rescue-5bd4fb8d8e9d4198983fc1344f652b5d root=UUID=d2e0ce0f-e209-472a-a4f1-4085f777d9bb ro crashkernel=auto rhgb quiet selinux=0 init=/bin/bash initrd16 /initramfs-0-rescue-5bd4fb8d8e9d4198983fc1344f652b5d.img}### END /etc/grub.d/10_linux ###
  • 創建目標主機根文件系統
  • #mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root}
  • 拷貝需要的bash(也可以拷貝你需要的指令)和庫文件給新的系統使用
  • #cp /lib64/*.* /mnt/sysroot/lib64/ #cp /bin/bash /mnt/sysroot/bin/
  • 現在我們就可以創建一個新的虛擬機,然后將默認分配的硬盤 移除掉,指向我們剛剛創建的磁盤即可.
  • [外鏈圖片轉存中…(img-APm02jyq-1621999041429)]

    [外鏈圖片轉存中…(img-NgyoqnZF-1621999041432)]

    [外鏈圖片轉存中…(img-1Es3qLAG-1621999041437)]

  • 這時,很多指令都不能使用,比如 ls , reboot 等,可以將需要的指令拷貝到對應的目錄即可

  • 如果要拷貝指令,重新進入到原來的 linux****系統拷貝相應的指令即可,比較將 /bin/ls 拷貝到 /mnt/sysroot/bin 將/sbin/reboot 拷貝到 /mnt/sysroot/sbin

  • root@hspedu100 ~]# mount /dev/sdb2 /mnt/sysroot/[root@hspedu100 ~]# cp /bin/ls /mnt/sysroot/bin/[root@hspedu100 ~]# cp /bin/systemctl /mnt/sysroot/bin/[root@hspedu100 ~]# cp /sbin/reboot /mnt/sysroot/sbin/
  • 再重新啟動新的min linux系統,就可以使用 ls , reboot 指令了
  • p127 定制自己的linux系統(2)

    p128 小結

    p129 Linux 內核源碼介紹&內核升級

    23.1 為什么要閱讀linux 內核?

  • 愛好,就是喜歡linux(黑客精神)
  • 想深入理解linux 底層運行機制,對操作系統有深入理解
  • 閱讀Linux 內核,你會對整個計算機體系有一個更深刻的認識。作為開發者,不管你從事的是驅動開發,應用開發
    還是后臺開發,你都需要了解操作系統內核的運行機制,這樣才能寫出更好的代碼。
  • 作為開發人員不應該只局限在自己的領域,你設計的模塊看起來小,但是你不了解進程的調用機制,你不知道進程
    為什么會阻塞、就緒、執行幾個狀態。那么很難寫出優質的代碼。
  • 找工作面試的需要
    😏 老韓忠告,作為有追求的程序員,還是應該深入的了解一個操作系統的底層機制,(比如linux/unix) 最好是源碼級別
    的,這樣你寫多線程高并發程序,包括架構,優化,算法等,高度不一樣的,當然老韓也不是要求小伙伴兒把一個
    非常龐大的Linux 內核每一行都讀懂。我覺得。你至少能看幾個核心的模塊。
  • 23.2 linux0.01 內核源碼

    23.2.1 基本介紹
    Linux 的內核源代碼可以從網上下載, 解壓縮后文件一般也都位于linux 目錄下。內核源代碼有很多版本,可以從
    linux0.01 內核入手,總共的代碼1w 行左右, 最新版本5.9.8 總共代碼超過700w 行,非常龐大.
    內核地址:https://www.kernel.org/

    很多人害怕讀Linux 內核,Linux 內核這樣大而復雜的系統代碼,閱讀起來確實有很多困難,但是也不象想象的那
    么高不可攀。老韓建議可以從linux0.01 入手。

    p130 linux0.01 內核源碼目錄&閱讀

    23.2.2 linux0.01 內核源碼目錄&閱讀

    老韓提示閱讀內核源碼技巧

  • linux0.01 的閱讀需要懂c 語言
  • 閱讀源碼前,應知道Linux 內核源碼的整體分布情況。現代的操作系統一般由進程管理、內存管理、文件系統、驅
    動程序和網絡等組成。Linux 內核源碼的各個目錄大致與此相對應.
  • 在閱讀方法或順序上,有縱向與橫向之分。所謂縱向就是順著程序的執行順序逐步進行;所謂橫向,就是按模塊進
    行。它們經常結合在一起進行。
  • 對于Linux 啟動的代碼可順著Linux 的啟動順序一步步來閱讀;對于像內存管理部分,可以單獨拿出來進行閱讀分
    析。實際上這是一個反復的過程,不可能讀一遍就理解
    linux 內核源碼閱讀&目錄介紹&main.c 說明
  • [外鏈圖片轉存中…(img-DJAW8PiO-1621999041440)]

    [外鏈圖片轉存中…(img-V9Ogt9cm-1621999041441)]

    p131 linux 內核最新版和內核升級

    23.3.1 內核地址:https://www.kernel.org/ 查看

    23.3.2 下載&解壓最新版

    wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.11.2.tar.gz
    tar -zxvf linux-5.8.16.tar.gz

    23.3.3 linux 內核升級應用實例

    將Centos 系統從7.6 內核升級到7.8 版本內核(兼容性問題)

    [外鏈圖片轉存中…(img-DKGW44K0-1621999041442)]

    23.3.4 具體步驟,看老師演示

    uname -a // 查看當前的內核版本
    yum info kernel -q //檢測內核版本,顯示可以升級的內核
    yum update kernel //升級內核
    yum list kernel -q //查看已經安裝的內核

    p132 linux 內核最新版和內核升級(2)

    p133 第24 章linux 系統-備份與恢復

    24.1 基本介紹

    實體機無法做快照,如果系統出現異常或者數據損壞,后果嚴重, 要重做系統,還會造成數據丟失。所以我們可
    以使用備份和恢復技術
    linux 的備份和恢復很簡單, 有兩種方式:

  • 把需要的文件(或者分區)用TAR 打包就行,下次需要恢復的時候,再解壓開覆蓋即可
  • 使用dump 和restore 命令
  • 示意圖
  • [外鏈圖片轉存中…(img-OuUXlEd4-1621999041443)]

    24.2 安裝dump 和restore

    如果linux 上沒有dump 和restore 指令,需要先按照
    yum -y install dump
    yum -y install restore

    24.3 使用dump 完成備份

    24.3.1 基本介紹

    dump 支持分卷和增量備份(所謂增量備份是指備份上次備份后修改/增加過的文件,也稱差異備份)。

    24.3.2 dump 語法說明

    dump [ -cu] [-123456789] [ -f <備份后文件名>] [-T <日期>] [ 目錄或文件系統]
    dump []-wW
    -c : 創建新的歸檔文件,并將由一個或多個文件參數所指定的內容寫入歸檔文件的開頭。
    -0123456789: 備份的層級。0 為最完整備份,會備份所有文件。若指定0 以上的層級,則備份至上一次備份以來
    修改或新增的文件, 到9 后,可以再次輪替.
    -f <備份后文件名>: 指定備份后文件名
    -j : 調用bzlib 庫壓縮備份文件,也就是將備份后的文件壓縮成bz2 格式,讓文件更小
    -T <日期>: 指定開始備份的時間與日期
    -u : 備份完畢后,在/etc/dumpdares 中記錄備份的文件系統,層級,日期與時間等。
    -t : 指定文件名,若該文件已存在備份文件中,則列出名稱
    -W :顯示需要備份的文件及其最后一次備份的層級,時間,日期。
    -w :與-W 類似,但僅顯示需要備份的文件。

    24.3.3 dump 應用案例1

    將/boot 分區所有內容備份到/opt/boot.bak0.bz2 文件中,備份層級為“0”
    􀀃dump -0uj -f /opt/boot.bak0.bz2 /boot

    24.3.4 dump 應用案例2

    在/boot 目錄下增加新文件,備份層級為“1”(只備份上次使用層次“0”備份后發生過改變的數據), 注意比較看看
    這次生成的備份文件boot1.bak 有多大
    dump -1uj -f /opt/boot.bak1.bz2 /boot
    老韓提醒: 通過dump 命令在配合crontab 可以實現無人值守備份

    只有分區支持增量備份

    24.3.5 dump -W

    顯示需要備份的文件及其最后一次備份的層級,時間,日期

    24.3.6 查看備份時間文件

    cat /etc/dumpdates

    [外鏈圖片轉存中…(img-tIQ42cA5-1621999041444)]

    24.3.7 dump 備份文件或者目錄

    前面我們在備份分區時,是可以支持增量備份的,如果備份文件或者目錄,不再支持增量備份, 即只能使用0 級別
    備份
    案例, 使用dump 備份/etc 整個目錄
    dump -0j -f /opt/etc.bak.bz2 /etc/
    #下面這條語句會報錯,提示DUMP: Only level 0 dumps are allowed on a subdirectory
    dump -1j -f /opt/etc.bak.bz2 /etc/

    24.3.8 老韓提醒

    如果是重要的備份文件, 比如數據區,建議將文件上傳到其它服務器保存,不要將雞蛋放在同一個籃子.

    p134 數據備份與恢復

    24.4 使用restore 完成恢復

    24.4.1 基本介紹

    restore 命令用來恢復已備份的文件,可以從dump 生成的備份文件中恢復原文件

    24.4.2 restore 基本語法

    restore [模式選項] [選項]

    說明下面四個模式, 不能混用,在一次命令中, 只能指定一種。
    -C :使用對比模式,將備份的文件與已存在的文件相互對比。
    -i:使用交互模式,在進行還原操作時,restors 指令將依序詢問用戶
    -r:進行還原模式
    -t : 查看模式,看備份文件有哪些文件
    選項
    -f <備份設備>:從指定的文件中讀取備份數據,進行還原操作

    24.4.3 應用案例1

    restore 命令比較模式,比較備份文件和原文件的區別
    測試
    mv /boot/hello.java /boot/hello100.java
    restore -C -f boot.bak1.bz2 //注意和最新的文件比較

    mv /boot/hello100.java /boot/hello.java
    restore -C -f boot.bak1.bz2

    24.4.4 應用案例2

    restore 命令查看模式,看備份文件有哪些數據/文件

    測試
    restore -t -f boot.bak0.bz2

    24.4.5 應用案例3

    restore 命令還原模式, 注意細節: 如果你有增量備份,需要把增量備份文件也進行恢復, 有幾個增量備份文件,
    就要恢復幾個,按順序來恢復即可。
    測試
    mkdir /opt/boottmp
    cd /opt/boottmp
    restore -r -f /opt/boot.bak0.bz2 //恢復到第1 次完全備份狀態
    restore -r -f /opt/boot.bak1.bz2 //恢復到第2 次增量備份狀態

    [外鏈圖片轉存中…(img-nzY59vhh-1621999041447)]

    24.4.6 應用案例4

    restore 命令恢復備份的文件,或者整個目錄的文件
    基本語法: restore -r -f 備份好的文件
    測試
    [root@hspedu100 opt]# mkdir etctmp
    [root@hspedu100 opt]# cd etctmp/
    [root@hspedu100 etctmp]# restore -r -f /opt/etc.bak0.bz2

    p135 數據備份與恢復(2)

    p136 數據備份與恢復小結

    p137 Linux 可視化管理-webmin 和bt 運維工具

    25.1 webmin

    25.1.1 基本介紹

    Webmin 是功能強大的基于Web 的Unix/linux 系統管理工具。管理員通過瀏覽器訪問Webmin 的各種管理功能并完
    成相應的管理操作。除了各版本的linux 以外還可用于:AIX、HPUX、Solaris、Unixware、Irix 和FreeBSD 等系統

    [外鏈圖片轉存中…(img-nE5qTxMH-1621999041448)]

    25.1.2 安裝webmin&配置

  • 下載地址: http://download.webmin.com/download/yum/ , 用下載工具下載即可
  • 也可以使用wget http://download.webmin.com/download/yum/webmin-1.700-1.noarch.rpm

  • 安裝: rpm -ivh webmin-1.700-1.noarch.rpm

  • 重置密碼/usr/libexec/webmin/changepass.pl /etc/webmin root test
    root 是webmin 的用戶名,不是OS 的, 這里就是把webmin 的root 用戶密碼改成了test

  • 修改webmin 服務的端口號(默認是10000 出于安全目的)
    vim /etc/webmin/miniserv.conf # 修改端口

  • 將port=10000 修改為其他端口號,如port=6666

  • 重啟webmin
    /etc/webmin/restart # 重啟
    /etc/webmin/start # 啟動
    /etc/webmin/stop # 停止

  • 防火墻放開6666 端口
    firewall-cmd --zone=public --add-port=6666/tcp --permanent # 配置防火墻開放6666 端口
    firewall-cmd --reload # 更新防火墻配置
    firewall-cmd --zone=public --list-ports # 查看已經開放的端口號

  • 在這個位置我出現了登錄不上去的問題,搜了很多方案沒有解決😢

    包括 1.殺進程換端口 2.reboot 3.在gnu上登錄

  • 登錄webmin
    http://ip:6666 可以訪問了
    用root 賬號和重置的新密碼test
  • p138 webmin演示

    25.1.3 簡單使用演示

    比如修改語言設置,IP 訪問控制,查看進程, 修改密碼, 任務調度,mysql 等.

    [外鏈圖片轉存中…(img-BqGwDyLw-1621999041450)]

    p139 bt寶塔介紹和安裝

    25.2 bt(寶塔)

    25.2.1 基本介紹

    bt 寶塔Linux 面板是提升運維效率的服務器管理軟件,支持一鍵LAMP/LNMP/集群/監控/網站/FTP/數據庫/JAVA 等
    多項服務器管理功能。

    25.2.2 安裝和使用

  • 安裝: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
  • 安裝成功后控制臺會顯示登錄地址,賬戶密碼,復制瀏覽器打開登錄,
  • [外鏈圖片轉存中…(img-7Ry8RKUI-1621999041450)]

    myself command

    外網面板地址: http://58.221.242.226:8888/d9b5227e
    內網面板地址: http://192.168.200.130:8888/d9b5227e
    username: tz6prifg
    password: 2276bcb2

    p140 介紹

    25.2.3 使用介紹, 比如可以登錄終端, 配置,快捷安裝運行環境和系統工具, 添加計劃任務腳本

    http://192.168.200.130:8888/2e673418/

    [外鏈圖片轉存中…(img-CtRC0VmB-1621999041452)]

    25.2.4 如果bt 的用戶名,密碼忘記了,使用bt default 可以查看

    [外鏈圖片轉存中…(img-OYcLm0w8-1621999041452)]

    p141 小結

    p142 Linux 面試題-(騰訊,百度,美團,滴滴)

    26.1 分析日志t.log(訪問量),將各個ip 地址截取,并統計出現次數,并按從大到小排序(騰訊)

    http://192.168.200.10/index1.html
    http://192.168.200.10/index2.html
    http://192.168.200.20/index1.html
    http://192.168.200.30/index1.html
    http://192.168.200.40/index1.html
    http://192.168.200.30/order.html
    http://192.168.200.10/order.html
    答案: cat t.txt | cut -d ‘/’ -f 3 | sort | uniq -c | sort -nr

    26.2 統計連接到服務器的各個ip 情況,并按連接數從大到小排序(騰訊)

    netstat -an | grep ESTABLISHED | awk -F " " ‘{print $5}’ | cut -d “:” -f 1 | sort | uniq -c| sort -nr

    其他

    redis 相關指令

    # 重新加載系統服務systemctl daemon-reload# 開機啟動system enable redis-server.service# 關閉redis-serversystem stop redis-server.service# 啟動redis-serversystem start redis-server.service# 重新啟動redis-serversystem restart redis-server.service# 查看redis-server運行狀態system status redis-server.service

    總結

    以上是生活随笔為你收集整理的(七)linux操作系统-linux韩顺平2021笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。