Bash scripting thực chiến: từ one-liner đến script vận hành
Các pattern Bash quan trọng nhất mà mọi SysOps/DevOps cần nắm: xử lý lỗi, pipe, log, lockfile và cron-safe script.
set -euo pipefail là nền tảng
Mọi script vận hành nên bắt đầu bằng `set -euo pipefail`. `-e` dừng ngay khi lệnh lỗi, `-u` báo lỗi khi dùng biến chưa khai báo, `-o pipefail` bắt lỗi trong pipe.
Thiếu dòng này, script có thể im lặng bỏ qua lỗi rồi tiếp tục — thứ nguy hiểm nhất khi chạy trong cron hoặc CI.
- set -euo pipefail
- trap ERR để log stack trace
- Redirect stderr ra log file
- Thêm timestamp vào mỗi dòng log
Lockfile tránh chạy đồng thời
Script cron cần lockfile để tránh instance thứ hai chạy đè khi instance đầu chưa xong. Dùng `flock` hoặc tự tạo lockfile bằng `mkdir` (atomic).
Cleanup lockfile trong `trap EXIT` để không bị stuck khi script crash giữa chừng.
Bước tiếp theo
Nếu áp dụng vào dự án thật, hãy bắt đầu bằng phiên bản nhỏ nhất có thể đo được, ghi lại quyết định kỹ thuật, rồi cải tiến dựa trên log và phản hồi người dùng.