Bo2SS

Bo2SS

3 Linux基礎知識

課程內容#

由圖形化 [Windows] 轉為字符界面 [Linux]#

錯誤與提示#

圖形化→文本信息

  • 一定不要忽略螢幕輸出,仔細看系統的每一個回覆!
  • 程序 return 值反應在下一行右側
    • 圖片
    • return 0 表示成功

命令格式#

命令 [選項] [選項參數]... [參數]...

  • 選項:-- 選項全稱 - 選項簡稱
  • 空格:不管多少個都是一個空格,作為分隔符

Linux 在安全方面考慮更多#

用戶、用戶組、權限

  • 修改密碼:passwd
  • 退出用戶:exit、logout、ctrl + d
  • 新建用戶:useradd
  • 家目錄:/home,其他用戶在其他目錄可能沒有修改權限
  • [PS] 一切皆文件,一切設備、抽象的進程、運行數據、CPU...
    • 與用戶相關的文件 /etc/passwd、/etc/group,相關命令 usermod、userdel、id
    • id:可查看自己或指定用戶的 uid、gid (主要組)、groups (所在組)

用戶和組#

  • 圖片
  • 權限:字符表示 (r 可讀、w 可寫、x 可執行)→8/10 進制描述
  • 每個文件都有一個擁有者、一個擁有組、其餘用戶
  • 輸入 ls -l 可查看
    • img
    • 見紅框,文件類型 l、d 等,詳見附加知識點 - 7 種文件類型

瀏覽文件#

Linux 只有一棵樹,起於根目錄 /

我是誰、我在哪、我要去哪#

  • 我是誰 whoami、who am i(看到本質)
    • 圖片
    • whoami:系統感覺你是誰,who am i:你實際上是誰
  • 我在哪 pwd:print working directory
  • 我要去哪 cd:change directory
  • [PS] 書寫命令或路徑時,善用 Tab 鍵

軟件的安裝(Ubuntu)#

  • .deb:使用 dpkg -i xxx.deb
  • .tar:使用 tar 解壓
  • apt 安裝:可自動解決依賴關係、可選擇合適的軟件源地址
    • 安裝到哪去了?分散放置的:bin、lib;/usr/→bin、include、lib、local、share (幫助手冊)、src
    • 相關命令
      • 圖片
      • search 可以找一個軟件,查看是否存在、可能忘記名字了
      • apt remove xxx--purge (不保留配置文件)
      • apt autoremove 慎用,畢竟是 apt 管理的,可能誤刪還要用但沒在運行、其他方式下載的軟件

Linux 常用命令#

文件及目錄操作#

  • 圖片
  • ln:軟連接、硬連接

文件內容的修改與查看#

  • 圖片
  • ⭐Linux 三劍客:grep [Global Regular Expression Print]、awk [數據處理]、sed [批量操作]
  • ❗ 管道:| 把前一個命令的輸出傳給下個命令
  • less 比 more 更友好,功能更多
  • wc:word count,可接參數 - l [行數] 等等

文件的查找與定位#

  • 圖片
  • which:查找可執行文件的具體位置,具體用的是哪個
  • locate
    • 基於索引,查找非常快
    • 【不是實時更新】,因為更新需遍歷全部文件,慢
    • 會定期更新,或使用 sudo updatedb 立即更新數據庫

用戶相關#

  • 圖片
  • sudo -i:使用超管權限登錄默認 shell
  • chmod:change mode
  • chown:change owner

進程相關#

  • 圖片
  • 常用 ps -ef,輸出所有進程的詳細信息
  • kill 指定 PID [process ID] 即可殺死進程
  • pkill 可以批量殺死字符匹配的進程,只殺死該用戶有權限殺的,sudo pkill 慎用
  • crontab -e:編輯【定時任務】,參考裡面格式即可
  • ctrl + z、fg、bg、jobs
    • jobs 查看進程序號
    • ctrl + z 會讓進程暫停
    • bg 可以在後台跑,輸出會顯示在終端
    • %2(或 fg %2)[zsh 下]、fg 2 [bash 下] 將 2 號進程調至前台
    • [PS] fg 可用在修改源文件、gcc 的時候,提高效率

獲取系統信息#

  • 圖片
  • 可用於調優
  • 查看有沒有被別人佔用資源,檢查系統是否被攻破:top、htop、nmon
  • 【如何降低雲主機被攻破的幾率】
    • 取消密碼,配置 sshd,通過公私鑰方式登錄
    • 改複雜密碼
    • 改默認的用戶名或新建一個用戶
    • 改 ssh 的連接端口
  • -h 說人話,友好顯示
    • du -h,友好顯示目錄文件大小,K、M
    • free -h,友好顯示內存數據
  • nmon:適合檢查系統什麼時候出了問題
  • ifconfig [interfaces config] 顯示的網絡設備信息含義- 博客
    • 能看到私網 ip,不能看到公網 ip
  • uname -a:打印所有可用的系統信息,還可以用 cat /etc/os-release

