Blog
Thoughts on engineering, design, and building great products.
Maps: Bộ Nhớ và Cầu Nối Với Userspace
Một chương trình eBPF chạy theo từng sự kiện rồi tắt, không giữ biến giữa các lần. Maps là cách nó nhớ trạng thái và nói chuyện với userspace. Bài này viết một chương trình đếm mỗi lần có tiến trình exec vào một map, nạp vào nhân, chạy vài lệnh, rồi đọc map từ userspace bằng bpftool — thấy con số tăng thật. Kèm soi một map thật của Cilium đang giữ metric per-CPU, và phân biệt array thường với per-CPU.
Máy Ảo eBPF: Thanh Ghi, Tập Lệnh và Bytecode
Bài trước thấy một chương trình eBPF có 'xlated 512B' (bytecode đã verify) và 'jited 333B' (mã máy). Bài này đi vào trong cái bytecode đó: eBPF là một máy ảo kiểu RISC với 11 thanh ghi 64-bit, một tập lệnh nhỏ, được thiết kế để vừa dịch nhanh sang mã máy gốc vừa kiểm chứng được an toàn. Ta đọc thẳng bytecode của một chương trình Cilium đang chạy, soi từng lệnh ánh xạ ra thanh ghi và lớp lệnh nào, rồi xem vì sao đúng thiết kế máy ảo này mới cho phép verifier chứng minh an toàn.
Seccomp, AppArmor và Capabilities
Bài 54 bắt pod khai runAsNonRoot, drop ALL capabilities, seccomp RuntimeDefault — nhưng đó mới là chính sách ở mức Kubernetes. Bài này xuống tầng kernel xem chúng làm gì thật: đọc /proc/self/status của hai pod, một mặc định một đã siết, so từng dòng CapEff, Seccomp, NoNewPrivs, AppArmor. Rồi chứng minh bằng tay rằng drop một capability chặn được thao tác cụ thể — chown bị từ chối ngay cả khi container vẫn chạy bằng root.
Cron và Tác Vụ Định Kỳ
Cho lệnh và script tự chạy theo lịch — backup hằng đêm, dọn log hằng tuần. Học cú pháp crontab, các bẫy thường gặp (PATH, môi trường), at cho việc một lần, và tổng kết cả series Linux.
Shell Scripting: Tự Động Hóa Bằng Bash
Gom các lệnh thành script để khỏi gõ lại và tự động hóa công việc. Học shebang, biến, tham số, điều kiện, vòng lặp, hàm, exit code, và các thói quen viết script an toàn như set -euo pipefail.
systemd và Dịch Vụ
systemd là init system điều khiển mọi dịch vụ trên Linux hiện đại. Học systemctl để bật/tắt/khởi động lại service, cho chúng tự chạy khi boot, viết unit file riêng, và xem log bằng journalctl.
SSH và Truyền File: ssh, scp, rsync
Cách bạn thực sự vào một server Linux từ xa: SSH với xác thực bằng key (an toàn hơn mật khẩu), file cấu hình tiện dụng, và truyền file bằng scp và rsync. Kỹ năng nền tảng cho mọi việc trên server.