# Linux Ubuntu入門使用筆記 ## 版本查看 ``` 查看作業系統 lsb_release -a 查看顯卡型號 nvidia-smi -L CUDA toolkit版本 nvcc -V ``` ## 文件操作 ``` 複製檔案或資料夾,-r來源是資料夾,-p保持原有使用者及群組 cp -rp {來源} {目的} 移除檔案,-r移除資料夾類型路徑,-f強制刪除 rm {file_path} 改變權限 chmod 666 {文件或資料夾路徑} ``` ## 使用者 ``` 新增使用者,-m代表建立空的家目錄,-s設定預設shell sudo useradd {用戶名稱} sudo useradd -m {用戶名稱} -s /bin/false 新增使用者後請設定密碼 sudo passwd {用戶名稱} 移除使用者,-r連同家目錄一併移除 sudo userdel -r {用戶名稱} ``` > 還有adduser指令,是包裝useradd後的指令,目的是為了讓使用更人性化,因此還會額外建立使用者資訊,個人偏好原汁原味的useradd系列,較輕量化 ## 群組管理 ``` 將使用者添加到sudo群組 sudo usermod -aG sudo 改變檔案擁有者或群組,空白代表不更改,-R資料夾內所有文件一起更改 sudo chown {使用者}:{群組} {檔案} ``` ## SSH連線 ``` 登入遠端主機,請將名稱與IP位址替換成目標主機 ssh -p {port號碼} {username}@{xxx.xxx.xxx.xxx} ``` ``` 傳輸檔案 scp -P {port} /path/to/local/file.txt username@remote_host:/remote/path/ 傳輸folder scp -P {port} -r /path/to/local/dir username@remote_host:/remote/path/ ``` ## HARDWARD ### 掛載USB隨身碟 1. 查看主機上有哪些硬體連接 ``` lsblk ``` 觀察到這顆`disk`沒有掛載(mount) #### 2. 使用`mount`指令掛載到指定路徑 路徑可以依照個人使用習慣設定,下面示範創建一個資料夾作為掛載對象 ``` sudo mkdir /mnt/mount_dir sudo mount /dev/sdc1 /mnt/mount_dir ``` > 注意是使用part`sdc1`而不是disk`sdc` #### 3. 可以順利從掛載的路徑存取到USB內容 #### 4. 使用完畢我想要安全退出USB隨身碟 對指定掛載的路徑做`unmount`就可以安全退出 ``` sudo unmount /mnt/mount_dir ``` #### 5. 其他問題排除 `unmount`過程出現錯誤時可以,強制unmount ``` umount -l /PATH/OF/BUSY-DEVICE umount -f /PATH/OF/BUSY-NFS (NETWORK-FILE-SYSTEM) ``` <!-- ### 未整理Note `apt update` 和 `apt upgrade` 是兩個在 Linux 系統中用來更新軟體包的命令,它們之間有以下差異: 1. **apt update**: - `apt update` 用於更新套件清單,它會從套件庫中下載最新的套件資訊,但不會安裝新的套件或升級現有的套件。 - 這個命令用於同步本地套件索引檔案和遠端套件庫中的檔案,確保系統知道可用的新套件和版本。 2. **apt upgrade**: - `apt upgrade` 用於實際升級已安裝的套件到它們的最新版本。這個命令會檢查已安裝的套件是否有新版本,如果有,則會提示是否進行升級。 - 在使用 `apt upgrade` 前,通常應先運行 `apt update` 以確保套件清單是最新的。 總結來說,`apt update` 是用來更新套件清單的,而 `apt upgrade` 是用來實際升級套件的。在日常使用中,通常應該先運行 `apt update`,然後再根據需要運行 `apt upgrade` 來升級套件。 --> ### [掛載新硬碟](https://linnote.com/how-to-mount-new-disk-linux/) 這邊是有一系列的步驟要執行,根本值得另外寫一篇吧! #### 1. 列出可用硬體,透過觀察有無分割區可以得知尚未掛載的對象 ``` lsblk ``` 下圖sda這顆硬碟只有disk沒有像nvme0n1下方有兩個part分區,得知這顆硬碟沒有規劃空間 ![image](https://hackmd.io/_uploads/BkX0wXKxA.png) #### 2. 規劃硬碟空間 這個步驟只是先將硬碟分區規劃而已,並沒有執行格式化的動作 ``` sudo fdisk /dev/sda (格式化的對象要前面要加上/dev) ``` > /dev是什麼? > linux系統設計,希望讓硬體都是一個路徑,方便使用者存取、使用,/dev就是紀錄這些硬體的路徑上層資料夾 接著會有一系列的使用選項,`m`列出可以使用的指令 ![image](https://hackmd.io/_uploads/B10pcXYx0.png) 使用`n`分割磁碟區,如果沒有要分割成多塊其實一直按enter就可以了,進階的使用請各位自行研究囉 ``` n ``` ![image](https://hackmd.io/_uploads/rymBi7tgC.png) 規劃完成,`w`寫入剛剛設定的規劃 ``` w ``` 用`lsblk`可以看到剛規劃的新part出現了 ![image](https://hackmd.io/_uploads/SJwqi7FgA.png) <!-- 2TB以上的硬碟需要使用不同的格式 --> #### 3. 格式化硬碟選項 對新的partition格式化 ``` sudo mkfs -t ext4 /dev/sda1 ``` > 注意: 是對part不是disk喔,所以是sda1 執行訊息大致如下 ``` (base) user@hostserver:~$ sudo mkfs -t ext4 /dev/sda1 mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 976754385 4k blocks and 244195328 inodes Filesystem UUID: 478a228f-06e7-48fc-a895-807f8643dd27 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544 Allocating group tables: done Writing inode tables: done Creating journal (262144 blocks): done Writing superblocks and filesystem accounting information: done ``` <!-- ![image](https://hackmd.io/_uploads/rydihXYeR.png) --> #### 4. 掛載硬碟 一切準備就緒,最後就是將規劃好的硬碟掛載到系統上才能存取內容,有兩種做法 - 一次性掛載: 跟掛載USB一樣,作法直接參考那個章節就行,缺點是下次重新開機,系統可能就找不到了,必須再手動掛載一次 - 自動掛載: 告訴系統硬碟的識別ID,重新開機系統還是能找到 下面介紹自動掛載流程 列出所有可用硬碟的UUID,<font color='red'>找到新分區,並記下UUID</font> ``` sudo blkid ``` ![image](https://hackmd.io/_uploads/H1j6g4tl0.png) 創建要掛載的路徑 ``` mkdir {要掛載的路徑} ``` 修改`/etc/fstab`檔案,這個檔案紀錄了硬碟資訊 ``` sudo vim /etc/fstab 在文件中加上這一行,空白對齊其他行即可 UUID={紀錄的UUID} {要掛載的路徑} ext4 defaults 0 0 ``` 重新掛載,讓新設定生效,`-a`代表所有硬碟 ``` sudo mount -a ``` 列出硬碟使用狀況,順利的話可以看到新的分區瞜 ``` df -h ``` 如果還是不靈,可以試著重啟電腦,不然就是fstab檔案格式有問題囉