Học Linux cho người làm sysadmin nên bắt đầu từ lệnh nào

Lệnh đầu tiên mình gõ trên một máy chủ Linux thật, sau khi SSH vào được, là ls. Gõ xong mình ngồi nhìn danh sách thư mục khoảng một phút mà không biết làm gì tiếp. Người hướng dẫn lúc đó, một anh làm vận hành lâu năm, chỉ nói: “Vào /var/log đi, đọc xem máy nó đang kể gì.” Đó là bài học Linux có ích nhất mình nhận được trong năm đầu.

Rất nhiều bạn mới nhắn hỏi mình nên học Linux theo sách nào, khóa nào, có cần thuộc hết lệnh không. Mình không có câu trả lời gọn. Nhưng mình có thể kể những lệnh mà mình và mấy đồng nghiệp làm sysadmin gõ nhiều nhất trong một tuần, xếp theo thứ tự mà theo mình người mới nên học. Bài này viết từ góc nhìn người vận hành máy chủ, không phải người lập trình hay người dùng Linux trên máy cá nhân.

Trước khi gõ lệnh (chọn bản phân phối)

Doanh nghiệp ở Việt Nam mình gặp thường chạy một trong hai họ: họ Debian với Ubuntu Server, và họ Red Hat với Rocky Linux, AlmaLinux hoặc Red Hat Enterprise Linux. Khác nhau lớn nhất với người mới là trình quản lý gói (apt so với dnf) và vị trí vài file cấu hình. Phần còn lại gần như giống nhau.

Một chị làm sysadmin tám năm khuyên chọn một bản, học cho quen, rồi mới sang bản kia. Đừng cài cả hai cùng lúc rồi rối. Chị chọn Ubuntu Server cho người mới vì tài liệu tiếng Việt và tiếng Anh đều nhiều, lỗi gì cũng tìm được người từng gặp.

Còn cài ở đâu thì đơn giản: một máy ảo trên VirtualBox hoặc Proxmox, hoặc một máy chủ ảo giá rẻ thuê theo tháng. Quan trọng là bạn được quyền phá. Học Linux trên máy không được phép hỏng thì không bao giờ dám thử.

Nhóm 1: đi lại và đọc file

Nghe cơ bản, nhưng đây là thứ bạn dùng nhiều nhất. Bạn nên quen tay với pwd, cd, ls -lah, cp, mv, mkdir. Rồi tới nhóm đọc file: cat cho file ngắn, less cho file dài, head và tail để xem đầu và cuối.

Lệnh mà mình nghĩ người mới nên học sớm hơn mọi thứ là tail -f. Nó cho bạn xem log đang chạy theo thời gian thực. Khi một dịch vụ lỗi, mở một cửa sổ tail -f /var/log/syslog (hoặc file log của dịch vụ đó), cửa sổ khác thao tác, là thấy ngay máy phản ứng ra sao.

Đi kèm là grep. Log máy chủ có thể dài cả triệu dòng, và bạn chỉ cần những dòng có chữ “error” hay một địa chỉ IP nào đó. grep -i error, grep -r để tìm trong cả thư mục, và nối với lệnh khác bằng dấu | là những thứ cậu kỹ thuật ca đêm mình quen dùng không biết bao nhiêu lần một đêm.

Người làm sysadmin dành thời gian đọc nhiều hơn gõ, nên học cách đọc log trước khi học cách sửa.

Nhóm 2: dịch vụ đang chạy hay chết

Hầu hết bản phân phối hiện nay dùng systemd. Bốn lệnh bạn sẽ gõ hằng ngày là systemctl status, systemctl restart, systemctl enable và journalctl.

systemctl status nginx cho biết dịch vụ đang chạy không, chạy từ bao giờ, và mấy dòng log gần nhất. Nếu nó báo đỏ, bước tiếp theo là journalctl -u nginx --since "10 minutes ago" để xem chuyện gì xảy ra trong mười phút qua. Đừng vội restart. Restart xong thì log lỗi cũ vẫn còn, nhưng bạn dễ quên đọc vì dịch vụ đã xanh trở lại, rồi lần sau nó lại chết đúng kiểu đó.

Mình hay nói với người mới: hiểu vì sao nó chết quan trọng hơn làm nó sống lại, trừ khi khách hàng đang đứng chờ.

Nhóm 3: ổ đĩa, RAM, CPU

Một tỷ lệ lớn sự cố mình từng gặp bắt nguồn từ ổ đĩa đầy. Log không ghi được, cơ sở dữ liệu ngừng nhận dữ liệu, dịch vụ chết mà thông báo lỗi lại chẳng nói gì về ổ đĩa.

Xem dung lượng

