Đến nội dung chính
Infra Notes
DOCS / UTF-8
Reference // Tra cứu kỹ thuậtlinux

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.

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

Mục đích: Copy các file từ nguồn sang server đích, bỏ qua file đã tồn tại ở đích.

Terminal window
rsync -avzh --ignore-existing --progress \
/var/lib/3cxpbx/Instance1/Data/Recordings/* \
"root@<IP>:/var/lib/3cxpbx/Instance1/Data/Recordings/"

Log của một service trong khoảng thời gian:

Terminal window
journalctl -u <SERVICE> --since "<YYYY-MM-DD HH:MM:SS>" --until "<YYYY-MM-DD HH:MM:SS>"

Ví dụ:

Terminal window
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:

Terminal window
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:

Terminal window
journalctl -xe

Theo dõi log theo thời gian thực:

Terminal window
journalctl -f

Hiển thị log mức err và các mức nghiêm trọng hơn (crit, alert, emerg):

Terminal window
journalctl -p err

Log từ đầu ngày hiện tại:

Terminal window
journalctl --since today

Tham khảo cách lọc priority và đọc journal trong tài liệu journalctl.

Terminal window
netstat -ant
netstat -anp | grep ":443" | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
ss -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
watch -n1 'ss -ant'

Theo dõi access log của Nginx:

Terminal window
tail -f /var/log/nginx/access.log

Theo dõi log xác thực:

Terminal window
tail -f /var/log/auth.log

⚠ 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.

Terminal window
sudo ipset list blacklist
iptables -L -n
iptables -L INPUT --line-numbers

Chặn toàn bộ traffic từ một IP:

Terminal window
iptables -A INPUT -s <IP> -j DROP

Ví dụ:

Terminal window
iptables -A INPUT -s 45.67.10.20 -j DROP

Chỉ chặn truy cập TCP tới port 22:

Terminal window
iptables -A INPUT -s <IP> -p tcp --dport 22 -j DROP

Xem số thứ tự rule trước, sau đó xóa theo line number:

Terminal window
iptables -L INPUT --line-numbers
iptables -D INPUT <LINE_NUMBER>

Ví dụ:

Terminal window
iptables -D INPUT 1

File cấu hình thường gặp trên hệ RHEL/CentOS: /etc/sysconfig/iptables.

💡 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:

Terminal window
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Cấu hình jail cho SSH:

[sshd]
enabled = true
port = 22
logpath = %(sshd_log)s
maxretry = 5
findtime = 10m
bantime = 1h

Kiểm tra trạng thái:

Terminal window
fail2ban-client status
fail2ban-client status sshd

Gỡ chặn một IP:

Terminal window
fail2ban-client set sshd unbanip <IP>

⚠ 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.

  1. Rescan disk:

    Terminal window
    echo 1 > /sys/class/block/sda/device/rescan
  2. Kiểm tra cấu trúc LVM:

    Terminal window
    pvdisplay
    vgdisplay
    lvdisplay

Phương án dùng growpart:

Terminal window
growpart /dev/sda 2
pvresize /dev/sda2
lvextend -l +100%FREE /dev/mapper/SangomaVG-root
xfs_growfs /

Phương án dùng parted:

Terminal window
parted /dev/sda resizepart 2 100%
partprobe /dev/sda
pvresize /dev/sda2
lvextend -l +100%FREE /dev/SangomaVG/root
xfs_growfs /
  1. 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:

Terminal window
parted -s /dev/sda resizepart 2 100%
partprobe /dev/sda
xfs_growfs /
df -h

Phương án dùng growpart:

Terminal window
growpart /dev/sda 2
partprobe /dev/sda
xfs_growfs /
df -h /
Filesystem Lệnh mở rộng
XFS xfs_growfs <MOUNT_POINT>
ext4 resize2fs <DEVICE>
  1. Xác định disk lỗi và disk thay thế.

  2. Xác nhận đường dẫn disk trong /dev/disk/by-id/.

  3. Thực hiện thay thế:

    Terminal window
    zpool replace pool-hdd-0 \
    scsi-35000c500a73db34f \
    /dev/disk/by-id/scsi-35000c500a6c83b3f
  4. Theo dõi trạng thái pool/resilver:

    Terminal window
    zpool status
Terminal window
openssl req -new -newkey rsa:2048 -nodes \
-keyout cert.key \
-out cert.csr \
-subj "/CN=<DOMAIN>"
Terminal window
openssl x509 -req -days 3650 \
-in cert.csr \
-signkey cert.key \
-out cert.crt
Terminal window
openssl rsa -in cert.key -check
openssl req -text -noout -verify -in cert.csr
openssl x509 -in cert.crt -text -noout

So sánh modulus của key và CSR:

Terminal window
openssl rsa -in cert.key -noout -modulus | openssl md5
openssl req -in cert.csr -noout -modulus | openssl md5

Hai kết quả MD5 phải giống nhau.

  1. Cài đặt Certbot:

    Terminal window
    sudo apt install certbot python3-certbot-nginx -y
  2. Yêu cầu cấp certificate:

    Terminal window
    sudo certbot --nginx -d <DOMAIN>
Terminal window
systemctl list-units --type=service --state=running
systemctl 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
Terminal window
docker cp <CONTAINER_ID>:/etc/asterisk/extensions.conf /home

🔐 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.

Terminal window
curl -s \
-H "Authorization: Basic ${REGISTRY_AUTH}" \
"http://<REGISTRY_HOST>:5000/v2/<IMAGE>/tags/list" \
| jq '.tags[]' \
| grep master

Cá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
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 u nếu muốn kiểm tra ở giao thức UDP. Ví dụ: nc -zvu <IP> <PORT>.

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