<style> .txt_center{ text-align: center; } .pic_center{ display:flex; justify-content: center; } .red_text{ color: #ff2200 } </style> # Linux 常用語法 :::warning 如果怕把系統搞壞, 建議先在虛擬機上的系統測試, 並再測試之前建立快照 !!! ::: ## Scp 傳送檔案 :::spoiler - 檔案 ```script scp 來源檔案路徑 帳號名稱@IP:/目的地路徑 ``` - 目錄 ```script scp -r 來源資料夾 帳號名稱@IP:/目的地路徑 ``` ::: ## find 找檔案 :::spoiler ```script sudo find ~ -name '檔名' -mtime -'從現在起幾天前變更的檔案' ``` 範例: 找副檔名為 <span class="red_text">*.ods</span> 的結果 ```script sudo find ~ -name *.ods -mtime -150 ``` ::: ## 查看硬體相關 ### 查看系統版本 ```script lsb_release -a ``` ### 查看硬體狀態 - 檢查SSD ```script sudo apt install nvme-cli sudo nvme smart-log /dev/nvme0 ``` ### 查看主機板 :::spoiler ```script # 查看可以查詢的硬體參數 sudo dmidecode -t -h ``` ```script sudo dmidecode -t 2 ``` ::: ### 查看 CPU - 不需要 sudo 權限 :::spoiler ```script # 列出CPU數量 cat /proc/cpuinfo | grep "^physical id" | sort | uniq | wc -l ``` ```script cat /proc/cpuinfo | grep "cpu cores" ``` ```script lscpu ``` ```script htop ``` [參考連結](https://www.ltsplus.com/linux/linux-list-cpu-number-cores-number) [參考連結](https://www.ltsplus.com/linux/linux-get-cpu-info) ::: ### 查看記憶體 (只查RAM有多少) - 不需要 sudo 權限 :::spoiler ```script free ``` ```script free -m ``` ```script cat /proc/meminfo ``` ::: ### 查看硬碟使用量 :::spoiler ```script df -h ``` ```script lsblk ``` ::: ## 查看目錄大小 ```script # 目錄總體容量大小 du -hs 目錄 ``` ```script # 目錄中個別容量大小 du -h 目錄 ``` ## 查看目錄檔案並做排序顯示 ```script ll -h --sort=size ``` ## Screen 一般的 Terminal 只要關閉, 就會真的被關掉. 透過 Screen 開啟的終端機不會發生這樣的狀況, 需透過指定方式`Ctrl+A & Ctrl+D`關閉, 或電腦重新啟動才會關閉. :::spoiler - ### 顯示所有screen ```script screen -ls ``` - ### 創立新視窗 ```script screen -S name ``` - ### 儲存當前狀態後,才關閉視窗 ``` Ctrl+A 然後 Ctrl+D ``` - ### 直接關閉視窗 ``` Ctrl+D ``` - ### 返回screen ``` screen -r name ``` - ### 刪除screen ``` screen -S name -X quit ``` - ### 取得screen控制權 ``` screen -Dr ``` ::: ## nohub 類似 screen, 在背景執行程序 背景執行程序, 將程序輸出訊息存在 .log, 錯誤訊息存在 .err ```script nohup program_script > progress.log 2> progress.err & ``` 將上筆執行程序的紀錄儲存 ```script echo $! > save_pid.txt ``` 關閉執行程序 ```script kill -9 $(cat save_pid.txt) ``` ## 查看程序執行時間 ```script ps -p 要查詢的pid -o pid,cmd,etime,uid,gid ``` ## 使用者權限相關 ### 建立使用者 :::spoiler ```script # 建立使用者 sudo useradd -ms /bin/bash 使用者 # 設定密碼 sudo passwd 使用者 ``` ::: ### 修改使用者 shell 模式 ```shell script chsh -s /bin/bash 使用者 ``` ### 移除使用者 ```script sudo userdel -rf 使用者 ``` ### 查看屬於哪個群組 :::spoiler ```script groups ``` ```scrpit groups 要查詢的使用者 ``` ::: ### 建立群組 ```script sudo groupadd 群組名稱 ``` ### 加入群組 <div class="txt_center red_text"> 如果還是無法取得權限的話, 登入再登出即可 </div> ```script sudo adduser 使用者 群組 ``` ### 退出群組 ```script sudo gpasswd -d 使用者名稱 群組名稱 ``` ### 查看目標權限 :::spoiler - 檔案 ```scrpit ls -l file ``` - 資料夾 ```scrpit ls -dl folder ``` ::: ### 修改檔案所屬群組 ```script chgrp 將目標改成屬於哪個群組 要被改的檔案目標名稱 ``` ### 修改讀取檔案權限 <div class="pic_center"> <img src="https://i.imgur.com/fyoGUYf.png"> </div> :::info u = 擁有者 g = 群組 o = 其他 a = 全部 加上權限 + 移除權限 - 設定權限 = ::: :::spoiler ```script # 使用方式 chmod 權限設定 被設定的目標 ``` ```script # 將目標的群組權限加上寫入權限 chmod g+w 被設定的目標 ``` ```script # 將目標的其他權限移除執行權限 chmod o-x 被設定的目標 ``` ```script # 將目標的擁有者權設定全開 chmod u=rwx 被設定的目標 ``` ```script # 將所有群組的執行權限移除 chmod a-x 被設定的目標 ``` ::: ### 使用root權限 1.透過 sudo ```script sudo su ``` 2.設定 root 密碼 ```script sudo passwd root ``` ## 查詢環境變數 ```script env ``` ## 查看安裝的套件 查看所有安裝的套件 ```script sudo dpkg -l ``` 查看指定的套件 ```script sudo dpkg -l | grep ${套件名稱} ``` ## 查看 IP ```script ip a ``` 或 ``` hostname -I ``` ### 補充文件 [Linux 權限補充](https://statistics.berkeley.edu/computing/unix-permissions) [Linux 權限補充, 有講到參數含意]( https://www.linux.com/training-tutorials/how-manage-file-and-folder-permissions-linux/) [Linux 權限補充(鳥哥)](http://linux.vbird.org/linux_basic/0210filepermission/0210filepermission.php) ###### tags: `Linux` `Ubuntu`