DevOps基石:Shell
· 閱讀時間約 4 分鐘
在 IT 界,Shell 是工程師們最早接觸的工具之一。無論是管理伺服器、執行批次任務,還是進行 CI/CD 流程,Shell 都是不可或缺的角色。對 DevOps 而言,Shell 不僅是操作系統的介面,更是實現自動化的基石。
Shell 是什麼?
Shell 是作業系統與使用者之間的橋樑,負責解析指令並傳遞給核心執行。在 Linux 和 macOS 環境下,Bash(Bourne Again Shell)是最常見的 Shell,而 Windows 則有 PowerShell。
為何 DevOps 需要 Shell?
- 自動化基礎:無論是設定伺服器、管理網路,還是處理日常任務,Shell Script 都是最輕量且高效率的選擇。
- 跨平台支援:Shell 可在不同系統間運行,並透過 SSH 遠端執行,無需額外安裝工具。
- 與工具鏈整合:無論是 Ansible、Docker、Kubernetes,還是 CI/CD 工具(如 Jenkins、GitHub Actions),幾乎都能與 Shell Script 無縫整合。
- 高效率的批次處理:可批次執行多個指令,提升管理效能,避免 重複性工作。
Shell 基本組件
命令與管道:Shell 支援命令組合,如 grep
、awk
、sed
,並透過 |
管道符號串聯,處理大規模數據。
變數與參數:可定義變數,如 $HOME
,並透過 $1, $2, ...
取得參數,增強腳本的靈活性。
條件與迴圈:透過 if-else
、for
和 while
控制流程,例如:
#!/bin/bash
if command -v python3 &> /dev/null; then
echo "Python3 installed"
else
echo "Python3 is not found"
fi
函式:提高腳本的可讀性與重用性,例如:
#!/bin/bash
function backup() {
tar -czf backup.tar.gz /important/data
}
backup
Shell 在 DevOps 的應用
1. 伺服器管理
透過 Shell Script,更新伺服器軟體、監控系統狀態,如:
#!/bin/bash
apt update && apt upgrade -y
systemctl restart nginx
2. CI/CD 流程整合
在 GitHub Actions 或 Jenkins 中,透過 Shell 控制測試與部署流程:
#!/bin/bash
echo "Start test..."
npm test
echo "Finished test, deploy..."
scp -r ./build user@server:/var/www/html
3. 監控與告警
使用 Shell 監控 CPU、記憶體,並在異常時發送通知:
#!/bin/bash
usage=$(df -h | grep '/dev/sda1' | awk '{print $5}' | sed 's/%//')
if [ "$usage" -gt 90 ]; then
echo "Disk usage over 90%" | mail -s "Warning" admin@example.com
fi
結語
Shell 不只是 DevOps 的入門工具,更是提升工作效率的關鍵。透過 Shell,我們能快速自動化日常操作,提升 IT 系統的可靠性。如果你還沒熟悉 Shell,不妨開始學習,讓它成為你的 DevOps 利器!