其他命令#

  • 圖片
  • 在 ssh [已開源] 以前常用 telnet
  • 【scp 使用 ssh 拷貝】
    • 遠程👉本地:scp username@ip_address: 遠程文件 本地路徑
    • 本地👉遠程:scp 本地文件 username@ip_address: 遠程路徑
  • 雲主機用了 poweroff 後,需連到控制台去開機

基礎知識總結#

Terminal & Shell#

  • Terminal 類似設備
  • Terminal 裡面運行著 Shell 軟件,比如 bash、zsh,用來解釋在 Terminal 中輸入的命令
  • Shell 接收命令時:是否內置→在系統環境變量 PATH 中的路徑裡查找、調用

分隔符#

  • 一些特殊符號也屬於分隔符:管道 | ,重定向 >、>>、<、<< ,後台運行 &,序列執行 &&
    • 重定向到 /dev/zero、/dev/null:輸入到數據黑洞,輸入到此處的東西直接被忽略,具體通過 man zero 查看【/dev:設備】

程序與進程#

  • 程序就是一個可執行的二進制文件;進程是程序在內存中的鏡像、實例化

路徑#

  • 絕對路徑:起始點為根目錄 /
  • 相對路徑:善用當前路徑 "." 和上級路徑 ".."
  • 遠程路徑:協議:// 用戶名:密碼 @位置 / 路徑:端口
  • 特殊路徑:~ 用戶名 = 用戶名的家目錄,- = 上次工作目錄

軟件#

  • Linux 中沒有註冊表概念
  • 圖片

隱藏文件#

  • 名字以。開頭即可
  • 特殊目錄:當前目錄 "." 和父目錄 ".."

文件類型#

【7 種文件類型】

  • 圖片
  • link:可暫時理解為 windows 的快捷方式
  • block:系統大多數的 block 是 4096Byte = 4KB,起到緩衝的作用,類比快遞配送
  • character:設備也是文件,如虛擬終端 /dev/pts/0
  • socket:基於網絡的都離不開它
  • pipe:不佔用內存,只負責傳輸,舉例一次傳輸:echo > 管道文件,cat 管道文件
  • 3 種普通文件
  • 圖片

文件權限的修改#

  • chmod
    • 善用 +、-、=
      • 圖片
      • a = all、+ 增加權限、- 去除權限、= 直接覆寫權限
    • 儘量減少 chmod 777 的使用,權限開放過多
  • chown
    • 可同時修改文件所屬的用戶和組
      • chown 所屬用戶:所屬組 文件
    • 可修改目錄及目錄下所有文件的所屬用戶
      • chown -R 所屬用戶 目錄
  • chgrp:修改文件所屬的組,一般可用 chown 替代
  • 查看文件權限
    • ll = ls -lh
      • 可通過 which ll 或 alias ll 查看 ll 具體使用的命令
    • l = ls -lah
    • 系統中的三個時間:修改時間 mtime、讀取時間 atime、權限修改時間 ctime

用戶#

  • 慎用 root
  • su 用戶名:切換到另一用戶,需輸入其密碼
  • su - 用戶名
    • 使用 "-",會完全更新環境變量,適合複雜操作
    • 不加 "-",會適當更新環境變量,適合臨時切換用戶
  • 不加用戶名,則默認切換到 root

附加知識點#

  • . 當前目錄 .. 父目錄 / 根目錄
  • 僵屍進程 [有害]:子進程死了,父進程沒管,子進程還佔著資源;孤兒進程 [無害]:會被 1 號進程領養
  • 與其它終端聊天
    • 輸入 w 查看在線終端
      • 圖片
      • TTY [Teletype]:終端;pts [pseudo terminal slave]:虛擬終端
    • 輸入 echo "hello" >> /dev/pts/1 給終端 pts/1 發 "hello"
      • 圖片
      • pts/1 可以收到消息,並以同樣方式 echo 回信
    • 還可以使用 wall "System is rebooting in 15s" 告訴所有在線用戶自己要重啟了
  • sudo !! 可以以超級用戶準備執行上次命令
    • 圖片
    • 可以以超級用戶準備執行上次命令,不需要再輸入一遍命令了
  • whereis
    • 圖片
    • 查看軟件的安裝目錄
  • file 文件
    • 圖片
    • 查看文件的具體信息
  • 通常使用 [man 命令] 或 [命令 -h] 可以查看命令幫助
    • 使用說明的格式規則:[] 可選選項,| 不能同時使用的參數
  • 目錄也是文件
  • alias 別名 = 命令,可設置別名對應的命令

Tips#


課程速記#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。