| 類別 | 指令 | 常用參數/範例 | 用途 |
|---|---|---|---|
| 檔案/目錄 | ls | -lh, -lt (依時間) | 列出檔案、大小、權限 |
| cd | cd - (回上層), cd ~ | 切換目錄 | |
| cp/mv/rm | -r 遞迴, -f 強制, -i 互動 | 複製/移動/刪除 | |
| chmod/chown | chmod 755, chown user:group | 權限/擁有者管理 | |
| find | find /var/log -name "*.log" -mtime +7 -delete | 條件查找/清理舊日誌 | |
| tar | tar -czf app.tar.gz /opt/app, -xzf 解壓 | 打包/解壓 | |
| 檢視/搜尋 | tail | -f 即時追蹤, -n 200 | 看日誌神器 |
| grep | -r "ERROR" /app/logs, -i 忽略大小寫, -A 5 -B 5 上下文 | 內容搜尋 | |
| wc | -l 行數 | 統計日誌行數 | |
| cat/less/more | less +F 類 tail -f 但可捲動 | 檢視大檔案 | |
| type/which | type java | 確認命令來源 | |
| 進程/系統 | ps | aux, ef, ps -ef | grep java | 進程快照 |
| top/htop | top -p $(pgrep -d',' java) | 即時 CPU/記憶體監控 | |
| kill/killall | kill -9 <PID>, killall -9 java | 強制終止 | |
| df/du | df -h 磁碟, du -sh /var/log 目錄大小 | 空間監控 | |
| w/uptime | load average > CPU 核心數 表示過載 | 系統負載快速判斷 | |
| 網路/遠端 | scp/rsync | scp target.war user@host:/opt/deploy/ | 檔案傳輸/同步部署 |
| wget/curl | curl -I https://host/health | 健康檢查/下載 | |
| netstat/ss | ss -tlnp | grep :8080 | 端口佔用檢查 | |
| ssh | ssh -i key.pem user@host | 遠端登入 |
#!/bin/bash
# deploy.sh - 簡單 WAR 部署腳本
set -euo pipefail
WAR_PATH="/opt/build/target.war"
DEPLOY_DIR="/opt/tomcat/webapps"
BACKUP_DIR="/opt/backup/$(date +%F_%H%M)"
mkdir -p "$BACKUP_DIR"
# 備份舊版
[ -f "$DEPLOY_DIR/ROOT.war" ] && mv "$DEPLOY_DIR/ROOT.war" "$BACKUP_DIR/"
# 部署新版
cp "$WAR_PATH" "$DEPLOY_DIR/ROOT.war"
# 重啟 Tomcat (假設用 systemd)
systemctl restart tomcat
# 健康檢查
for i in {1..30}; do
if curl -sf https://localhost:8080/health >/dev/null; then
echo "Deploy OK"
exit 0
fi
sleep 2
done
echo "Deploy FAILED: health check timeout"
exit 1
set -euo pipefail:遇錯即停、未定義變數報錯、管線任一失敗即失敗。"$VAR",防止空格/換行拆分。' 不展開變數,反引號 ` / $() 執行命令替換。crontab -e,記得寫絕對路徑、導向日誌:0 */6 * * * /opt/scripts/check_disk.sh >> /var/log/disk.log 2>&1。awk/sed 處理結構化日誌:awk '$9 ~ /500/ {print $1, $7}' access.log。| 指標 | 警告閾值 | 檢查指令/方式 |
|---|---|---|
| 磁碟使用率 | > 85% | df -h | awk '$5+0 > 85 {print $6, $5}' |
| 記憶體可用 | < 10% | free -m | awk '/Mem:/ {print $7}' |
| CPU Load (1min) | > 核心數 * 2 | uptime | awk -F'load average:' '{print $2}' | awk '{print $1}' |
| Java Heap 使用率 | > 85% | JMX / jstat -gcutil <PID> / Prometheus JMX Exporter |
| Tomcat 執行緒池 | 使用率 > 90% | JMX / Manager App / Actuator |
| 資料庫連線池 | 使用率 > 90% | HikariCP MBean / Druid StatView |
| 應用健康端點 | 非 200 | curl -f https://host:port/actuator/health |
./configure --prefix=/opt/nginx --with-http_ssl_module
make -j$(nproc)
make install
# 建議製作 RPM/DEB 或 Docker Image 實現不可變部署