類別:系統及安全性
| 發布於 2025-06-24 20:24
Linux 系統資源/指令輸入與輸出(行程重導)
系統資源
資源查看 top / free / ps
查看硬體資訊 - dmidecode
使用 dmidecode 工具查出硬體資訊如 CPU / Memory / 主機板型號:
注意:執行 dmidecode 通常需要 root 權限。
查看 CPU 資訊
查看記憶體資訊
訊號種類與使用
| 訊號名稱 |
代碼 |
說明 |
| SIGHUP |
1 |
掛斷訊號,常用於重新載入設定 |
| SIGINT |
2 |
中斷(Ctrl+C) |
| SIGKILL |
9 |
強制終止,無法捕捉或忽略 |
| SIGUSR1 |
10 |
使用者自定訊號 1 |
| SIGUSR2 |
12 |
使用者自定訊號 2 |
| SIGTERM |
15 |
預設終止信號,可捕捉 |
傳遞訊號 - kill
捕捉訊號 - trap
可透過 trap 在腳本中對訊號做出處理,進行善後動作(如清除暫存檔)。
語法:
範例:
注意:SIGKILL(9)與 SIGSTOP(19)無法被捕捉或忽略。
行程輸出重導(Redirection &
Piping)
輸入與輸出導向(<、>、>>、<<)
注意:> 等同於 1>(標準輸出)。
輸出與錯誤導向
| 語法 |
說明 |
cmd > file |
將標準輸出寫入檔案(覆蓋) |
cmd 1> file |
同上 |
cmd >> file |
將標準輸出附加至檔案末尾 |
cmd 2> file |
將錯誤輸出導向檔案(覆蓋) |
cmd 2>> file |
將錯誤輸出附加至檔案末尾 |
cmd &> file |
將標準與錯誤輸出都導向檔案(覆蓋) |
cmd &>> file |
將標準與錯誤輸出都附加至檔案末尾 |
cmd > file 2>&1 |
將錯誤輸出 2 導向標準輸出
1,再導向檔案 |
cmd 2>&1 > file |
先把錯誤輸出導向目前的標準輸出,再改變標準輸出 → 結果不同 |
常見重導向技巧
僅保留正確輸出,忽略錯誤訊息
僅保留錯誤訊息,忽略正確輸出
同時忽略所有輸出
/dev/null 是特殊裝置,代表「黑洞」,任何寫入的內容都會被丟棄。
管線(Pipe) |
管線會將前一指令的「標準輸出」作為後一指令的「標準輸入」:
範例:
備註
- 若需只處理標準錯誤,請使用
2>。
- 若需只處理標準輸出,請使用
1> 或 >。
- 多重重導向或與程式控制流程結合時,建議使用小括號明確邏輯。
Linux 系統資源/指令輸入與輸出(行程重導)
系統資源
資源查看 top / free / ps
# 顯示即時的程式執行狀態與統計數字 top # 查看記憶體使用情況(單位:KB) free -h # 查詢執行中的程序(最常用參數:aux) ps aux查看硬體資訊 - dmidecode
使用
dmidecode工具查出硬體資訊如 CPU / Memory / 主機板型號:dmidecode -t bios # BIOS 資訊 dmidecode -t system # 系統資訊 dmidecode -t baseboard # 主機板 dmidecode -t chassis # 機殼 dmidecode -t processor # 處理器 dmidecode -t memory # 記憶體 dmidecode -t cache # 快取 dmidecode -t connector # 連接器 dmidecode -t slot # 插槽查看 CPU 資訊
查看記憶體資訊
訊號種類與使用
# 查看所有訊號名稱及對應代碼 kill -l trap -l傳遞訊號 - kill
# 使用代碼發送訊號 kill -2 <PID> # 使用訊號名稱發送訊號 kill -SIGINT <PID>捕捉訊號 - trap
可透過
trap在腳本中對訊號做出處理,進行善後動作(如清除暫存檔)。語法:
trap '要執行的指令' 訊號名稱範例:
trap 'echo "捕捉到 SIGINT,準備退出。"; exit 1' SIGINT while true; do sleep 1 done行程輸出重導(Redirection & Piping)
輸入與輸出導向(<、>、>>、<<)
# 將檔案作為輸入來源 cmd < input.txt # 將輸出覆蓋寫入檔案 cmd > output.txt # 同時指定輸入與輸出 cmd < input.txt > output.txt # 開啟檔案供讀寫(可讀可寫) cmd <> file.txt # 將輸出附加至檔案末尾 cmd >> output.txt輸出與錯誤導向
cmd > filecmd 1> filecmd >> filecmd 2> filecmd 2>> filecmd &> filecmd &>> filecmd > file 2>&12導向標準輸出1,再導向檔案cmd 2>&1 > file常見重導向技巧
僅保留正確輸出,忽略錯誤訊息
僅保留錯誤訊息,忽略正確輸出
同時忽略所有輸出
管線(Pipe)
|管線會將前一指令的「標準輸出」作為後一指令的「標準輸入」:
範例:
# 將 /etc/passwd 中的內容過濾含 bash 的行 cat /etc/passwd | grep bash # 等效於: grep bash /etc/passwd備註
2>。1>或>。# 將標準與錯誤輸出導向不同檔案 (cmd > out.txt) 2> err.txt