「會用 Linux 指令,就能和嵌入式板子對話。不會,你只是在猜。」
— 每個用 Raspberry Pi 踩過坑的工程師
為什麼軟體工程師需要懂 Linux
不管你是做 Web 後端、還是嵌入式開發,幾乎都繞不開 Linux。Raspberry Pi 跑的是 Raspberry Pi OS(基於 Debian)、工廠的嵌入式控制板通常跑 Embedded Linux、你的 AWS/GCP server 也是 Linux。
操作 GPIO、讀取 sensor、管理服務,全靠指令列
SSH 進機器、查 log、重啟服務、設定 cron
ps/top 看 process、grep 搜 log、find 找檔案
檔案與目錄操作速查
這 10 個指令你每天都會用到,背起來:
| 指令 | 說明 | 常用範例 |
|---|---|---|
| ls -la | 列出所有檔案(含隱藏),含詳細資訊 | ls -la /var/log |
| cd | 切換目錄 | cd /home/pi && cd .. |
| pwd | 顯示目前路徑 | pwd |
| mkdir -p | 建立目錄(含父層) | mkdir -p /opt/app/config |
| rm -rf | 強制刪除目錄與內容 | rm -rf /tmp/build |
| cp -r | 複製目錄(遞迴) | cp -r /src /backup |
| mv | 移動或重命名 | mv old.txt new.txt |
| find | 搜尋檔案 | find /var -name "*.log" -mtime +7 |
| cat / less / tail -f | 查看檔案內容 / 即時追蹤 | tail -f /var/log/syslog |
| grep | 文字搜尋(支援 regex) | grep -r "ERROR" /var/log/ |
權限管理
Linux 的權限系統是最常被初學者跳過、也最常在面試出現的主題。核心是三組 rwx:
| 權限值 | rwx 組合 | 意義 | 適用場景 |
|---|---|---|---|
| 755 | rwxr-xr-x | owner 全權,group/other 可讀執行 | 可執行腳本、可執行目錄 |
| 644 | rw-r--r-- | owner 可讀寫,group/other 唯讀 | 一般設定檔、文字檔 |
| 600 | rw------- | owner 可讀寫,其他人無權限 | SSH private key、密碼檔 |
| 777 | rwxrwxrwx | 所有人全權(危險!) | 除錯用,正式環境禁用 |
例如 755 = 7(rwx) + 5(r-x) + 5(r-x)
文字處理三劍客
從檔案或 stdin 搜尋符合 pattern 的行
grep -n "ERROR" app.log串流編輯器,最常用來取代字串
sed -i 's/old/new/g' config.txt按欄位(空格分隔)拆解與計算,適合處理表格資料
awk '{print $1, $3}' access.logProcess 管理
在嵌入式或伺服器環境,你常常需要確認哪個 process 在佔用 CPU/記憶體、強制結束某個卡住的程式。
kill PID(SIGTERM)會讓程式有機會做清理後結束; kill -9 PID(SIGKILL)是直接從 kernel 層強制殺掉, 程式沒有機會做任何清理動作。優先用 SIGTERM,SIGKILL 是最後手段。cron 排程
cron 是 Linux 的內建排程器,讓你在指定時間自動執行腳本。用 crontab -e 編輯。
| cron 表達式 | 執行時機 |
|---|---|
| 0 2 * * * | 每天凌晨 2:00 |
| */5 * * * * | 每 5 分鐘執行一次 |
| 0 9 * * 1 | 每週一早上 9:00 |
| 0 0 1 * * | 每月 1 日午夜 |
| 30 18 * * 1-5 | 週一到週五,每天 18:30 |
常用網路指令
scp 語法 =
scp [來源] [目標],遠端路徑格式為 user@host:/path/to/file面試常考題
Q1. chmod 755 代表什麼?
r=4, w=2, x=1,三組分別對應 user/group/other。755 = rwx(7) r-x(5) r-x(5)。Owner 可讀、寫、執行;group 和 other 可讀、執行,但不能修改。
Q2. 如何找出佔用最多記憶體的 process?
有幾種方法,最常用的是 ps aux 排序,或直接看 top/htop:
Q3. find 和 grep 的差別?
find 是找「檔案本身」(依名稱、路徑、時間、大小等條件);grep 是找「檔案內容」中符合 pattern 的行。兩者常搭配使用:先 find 找到目標檔案,再 grep 搜尋內容。
Q4. 如何讓腳本在背景持續執行,即使 SSH 斷線也不停?
直接用 & 放背景,SSH 斷線後 process 會收到 SIGHUP 而結束。要讓它持續跑,需要用 nohup 或 screen/tmux:
Q5. /etc/hosts 是做什麼的?
/etc/hosts 是本機的 DNS 覆寫表。在 DNS 查詢之前,系統會先查這個檔案。嵌入式環境常用它來把 hostname 對應到 IP,也常用來 block 某些網域(如廣告攔截)。
這 20 個指令的核心原則
- →懂 rwx 三組權限,chmod 數字就不會再算錯
- →ps aux + kill 處理 90% 的 process 問題
- →grep + find + awk 組合,log 分析無難題
- →cron 設定搭配 2>&1 >> log 做好輸出記錄
- →SSH + scp 是遠端操作嵌入式設備的基本功