###### tags: `lsa` `ncnu` # Week 02 (2023/03/02) - Book mode: https://hackmd.io/@ncnu-opensource/book [TOC] --- ## 硬碟 - 硬碟=記憶體 - 單位為 sector(磁頭) ### 傳統硬碟vs固態硬碟 - HDD - cheap - more noise - SSD - 貴 - 容量小 - 損毀後不容易復原 - 噪音小 ## FHS - `/boot` 開機相關指令 - `/dev` 硬體設備相關設定 - `/etc` 系統設定檔 > 一般使用者可以查看,但只有超級使用者可修改 - `passwd` - `shadow` 只有super user 可觀看 ![](https://i.imgur.com/hDjA0L1.png) > 使用者名稱/使用者上次修改日期/密碼多久後要做變更(`99999`:無須固定時間做更改) - `group` > ![](https://i.imgur.com/xURehVH.png) > 群組名稱(不可重複)/口令/群組id - `/lib` 系統函式庫 - `/media` 系統會自動將裝置掛載在這 - `/sbin` 超級使用者可以做的指令 - `/srv` 啟動網路服務需要使用的資料 - `/tmp` 暫時存放資料的地方 > 過一段時間系統就會自動清除 > :star: 建議不要把檔案存放在這 - `/usr` 使用者資訊 - `/usr/lib` & `/lib` 已經合併使用 - `/usr/local` 存在放在這就不會衝突? - `/usr/share`:唯讀檔案,大部份是文字檔,系統開發者所開發出來的檔案不需要使用 - `/var`: 開機後占用硬碟的容量會不斷增加 - `/var/cache` 暫存檔 > 如果要重新下載應用程式,可以直接從暫存檔中找到,不須重新下載,節省下載時間 - `/var/lib` :程式在運作的過程中需要用到的資料 - `/var/lock`:一個檔案會被不同裝置使用,有人使用時要先lock,等第一個使用者使用完成後,才會開放,避免發生錯誤 - `/var/log`: 存放登入的資料,登入系統時的紀錄 - wtmp: 使用者登入的相關訊息 - btmp: 紀錄登入時錯誤的訊息 - `/var/mail`: 個人郵件信箱的相關目錄 - `/var/spool`: 存放需要排隊存取的資料 - `/proc` 紀錄系統中處理的相關資訊 > 為虛擬檔案系統,不佔硬體空間 >此目錄底下的檔案是可讀可寫的 - `/proc/cpuinfo`: 紀錄 cpu 資訊以及狀況 - `lost+found` 紀錄系統檔案被遺忘的資訊 - `sys`:關於設備的資訊 - 虛擬檔案系統,不佔系統空間 - 檔案可讀可寫 - `/sys/device` : 系統設備,按照系統類型做管理 ## 基本指令 - cd: 切換目錄 - `.` 目前的目錄 - `..` 回到上一個目錄 - `~`or 空格 : 回到家目錄 - `/` 回到根目錄 - ls: 列出目前目錄下的檔案 - `-a` 印出隱藏檔案 - `-l` 用清單的方式印出 - `al`: ![](https://i.imgur.com/fknGhQG.png) > `d`: directory , `-` : 檔案 > `r` 可讀 > `w` 可寫 - `clear` 清空 terminel - `touch` 建立檔案 (白色) - `mkdir` 建立資料夾 (藍色) - `rmdir` 刪除資料夾 >只限於目錄是空的狀態下 - `rm` 刪除 - `-r` 刪除目錄底下的所有檔案 - `-f` 強制刪除 > `f`: 強制 > `r`: recursive遞迴,將下層檔案一併都刪掉 - `echo <content>` 在terminal 上顯示出 echo 的 `<content>` - `echo <content> > <file>` 建立 file 寫入 content - `echo <content> >> <file>` 把 content 覆寫進 file - mv `<file>` `<資料夾>`: 把file 移到 資料夾 裡面 - `cp <source> <destination>` 複製 source 到 destination - `-a` 整份檔案權限&內容完整複製到目的地 - grep `關鍵字`: 找在這個目錄下有這個關鍵字的內容 > ex: `ls | grep 3` 找到的關鍵字會用紅色標示 > ![](https://i.imgur.com/oNsdgF9.png) > `|`:可以將前面指令的輸出當作後面指令的輸入 - `ln` - `-s` softlink - 幫你記住檔案的位置,所以源檔案被刪除,soft link 就會找不到此檔案的內容 ![](https://i.imgur.com/5H8O0Wl.png) > ex: bbbb 指到 aaaa - 可以指到不存在的檔案 ![](https://i.imgur.com/koRoJC9.png) - soft link 是額外檔案,所以 ID 不同 - hardlink - 幫你記住檔案內容 - 如果指到不存在的檔案會出錯 - 代表有幾個 hardlink 指向此檔案 ![](https://i.imgur.com/JPLoroT.png) - 只能指到同一個檔案目錄下 >若新增一個資料夾 則會有兩個hardlink 指到此資料夾 >原因為有 `.` 與 `..` 此兩個檔案 >![](https://i.imgur.com/kdYJZtO.png) - hard link 因為是指到同一個檔案,所以 ID 是一樣的 - `chmod` 更改權限 > ![](https://i.imgur.com/pJtMwLw.png) - `whoami` : 輸出自己當前的用戶名 - `exit` : 登出當前用戶 - `sudo` : 超級使用者模式 - `sudo adduser <username>` 新增使用者 - `sudo su - <username>` 切換使用者 - `sudo deluser <username>` 刪除使用者 - `last` 檢查這台電腦有誰登入過 - 放在 `/var/log/wtmp` - `man <command>` 查看指令如何用 - `q` 可以退出 - `less` 方便一頁一頁的看指令 - `whereis <command>` 告訴使用者指令放哪 - `l` 列出 whereis 找過的所有目錄 - `which`+ 指令 告訴使用者執行檔案放哪 - `type <command>` 告訴使用者是不是內建指令 >cd 是 bash 的內建指令 (builtin) >![](https://i.imgur.com/ucUdLLf.png) - `-t` 顯示指令的意義 - `apt` - `sudo apt install <package>` 下載 - `sudo apt remove <package>` 卸載 - wget + `網址`: 從此網址下載指定的內容 - dpkg - `ifconfig`: 目前有在啟動的網卡內容 - sudo ifconfig `<網卡卡號>` down : 關閉網卡 - sudo ifconfig `<網卡卡號>` up : 開啟網卡 - `a` : 顯示所有網卡內容 - `route`: routing table - n : 把可轉成數字的內容轉成數字 - `netstat`: 可以看到自己電腦網路狀況 - `-r` : 顯示 routing table - `-t` : tcp protocal? - `-u` : udp - `-n` : 文字轉數字 - `-l` : 目前系統有在監聽的檔案 - `ps` : 列出電腦有在執行的 prcoess - `a`: 列出跟 terminal 無無關的指令 - `u`: 有效使用者的 processes 列出來 - `-x` : 列出更詳細的資訊 - 火車 : 需要先安裝 `sudo apt install sl` - 執行 : `sl` - 切換使用者 : sudo su -`使用者名稱` ## web server ### /etc/nginx - `sudo service nginx start` 服務啟動 - `sudo service nginx stop` 服務暫停 - `sudo service nginx status` 查看服務狀態 - `sites-available` - default 下改 listen 的 port > 記得先備份一份 default 檔案 ,以免改錯還可以復原~ - `sudo ln -s /etc/nginx/sites-available/defalt /etc/nginx/sites-enabled` - `netstat -ntupl`: 可去檢查 port 是否有與 default 設定的一致 ## 實做