Linux
DOC PATH reference/linux/operations
📘 Mục đích: Tra cứu nhanh các lệnh và tác vụ vận hành Linux thường gặp. Thay các giá trị dạng
<IP>,<SERVICE>,<DOMAIN>,<DISK>và<PATH>trước khi chạy lệnh.
⚠ Các thao tác liên quan đến firewall, partition, LVM và ZFS có thể làm gián đoạn dịch vụ hoặc mất dữ liệu. Xác nhận đúng host, thiết bị và backup cấu hình trước khi thực hiện.
1. Tra cứu nhanh
Mục có tiêu đề “1. Tra cứu nhanh”| Tác vụ | Lệnh |
|---|---|
| Xem bảng định tuyến | route -n |
| Theo dõi băng thông theo kết nối | iftop |
| Xem các service đang chạy | systemctl list-units --type=service --state=running |
| Liệt kê service unit file và trạng thái enable | systemctl list-unit-files --type=service |
| Bắt gói tin và xoay file định kỳ | tcpdump -w /tmp/trace-%m-%d-%H-%M-%S-%s.pcap -W 150000 -G 180 |
Đồng bộ dữ liệu bằng rsync
Mục có tiêu đề “Đồng bộ dữ liệu bằng rsync”Mục đích: Copy các file từ nguồn sang server đích, bỏ qua file đã tồn tại ở đích.
rsync -avzh --ignore-existing --progress \ /var/lib/3cxpbx/Instance1/Data/Recordings/* \ "root@<IP>:/var/lib/3cxpbx/Instance1/Data/Recordings/"2. Logs & troubleshooting
Mục có tiêu đề “2. Logs & troubleshooting”Journalctl — tra cứu log hệ thống
Mục có tiêu đề “Journalctl — tra cứu log hệ thống”Log của một service trong khoảng thời gian:
journalctl -u <SERVICE> --since "<YYYY-MM-DD HH:MM:SS>" --until "<YYYY-MM-DD HH:MM:SS>"Ví dụ:
journalctl -u asterisk --since "2026-06-02 14:49:30" --until "2026-06-02 14:51:00"Log kernel trong khoảng thời gian:
journalctl -k --since "<YYYY-MM-DD HH:MM:SS>" --until "<YYYY-MM-DD HH:MM:SS>"Xem các log gần nhất, kèm phần giải thích nếu có trong journal catalog:
journalctl -xeTheo dõi log theo thời gian thực:
journalctl -fHiển thị log mức err và các mức nghiêm trọng hơn (crit, alert, emerg):
journalctl -p errLog từ đầu ngày hiện tại:
journalctl --since todayTham khảo cách lọc priority và đọc journal trong tài liệu journalctl.
3. Network & security
Mục có tiêu đề “3. Network & security”Kiểm tra traffic và IP đang kết nối
Mục có tiêu đề “Kiểm tra traffic và IP đang kết nối”Các lệnh kiểm tra
Mục có tiêu đề “Các lệnh kiểm tra”netstat -antnetstat -anp | grep ":443" | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nrss -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | headnetstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nwatch -n1 'ss -ant'Theo dõi access log của Nginx:
tail -f /var/log/nginx/access.logTheo dõi log xác thực:
tail -f /var/log/auth.logChặn IP bằng iptables/ipset
Mục có tiêu đề “Chặn IP bằng iptables/ipset”⚠ Kiểm tra kỹ IP và rule hiện có trước khi thao tác. Một rule sai có thể khiến bạn mất kết nối quản trị tới server.
Kiểm tra blacklist và rule hiện tại
Mục có tiêu đề “Kiểm tra blacklist và rule hiện tại”sudo ipset list blacklistiptables -L -niptables -L INPUT --line-numbersThêm rule chặn
Mục có tiêu đề “Thêm rule chặn”Chặn toàn bộ traffic từ một IP:
iptables -A INPUT -s <IP> -j DROPVí dụ:
iptables -A INPUT -s 45.67.10.20 -j DROPChỉ chặn truy cập TCP tới port 22:
iptables -A INPUT -s <IP> -p tcp --dport 22 -j DROPXóa rule
Mục có tiêu đề “Xóa rule”Xem số thứ tự rule trước, sau đó xóa theo line number:
iptables -L INPUT --line-numbersiptables -D INPUT <LINE_NUMBER>Ví dụ:
iptables -D INPUT 1File cấu hình thường gặp trên hệ RHEL/CentOS: /etc/sysconfig/iptables.
Fail2ban
Mục có tiêu đề “Fail2ban”💡 Không sửa trực tiếp
/etc/fail2ban/jail.conf. Hãy tạo và chỉnh sửa/etc/fail2ban/jail.local.
Tạo file cấu hình local:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localCấu hình jail cho SSH:
[sshd]enabled = trueport = 22logpath = %(sshd_log)smaxretry = 5findtime = 10mbantime = 1hKiểm tra trạng thái:
fail2ban-client statusfail2ban-client status sshdGỡ chặn một IP:
fail2ban-client set sshd unbanip <IP>4. Disk & storage
Mục có tiêu đề “4. Disk & storage”Mở rộng disk có LVM
Mục có tiêu đề “Mở rộng disk có LVM”⚠ Xác nhận đúng disk, partition, volume group, logical volume và filesystem trước khi chạy. Chuẩn bị snapshot hoặc backup phù hợp. Điều kiện áp dụng các lệnh dưới đây: disk đã được tăng dung lượng và filesystem cần mở rộng là XFS.
-
Rescan disk:
Terminal window echo 1 > /sys/class/block/sda/device/rescan -
Kiểm tra cấu trúc LVM:
Terminal window pvdisplayvgdisplaylvdisplay
Phương án dùng growpart:
growpart /dev/sda 2pvresize /dev/sda2lvextend -l +100%FREE /dev/mapper/SangomaVG-rootxfs_growfs /Phương án dùng parted:
parted /dev/sda resizepart 2 100%partprobe /dev/sdapvresize /dev/sda2lvextend -l +100%FREE /dev/SangomaVG/rootxfs_growfs /Mở rộng disk không có LVM
Mục có tiêu đề “Mở rộng disk không có LVM”-
Rescan disk để nhận dung lượng mới:
Terminal window echo 1 > /sys/class/block/sda/device/rescan
Phương án dùng parted:
parted -s /dev/sda resizepart 2 100%partprobe /dev/sdaxfs_growfs /df -hPhương án dùng growpart:
growpart /dev/sda 2partprobe /dev/sdaxfs_growfs /df -h /| Filesystem | Lệnh mở rộng |
|---|---|
| XFS | xfs_growfs <MOUNT_POINT> |
| ext4 | resize2fs <DEVICE> |
Thay disk lỗi trong zpool
Mục có tiêu đề “Thay disk lỗi trong zpool”-
Xác định disk lỗi và disk thay thế.
-
Xác nhận đường dẫn disk trong
/dev/disk/by-id/. -
Thực hiện thay thế:
Terminal window zpool replace pool-hdd-0 \scsi-35000c500a73db34f \/dev/disk/by-id/scsi-35000c500a6c83b3f -
Theo dõi trạng thái pool/resilver:
Terminal window zpool status
5. SSL/TLS
Mục có tiêu đề “5. SSL/TLS”Tạo private key và CSR
Mục có tiêu đề “Tạo private key và CSR”openssl req -new -newkey rsa:2048 -nodes \ -keyout cert.key \ -out cert.csr \ -subj "/CN=<DOMAIN>"Tạo certificate self-signed
Mục có tiêu đề “Tạo certificate self-signed”openssl x509 -req -days 3650 \ -in cert.csr \ -signkey cert.key \ -out cert.crtKiểm tra key, CSR và certificate
Mục có tiêu đề “Kiểm tra key, CSR và certificate”openssl rsa -in cert.key -checkopenssl req -text -noout -verify -in cert.csropenssl x509 -in cert.crt -text -nooutSo sánh modulus của key và CSR:
openssl rsa -in cert.key -noout -modulus | openssl md5openssl req -in cert.csr -noout -modulus | openssl md5Hai kết quả MD5 phải giống nhau.
Cấp TLS certificate bằng Certbot với Nginx
Mục có tiêu đề “Cấp TLS certificate bằng Certbot với Nginx”-
Cài đặt Certbot:
Terminal window sudo apt install certbot python3-certbot-nginx -y -
Yêu cầu cấp certificate:
Terminal window sudo certbot --nginx -d <DOMAIN>
6. Process & application
Mục có tiêu đề “6. Process & application”Systemd
Mục có tiêu đề “Systemd”systemctl list-units --type=service --state=runningsystemctl list-unit-files --type=service| Nhóm | Lệnh | Chức năng |
|---|---|---|
| Khởi chạy | pm2 start <APP> |
Khởi động ứng dụng hoặc script |
| Kiểm tra | pm2 list |
Liệt kê các process đang được PM2 quản lý |
| Kiểm tra | pm2 show <NAME> |
Xem PID, CPU, RAM, log và số lần restart |
| Theo dõi | pm2 logs <NAME> |
Theo dõi log của process theo thời gian thực |
| Theo dõi | pm2 monit |
Theo dõi CPU, RAM và log trên console |
| Điều khiển | pm2 restart <NAME> |
Khởi động lại process |
| Điều khiển | pm2 reload <NAME> |
Reload process với gián đoạn tối thiểu nếu ứng dụng hỗ trợ |
| Điều khiển | pm2 stop <NAME> |
Dừng process nhưng giữ cấu hình trong PM2 |
| Điều khiển | pm2 delete <NAME> |
Xóa process khỏi danh sách quản lý |
| Khôi phục | pm2 save |
Lưu trạng thái hiện tại để khôi phục sau khi reboot |
7. Docker & container registry
Mục có tiêu đề “7. Docker & container registry”Sao chép file từ container
Mục có tiêu đề “Sao chép file từ container”docker cp <CONTAINER_ID>:/etc/asterisk/extensions.conf /homeKiểm tra image tag trên registry
Mục có tiêu đề “Kiểm tra image tag trên registry”🔐 Không ghi trực tiếp thông tin xác thực vào tài liệu hoặc shell history. Lấy giá trị từ secret manager hoặc biến môi trường được bảo vệ. HTTP Basic dùng Base64 để encode
user:password, không mã hóa dữ liệu. Ví dụ HTTP bên dưới chỉ dành cho lab cô lập với credential thử nghiệm; dùng HTTPS khi truyền credential thực.
Tham khảo cơ chế HTTP Basic và yêu cầu bảo vệ credential trong RFC 7617.
curl -s \ -H "Authorization: Basic ${REGISTRY_AUTH}" \ "http://<REGISTRY_HOST>:5000/v2/<IMAGE>/tags/list" \ | jq '.tags[]' \ | grep masterCác biến cần thay:
| Biến | Ý nghĩa |
|---|---|
REGISTRY_AUTH |
Chuỗi user:password được encode bằng Base64 và cấp qua kênh an toàn |
<REGISTRY_HOST> |
IP hoặc hostname của registry |
<IMAGE> |
Đường dẫn image, ví dụ api/api-demo-app |
8. Netcat (nc) — kiểm tra TCP/UDP
Mục có tiêu đề “8. Netcat (nc) — kiểm tra TCP/UDP”Các thao tác thường dùng
Mục có tiêu đề “Các thao tác thường dùng”| Command | Mục đích | Tác động phía server | Rủi ro |
|---|---|---|---|
nc -zv <IP> <PORT> |
Kiểm tra TCP port | Tạo kết nối TCP ngắn rồi đóng | Thấp |
nc -zv -w 3 <IP> <PORT> |
Kiểm tra TCP với timeout | Giới hạn thời gian chờ ở 3 giây | Thấp |
nc -v <IP> <PORT> |
Kết nối trực tiếp, hiển thị chi tiết | Giữ kết nối mở, có thể gửi/nhận dữ liệu | Thấp → Trung bình |
nc -zv <IP> 22 80 443 |
Kiểm tra nhiều port | Tạo nhiều kết nối TCP ngắn | Thấp |
nc -zv <IP> 1-1000 |
Scan dải port | Tạo hàng loạt kết nối TCP | Trung bình |
nc -lv <PORT> |
Mở TCP listener | Mở một port trên host chạy lệnh | Trung bình |
💡 Lưu ý: Thêm option
unếu muốn kiểm tra ở giao thức UDP. Ví dụ:nc -zvu <IP> <PORT>.
9. curl — kiểm tra HTTP/HTTPS
Mục có tiêu đề “9. curl — kiểm tra HTTP/HTTPS”| Lệnh | Dùng để |
|---|---|
curl -I <URL> |
Gửi HEAD request để xem HTTP response header và status |
curl -v <URL> |
Xem chi tiết DNS, TCP, request/response |
curl -vk <HTTPS_URL> |
Chẩn đoán HTTPS, bỏ kiểm tra TLS certificate |
curl -vL <URL> |
Theo dõi redirect |
curl -vk --resolve <DOMAIN>:443:<IP> https://<DOMAIN> |
Kiểm tra domain tại IP chỉ định, bỏ kiểm tra TLS certificate |