df -h cho biết từng phân vùng còn bao nhiêu. Khi thấy một phân vùng gần đầy, dùng du -sh /var/* | sort -h để tìm thư mục nào đang phình. Thường là log quên xoay vòng, file sao lưu cũ, hoặc một thư mục tạm ai đó bỏ quên.

Xem tài nguyên đang dùng

free -h cho RAM, top hoặc htop cho tiến trình đang ăn CPU và bộ nhớ. Người mới hay hoảng khi thấy cột “free” của RAM gần bằng không. Thực ra Linux dùng RAM trống làm bộ đệm, nên con số cần nhìn là cột “available”.

Khi máy chậm mà không rõ vì sao

Lúc đó mình thử uptime để xem tải hệ thống, iostat (trong gói sysstat) để xem ổ đĩa có đang bị nghẽn không. Có lần cả đội mất nửa buổi nghi lỗi mạng, cuối cùng hóa ra một ổ cứng sắp hỏng làm mọi thao tác đọc ghi chậm lại.

Nhóm 4: mạng nhìn từ máy chủ

Bạn không cần thành kỹ sư mạng, nhưng phải tự kiểm tra được phía máy chủ trước khi đổ cho đội mạng. ip a xem địa chỉ IP, ip route xem bảng định tuyến, ping và traceroute để thử đường đi. ss -tulpn cho biết dịch vụ nào đang lắng nghe trên cổng nào, cực kỳ hay dùng khi một ứng dụng báo không kết nối được.

Cuối cùng là curl -I để thử gọi một trang web và xem mã phản hồi, và dig để kiểm tra phân giải tên miền. Nhiều lỗi “mạng chập chờn” thực ra là DNS trỏ sai.

Đây là phần mình thấy ranh giới giữa sysadmin và người làm mạng rất mờ. Nếu bạn đang cân nhắc theo hướng nào trong công việc quản trị server và hạ tầng nói chung, biết cả hai phía sẽ giúp bạn nói chuyện được với cả hai đội.

Nhóm 5: người dùng và quyền

Linux xây trên ý tưởng mỗi file có chủ và có quyền. Hiểu chmod, chown, đọc được chuỗi rwxr-x--- là chuyện bắt buộc. Rồi tới sudo, useradd, usermod, file /etc/sudoers (sửa qua visudo, đừng sửa thẳng).

Phần SSH cũng nằm ở đây. Học cách tạo cặp khóa bằng ssh-keygen, chép khóa công khai lên máy chủ, rồi tắt đăng nhập bằng mật khẩu. Chị sysadmin tám năm bảo đó là việc đầu tiên chị làm trên mọi máy chủ mới, trước cả cài phần mềm.

Một lời khuyên nhỏ: trước khi sửa cấu hình SSH hay tường lửa, luôn giữ một phiên đăng nhập cũ đang mở. Nếu cấu hình mới sai, bạn vẫn còn đường quay lại.

Nhóm 6: làm cho máy tự làm

Khi đã quen tay, bạn sẽ thấy mình lặp lại vài việc mỗi ngày. Đó là lúc học crontab -e để lên lịch, và viết vài đoạn Bash ngắn. Script đầu tiên của mình chỉ có mười dòng, kiểm tra ổ đĩa và gửi email khi quá ngưỡng. Thô, nhưng chạy được ba năm.

Đi xa hơn thì có Ansible để đẩy cấu hình lên nhiều máy cùng lúc. Nhưng theo mình đừng học Ansible khi chưa tự tay làm được những việc đó bằng lệnh thường, vì lúc lỗi bạn sẽ không biết nó đang làm gì bên dưới.

Học thế nào cho vào đầu

Đọc danh sách lệnh thì ai cũng đọc được. Cái khác là tự gây lỗi rồi tự sửa. Mình hay bày cho người mới vài bài: cố tình làm đầy một phân vùng rồi tìm ra thủ phạm, cài nginx rồi sửa sai file cấu hình xem nó báo gì, đổi quyền một thư mục web rồi xem trang trắng ra sao. Mỗi lỗi tự tạo ra rồi tự gỡ được là một lần nhớ lâu.

Thêm một thói quen: ghi lại. Một file văn bản đơn giản, lệnh nào đã dùng, để làm gì, gặp lỗi gì. Sau vài tháng đó là tài liệu riêng của bạn, có ích hơn mọi bảng tra lệnh trên mạng.

Một trình soạn thảo chạy trong terminal cũng nên học sớm. nano dễ cho người mới, vim thì khó lúc đầu nhưng có mặt trên gần như mọi máy chủ. Mình học vim vì một lần vào máy khách hàng không có nano, và mất mười phút chỉ để thoát ra.

Đức Thịnh, gõ xong bài này ngay trong cửa sổ terminal quen thuộc.