課程內容#
由圖形化 [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 可查看
-
- 見紅框,文件類型 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
- ll = ls -lh
用戶#
- 慎用 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" 告訴所有在線用戶自己要重啟了
- 輸入 w 查看在線終端
- sudo !! 可以以超級用戶準備執行上次命令
- 可以以超級用戶準備執行上次命令,不需要再輸入一遍命令了
- whereis
- 查看軟件的安裝目錄
- file 文件
- 查看文件的具體信息
- 通常使用 [man 命令] 或 [命令 -h] 可以查看命令幫助
- 使用說明的格式規則:[] 可選選項,| 不能同時使用的參數
- 目錄也是文件
- alias 別名 = 命令,可設置別名對應的命令
Tips#
-
用戶相關
- 創建用戶時沒有特殊指定組,會以自己用戶名創建一個組
- 一個用戶可以在多個不同的組
-
優秀的資源監控軟件
- Htop:一款運行於 Linux 的監控與進程管理軟件,比 top 更友好
- nmon:用於 Linux 的計算機性能系統監視工具 [IBM 開發]
- dstat:靈活的資源統計工具
-
命令相關
- apt 和 apt-get 沒區別
- history:打印輸出的命令歷史
- tldr + 命令:查看命令格式
- echo $PATH:打印 PATH 環境變量,存放系統默認的可執行文件的路徑
-
如何在 Ubuntu 上修改主機名- 博客,關於 hostnamectl
-
- 基本操作可參考 5 基本系統 —— 網絡 —— 第 2 點
-
-
計算機網絡學習推薦:《計算機網絡:自頂向下方法》,重點前 5 章