Pages

Powered by Blogger.

Một số lệnh làm việc với thư mục trên Ubuntu

 Dưới đây là bảng tổng hợp tất cả lệnh làm việc với thư mục (directory) trên Ubuntu mà bạn sẽ dùng hàng ngày – từ cơ bản đến nâng cao, kèm ví dụ thực tế:

Mục đíchLệnhVí dụ thực tế
Xem thư mục hiện tạipwd/home/khanh/projects
Liệt kê file/thư mụclsls -l → chi tiết quyền, kích thước, ngày ls -la → hiện cả file ẩn
Tạo một thư mụcmkdir tên_thư_mụcmkdir myapp
Tạo nhiều thư mục cùng lúcmkdir folder1 folder2 folder3
Tạo cả thư mục cha (nếu chưa có)mkdir -p đường/dẫn/sâu/đến/thư/mụcmkdir -p /var/www/html/site/public/uploads → tạo hết các cấp nếu chưa có
Đổi tên / di chuyển thư mụcmv cũ mớimv old-name new-name mv /home/old /backup/
Sao chép thư mục (và toàn bộ bên trong)cp -r nguồn đíchcp -r /home/project /backup/project-backup
Sao chép nhưng giữ nguyên quyền + timestampcp -a nguồn đíchcp -a /etc /backup/etc-2025
Xóa thư mục rỗngrmdir tên_thư_mụcrmdir temp → chỉ xóa được nếu trống
Xóa thư mục có nội dung (cực mạnh)rm -rf tên_thư_mụcrm -rf node_modules → xóa sạch không hỏi lại
Xóa nhiều thư mục cùng lúcrm -rf folder1 folder2 folder3
Vào thư mụccd tên_thư_mụccd /var/log cd .. → lên 1 cấp cd → về home
Về thư mục vừa ở trước đócd -
Xem dung lượng thư mụcdu -sh tên_thư_mụcdu -sh /var/log → 2.4G
Xem thư mục nào đang ngốn đĩa nhất`du -h --max-depth=1sort -hr`
Tìm thư mục theo tênfind / -type d -name "tên_thư_mục" 2>/dev/nullfind / -type d -name "node_modules" 2>/dev/null
Tìm và xóa tất cả thư mục node_modulesfind . -name "node_modules" -type d -exec rm -rf {} +Dùng trong project để dọn sạch node_modules nhanh
Đặt bookmark thư mục (rất tiện)Thêm vào ~/.bashrc: alias pj='cd /home/khanh/projects'Sau đó chỉ cần gõ pj là nhảy ngay vào thư mục project
Nhảy nhanh giữa các thư mục dàicd /very/long/path/that/you/hate/to/type → dùng Ctrl+R để tìm lịch sử
Xem cây thư mục đẹptree (nếu chưa có: sudo apt install tree) tree -L 2 → chỉ 2 cấptree -a → hiện cả file ẩn

Các lệnh “cứu cánh” khi làm việc nhiều với thư mục

Bash
# Dọn sạch toàn bộ thư mục tạm trong 1 lần
rm -rf /tmp/* ~/.cache/* ~/Downloads/*.tmp

# Tạo thư mục ngày tháng tự động (rất hay dùng backup)
mkdir -p backup-$(date +%Y-%m-%d)

# Sao chép thư mục nhưng hiển thị tiến độ (rsync)
rsync -ah --progress nguồn/ đích/

# Đồng bộ 2 thư mục (xóa file thừa ở đích nếu nguồn không còn)
rsync -ah --delete nguồn/ đích/

Tóm tắt 10 lệnh bạn sẽ gõ hàng ngày

Bash
pwd
ls -la
mkdir -p
cd
cd ..
mv
cp -r
rm -rf cực kỳ nguy hiểm, cẩn thận!
du -sh *
rm -rf $(find . -type d -name "node_modules")

Dọn dẹp toàn bộ Docker

 Dưới đây là các lệnh dọn dẹp sạch hoàn toàn mọi thứ trên Docker (image, container, volume, network, cache) – dùng khi bạn muốn xóa sạch 100% và bắt đầu lại từ đầu.

Cảnh báo: Các lệnh này sẽ xóa toàn bộ dữ liệu Docker trên máy, không thể khôi phục (trừ khi bạn có backup volume bên ngoài).

Thứ tự dọn dẹp an toàn và sạch nhất (khuyên dùng)

Bash
# 1. Dừng tất cả container đang chạy
sudo docker stop $(docker ps -q)

# 2. Xóa tất cả container (chạy + dừng + exited)
sudo docker rm -f $(docker ps -aq)

# 3. Xóa tất cả image (kể cả image bạn tự build)
sudo docker rmi -f $(docker images -q -a)

# 4. Xóa tất cả volume (nơi chứa dữ liệu DB, file v.v.)
sudo docker volume rm $(docker volume ls -q)

# 5. Xóa tất cả network không phải mặc định (nếu còn)
sudo docker network prune -f

# 6. Xóa toàn bộ build cache (cache khi build image)
sudo docker builder prune -a -f

# 7. Lệnh “tất cả trong một” cực mạnh (Docker cung cấp sẵn từ phiên bản mới)
sudo docker system prune -a --volumes -f

Giải thích từng phần của lệnh siêu mạnh cuối cùng

Bash
sudo docker system prune -a --volumes -f
  • -a → xóa cả image không có tag và image không được container nào dùng
  • --volumes → xóa luôn tất cả volume (mặc định không xóa)
  • -f → không hỏi xác nhận → Kết quả: Docker trở về trạng thái như vừa cài mới 100%.

Một lệnh duy nhất để làm sạch tuyệt đối (copy-paste là xong)

Bash
sudo docker stop $(docker ps -q) && \
sudo docker rm -f $(docker ps -aq) && \
sudo docker rmi -f $(docker images -q -a) && \
sudo docker volume rm $(docker volume ls -q) && \
sudo docker builder prune -a -f && \
sudo docker system prune -a --volumes -f

Chạy xong lệnh này thì:

  • Không còn container nào
  • Không còn image nào (kể cả ubuntu, nginx, mysql… tất cả biến mất)
  • Không còn volume nào (dữ liệu database, redis, v.v. cũng bay hết)
  • Dung lượng Docker giảm về gần 0

Sau khi dọn sạch, kiểm tra lại

Bash
docker ps -a          # → không còn gì
docker images         # → không còn gì
docker volume ls      # → không còn gì
docker system df -v   # → gần như trống rỗng

Nếu bạn chỉ muốn dọn nhẹ (giữ lại image và volume quan trọng) thì nói mình, mình sẽ đưa lệnh nhẹ hơn. Còn nếu muốn “xóa sạch để cài lại từ đầu” thì cứ chạy thoải mái các lệnh trên!

Một số lệnh liên quan đến docker

 MỘT SỐ LỆNH LIÊN QUAN DOCKER


1. Nâng cấp Docker (Docker Engine + Docker Compose)

Bash
# Cập nhật danh sách gói
sudo apt update

# Nâng cấp Docker Engine và các thành phần liên quan
sudo apt upgrade docker.io docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Hoặc nếu bạn cài Docker từ repo chính thức của Docker (khuyên dùng)
sudo apt update
sudo apt upgrade docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Kiểm tra phiên bản mới sau khi nâng cấp
docker --version
docker compose version

2. Hiển thị các Docker Image

Bash
docker images                  # hoặc docker image ls
docker images --all            # Hiển thị cả intermediate images
docker images -a               # Tương tự
docker images --digests        # Hiển thị digest
docker images -q | sort -u     # Chỉ liệt kê image ID duy nhất

3. Hiển thị các container (tiến trình) đang chạy / đã dừng

Bash
docker ps                # Chỉ container đang chạy
docker ps -a             # Tất cả container (chạy + dừng + exited)
docker ps -q             # Chỉ ID của container đang chạy
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"

# Top (xem process bên trong container)
docker top <container_id_or_name>

# Stats (CPU, RAM, network realtime)
docker stats             # Theo dõi tất cả container đang chạy
docker stats --no-stream # Chỉ hiện 1 lần

4. Xem log của container (30 dòng mới nhất)

Bash
# 30 dòng cuối cùng
docker logs -f --tail 30 <container_name_or_id>

# Chỉ 30 dòng cuối cùng (không follow)
docker logs --tail 30 <container_name_or_id>

# Xem log từ thời điểm cụ thể
docker logs --since 2025-11-26T10:00 <container>

# Xem log có timestamp
docker logs -t --tail 30 <container>

5. Các lệnh debug mạnh nhất (kiểm tra instance, cổng, trạng thái, lỗi)

Mục đíchLệnh mạnh nhất
Xem chi tiết containerdocker inspect <container>
Xem cổng đang mapdocker port <container>
Kiểm tra container đang chạy gìdocker exec -it <container> ps aux hoặc htop (nếu có)
Vào shell containerdocker exec -it <container> bash hoặc sh
Xem network và IPdocker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container>
Xem toàn bộ thông tin Dockerdocker system info
Xem event realtimedocker events -f
Xem tài nguyên hệ thống Dockerdocker system df (dung lượng image, container, volume)
Debug khi container không khởi độngdocker logs <container> + docker inspect <container> + docker events --since 10m
Kiểm tra lỗi driver/storagedocker info | grep -i storage hoặc docker system info --format '{{.DriverStatus}}'
Debug networkdocker network ls docker network inspect bridge

Một số lệnh debug nhanh khi gặp lỗi phổ biến

Bash
# Container tự động restart liên tục?
docker ps -a --filter "status=exited" --filter "status=restarted"

# Dọn dẹp toàn bộ thứ không dùng (cẩn thận!)
docker system prune -a --volumes

# Xem dung lượng thực tế đang dùng
docker system df -v

# Restart Docker daemon (khi bị treo)
sudo systemctl restart docker

# Kiểm tra trạng thái service
sudo systemctl status docker
sudo journalctl -u docker -n 50 --no-pager

Tóm tắt lệnh hay dùng hàng ngày

Nhiệm vụLệnh nhanh nhất
Xem container đang chạydocker ps
Xem tất cả containerdocker ps -a
Xem imagedocker images
Xem log 30 dòng cuốidocker logs --tail 30 ten_container
Vào shell containerdocker exec -it ten_container bash
Xem thông tin chi tiếtdocker inspect ten_container
Xem cổngdocker port ten_container
Theo dõi tài nguyên realtimedocker stats
Dọn dẹp toàn bộdocker system prune -a --volumes

Một số lệnh nâng cấp cài đặt liên quan Ubuntu

Dưới đây là các lệnh cơ bản và thường dùng nhất trên Ubuntu (và các bản phân phối dựa trên Debian) để thực hiện những việc bạn hỏi. Mình sẽ ghi cả lệnh dùng apt (cách phổ biến nhất) và snap (nếu phần mềm được cài qua snap).

1. Nâng cấp toàn bộ hệ điều hành Ubuntu (Update + Upgrade)

Bash
sudo apt update          # Cập nhật danh sách gói
sudo apt upgrade         # Cài đặt các bản cập nhật có sẵn
sudo apt dist-upgrade    # Xử lý tốt hơn khi có thay đổi dependencies (khuyến khích dùng thay upgrade bình thường)
sudo apt autoremove      # Dọn dẹp gói không còn cần thiết

Nếu muốn nâng cấp lên phiên bản Ubuntu mới hơn (ví dụ từ 22.04 lên 24.04):

Bash
sudo do-release-upgrade
# hoặc nếu muốn upgrade ngay cả khi đang ở bản development
sudo do-release-upgrade -d

2. Gỡ cài đặt một phần mềm

a. Phần mềm cài bằng apt

Bash
sudo apt remove tên_phần_mềm          # Gỡ nhưng vẫn giữ file cấu hình
sudo apt purge tên_phần_mềm           # Gỡ hoàn toàn + xóa luôn file cấu hình
sudo apt autoremove                   # Dọn dẹp các gói phụ thuộc không còn dùng

Ví dụ gỡ Firefox:

Bash
sudo apt purge firefox
sudo apt autoremove

b. Phần mềm cài bằng Snap

Bash
snap remove tên_phần_mềm

Ví dụ:

Bash
snap remove spotify

c. Phần mềm cài bằng Flatpak

Bash
flatpak uninstall tên_phần_mềm

3. Nâng cấp (cập nhật) một phần mềm cụ thể

a. Với apt

Thực ra apt không có lệnh nâng cấp riêng lẻ một gói (nó sẽ nâng cấp tất cả), nhưng bạn có thể làm như sau:

Bash
sudo apt update
sudo apt install tên_phần_mềm        # Nếu đã cài rồi thì nó sẽ nâng cấp lên phiên bản mới nhất
# hoặc
sudo apt upgrade tên_phần_mềm

Ví dụ nâng cấp chỉ VLC:

Bash
sudo apt install vlc

b. Với Snap (rất tiện cho việc update riêng lẻ)

Bash
snap refresh tên_phần_mềm
# Ví dụ:
snap refresh spotify

Nếu muốn update tất cả snap:

Bash
sudo snap refresh

c. Với Flatpak

Bash
flatpak update tên_phần_mềm
# Update tất cả:
flatpak update

Tóm tắt nhanh các lệnh hay dùng nhất

Mục đíchLệnh
Cập nhật danh sách góisudo apt update
Nâng cấp toàn bộ hệ thốngsudo apt dist-upgrade
Gỡ phần mềm (apt)sudo apt purge tên_gói && sudo apt autoremove
Gỡ phần mềm (snap)snap remove tên_gói
Cập nhật 1 phần mềm (snap)snap refresh tên_gói
Cập nhật 1 phần mềm (apt)sudo apt install tên_gói
Nâng cấp lên bản Ubuntu mớisudo do-release-upgrade

Nếu bạn cần ví dụ cụ thể với phần mềm nào (Chrome, Docker, VS Code, v.v.) thì cứ nói nhé! 

Một số lệnh debug với docker

anhpt@utaserver:~/n8n_cloudflare$ curl -I http://127.0.0.1:5680/

HTTP/1.1 200 OK

Accept-Ranges: bytes

Cache-Control: public, max-age=86400

Last-Modified: Mon, 24 Nov 2025 17:33:58 GMT

ETag: W/"3500-19ab6edf2bf"

Content-Type: text/html; charset=utf-8

Content-Length: 13568

Vary: Accept-Encoding

Date: Mon, 24 Nov 2025 17:37:48 GMT

Connection: keep-alive

Keep-Alive: timeout=5

Hiển thị các container đang chạy:

 docker ps

Lệnh kiểm tra log của 1 container ID:

  docker logs --tail 30 efafa366b545

  docker logs -f n8n_main_ngrok 

Lệnh khởi động lại:

docker-compose down --remove-orphans

docker-compose up -d


2. Cách chạy scale (chọn 1 trong 2 cách)

Cách A – Dùng docker compose (khuyên dùng, đơn giản nhất)

Bash
# Scale worker lên 8 bản (ví dụ)
docker-compose up -d --scale n8n-worker=8

# Hoặc scale xuống 4
docker-compose up -d --scale n8n-worker=4


Docker Compose có thực sự load được file .env không? Chạy lệnh này để kiểm tra biến môi trường thực tế bên trong container:

Bash
docker-compose config | grep -A 10 -B 10 NGROK_AUTHTOKEN

Kiểm tra lần cuối

Bash
docker logs $(docker ps -q --filter "name=ngrok") --tail 20

→ Nếu thấy dòng session started + URL https://xxxx.ngrok-free.app → xong! → Nếu vẫn thấy ${NGROK_AUTHTOKEN} → bạn còn 1 service ngrok cũ đang chạy ngoài compose → kill nó:

Bash
docker stop $(docker ps -q --filter "ancestor=ngrok/ngrok") 2>/dev/null || true
docker rm $(docker ps -aq --filter "ancestor=ngrok/ngrok") 2>/dev/null || true
docker-compose up -d

Hiện tại bạn chưa thấy 2 thư mục dữ liệu (postgres_data_ngrok và n8n_data_ngrok) vì chúng đang được Docker tạo dưới dạng Docker named volume chứ không phải thư mục thật trong ~/n8n_ngrok.

Kiểm tra đúng vị trí thực tế dữ liệu đang nằm ở đâu

Chạy 2 lệnh này:

Bash
# 1. Xem tất cả volume đang tồn tại
docker volume ls

# 2. Xem chi tiết 2 volume chính của bạn nằm ở đâu trên host
docker volume inspect n8n_ngrok_postgres_data_ngrok
docker volume inspect n8n_ngrok_n8n_data_ngrok

# 1. Chạy một sshd chuẩn trong Docker để test

docker run --rm -d --name test-ssh-real -p 2223:22 lscr.io/linuxserver/openssh-server:latest


# 2. Tạo tunnel ngrok mới cho port 2223

curl -s http://127.0.0.1:4041/api/tunnels -X POST -H "Content-Type: application/json" -d '{

  "name": "test-ssh-real",

  "proto": "tcp",

  "addr": "localhost:2223"

}'


# 3. Lấy port mới

curl -s http://127.0.0.1:4041/api/tunnels | grep -A5 test-ssh-real


# Xem danh sách tunnel hiện có

curl -s http://127.0.0.1:4041/api/tunnels | jq -r '.tunnels[] | .name + " → " + .public_url'


# Xóa cái tunnel test-tcp cũ đi (giải phóng 1 slot)

curl -s http://127.0.0.1:4041/api/tunnels/test-tcp -X DELETE


# Hoặc xóa bất kỳ tunnel nào bạn không cần nữa, ví dụ:

# curl -s http://127.0.0.1:4041/api/tunnels/[tên_tunnel_cũ] -X DELETE


# 1. Xóa tunnel test-ssh-real cũ đi để dọn sạch

curl -s http://127.0.0.1:4041/api/tunnels/test-ssh-real -X DELETE


# 2. Chạy một sshd chuẩn trong Docker, dùng port 2223

docker run --rm -d --name real-ssh-test \

  -e PUID=1000 -e PGID=1000 \

  -e TZ=Asia/Ho_Chi_Minh \

  -e PASSWORD_ACCESS=true \

  -e USER_NAME=abc \

  -e USER_PASSWORD=password123 \

  -p 2223:2222 \

  lscr.io/linuxserver/openssh-server:latest


# 3. Tạo lại tunnel sạch cho port 2223

curl -s http://127.0.0.1:4041/api/tunnels -X POST -H "Content-Type: application/json" -d '{

  "name": "test-ssh-real",

  "proto": "tcp",

  "addr": "localhost:2223"

}'


# 4. Lấy public_url mới ngay lập tức

curl -s http://127.0.0.1:4041/api/tunnels | grep -A3 -B3 test-ssh-real


ssh -p 10335 anhpt@0.tcp.ap.ngrok.io


curl -s http://127.0.0.1:4041/api/tunnels/[tên_tunnel_ssh_cũ] -X DELETE


curl -s http://127.0.0.1:4041/api/tunnels/ssh -X DELETE


curl -s http://127.0.0.1:4041/api/tunnels -X POST -H "Content-Type: application/json" -d '{

  "name": "ssh",

  "proto": "tcp",

  "addr": "localhost:22"

}'


Cách fix nhanh nhất (chỉ 1 giây)

Xóa hoặc comment dòng container_name trong service n8n-worker (và nếu có thì cả n8n-main cũng nên xóa luôn cho sạch):

YAML
n8n-worker:
    image: n8nio/n8n:${N8N_IMAGE_TAG}
    # container_name: ${N8N_WORKER_CONTAINER_NAME}   ← XÓA HOẶC COMMENT DÒNG NÀY
    restart: unless-stopped
    depends_on:
      - postgres
      - redis
    environment:
      - N8N_WORKER_CONCURRENCY=8
      # ... các biến khác giữ nguyên
    command: worker
    volumes:
      - ./n8n_data_ngrok:/home/node/.n8n
    user: "${N8N_USER_UID}:${N8N_USER_GID}"

(Thêm nữa: nếu service n8n-main cũng có container_name: thì cũng nên comment luôn để sau này dễ scale thêm main nếu cần)

Sau khi sửa xong → chạy lại 3 lệnh này:

Bash
# 1. Dừng và xóa container worker cũ (bị lỗi tên)
docker compose down n8n-worker

# 2. Hoặc nếu muốn dọn sạch hoàn toàn
docker compose rm -f n8n-worker

# 3. Chạy lại với scale
docker compose up -d --scale n8n-worker=4

→ Lần này sẽ tạo ra đẹp đẽ:

text
n8n-worker-1
n8n-worker-2
n8n-worker-3
n8n-worker-4

Dưới đây là các lệnh phổ biến nhất để kiểm tra nhanh tình trạng ổ cứng, dung lượng và các mount point trên Ubuntu/Linux – anh chỉ cần copy-paste từng lệnh là ra kết quả ngay:

1. Xem dung lượng tổng quan (đẹp nhất, dễ đọc nhất)

Bash
df -hT

→ Hiển thị % sử dụng, dung lượng trống, loại filesystem (ext4, tmpfs, vfat, …)

2. Xem chi tiết từng partition + mount point

Bash
lsblk -f

→ Cực đẹp, thấy ngay cái nào mount ở đâu, loại filesystem, UUID

3. Xem dung lượng theo thư mục (thư mục nào đang ăn nhiều nhất)

Bash
# Tổng quan top 10 thư mục nặng nhất
du -h / --max-depth=1 2>/dev/null | sort -hr | head -10

# Hoặc chi tiết hơn (bao gồm cả thư mục con)
du -h --max-depth=2 / | sort -hr | head -20

4. Xem thông tin chi tiết ổ cứng (SSD/HDD, model, serial, health)

Bash
# Xem tất cả ổ vật lý
sudo lsblk -d -o NAME,SIZE,ROTA,TYPE,MODEL

# Xem SMART health (chỉ SSD/HDD hỗ trợ)
sudo smartctl -a /dev/sda   # thay sda bằng ổ chính của anh (xem từ lsblk)

5. Xem I/O realtime (ổ đang đọc/ghi bao nhiêu)

Bash
# Cài nếu chưa có
sudo apt install iotop -y

# Chạy (cần root)
sudo iotop

6. Xem inode usage (khi df -h còn trống nhưng báo full)

Bash
df -i

7. One-liner siêu nhanh (thường dùng nhất)

Bash
df -hT | grep -vE "tmpfs|loop|overlay"

→ Chỉ hiện các ổ thật, bỏ tmpfs, loop, overlay của Docker

8. Kiểm tra nhanh tình trạng mount có lỗi không

Bash
cat /proc/mounts | grep -v "tmpfs\|cgroup\|devpts"
# hoặc
mount | grep ^/dev/

Ví dụ thực tế anh có thể chạy ngay:

Bash
# Chạy 3 lệnh này là biết hết tình hình ổ cứng
echo "=== DUNG LƯỢNG ===" && df -hT | grep -vE "tmpfs|loop"
echo "=== CÂY MOUNT ===" && lsblk -f
echo "=== THƯ MỤC NẶNG NHẤT ===" && du -h --max-depth=1 / 2>/dev/null | sort -hr | head -10


Dưới đây là combo lệnh nhanh nhất để kiểm tra toàn diện tình trạng server (CPU, RAM, ổ cứng, I/O, nhiệt độ…) – anh chỉ cần chạy lần lượt hoặc copy cả khối là ra hết thông tin trong 5 giây:

# 1. Tổng quan CPU + RAM + Load + Temp (nếu có sensor)
echo "=== CPU + RAM + TEMP ===" && \
lscpu | grep -E "Model name|CPU\(s)|Thread|Socket" && \
echo "Load average: $(cat /proc/loadavg | awk '{print $1,$2,$3}')" && \
free -h | grep -E "Mem|Swap" && \
(sensors 2>/dev/null || echo "No sensors / cài lm-sensors để xem nhiệt độ")

# 2. Dung lượng ổ cứng (chỉ hiện ổ thật, bỏ tmpfs/overlay)
echo "=== Ổ CỨNG ===" && \
df -hT -x tmpfs -x devtmpfs -x overlay | sort -k6nr

# 3. Inode còn trống (tránh trường hợp full inode)
echo "=== INODE ===" && \
df -hi -x tmpfs -x devtmpfs

# 4. Top 10 thư mục ăn nhiều dung lượng nhất
echo "=== THƯ MỤC NẶNG NHẤT ===" && \
du -h --max-depth=1 /* 2>/dev/null | sort -hr | head -10

# 5. I/O realtime (ai đang đọc/ghi ổ cứng nhiều nhất)
echo "=== I/O REALTIME (top 10) ===" && \
iotop -b -n2 -o | head -20

# 6. Docker đang ăn bao nhiêu ổ cứng
echo "=== DOCKER USAGE ===" && \
docker system df -v

Nếu muốn 1 lệnh duy nhất (copy-paste 1 lần là ra hết)

Bash
echo -e "\n=== SERVER STATUS $(date) ===\nCPU: $(lscpu | grep 'Model name' | awk -F: '{print $2}' | xargs) | $(nproc) cores | Load: $(cat /proc/loadavg)\nRAM: $(free -h | awk '/Mem/{print $3"/"$2" used"}') | Swap: $(free -h | awk '/Swap/{print $3"/"$2}')\n$(df -hT -x tmpfs -x devtmpfs | grep -v overlay | sort -k6nr | head -5)\nDocker: $(docker system df | awk 'NR<=2')\nTop folders:\n$(du -h --max-depth=1 /{*,.[^.]*} 2>/dev/null | sort -hr | head -8)\n" && sensors 2>/dev/null || true


Bonus: Dọn dẹp nhẹ để còn đẹp hơn (không bắt buộc)

Bash
# Dọn snap cũ (giải phóng ~20–25 GB nếu anh không dùng snap nữa)
sudo snap list --all | awk '/disabled/{print $1" "$3}' | while read name rev; do sudo snap remove "$name" --revision="$rev"; done

# Dọn docker không dùng (nếu muốn)
docker system prune -a --volumes



4 cách nhanh nhất để biết chính xác thư mục n8n_ngrok (hoặc bất kỳ thư mục nào) đang nằm trên ổ cứng/phân vùng nào – anh chỉ cần chạy 1 trong 4 lệnh sau là ra ngay:

Cách 1 – Nhanh nhất (99% dùng cái này)

Bash
df -h ./n8n_ngrok
# hoặc đứng trong thư mục rồi chạy:
df -h .

→ Ra ngay phân vùng và % đã dùng.

Ví dụ anh đang ở ~/n8n_ngrok thì chạy:

Bash
anhpt@utaserver:~/n8n_ngrok$ df -h .
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv   98G   38G   56G  41% /

→ Thư mục n8n_ngrok đang nằm trên phân vùng / (ổ chính).

Cách 2 – Xem cả cây mount + dung lượng (đẹp như cây gia phả)

Bash
lsblk -f

→ Sẽ thấy rõ thư mục hiện tại nằm dưới mount point nào.

Cách 3 – Xem chính xác block device (ổ vật lý thật)

Bash
df -h ~/n8n_ngrok | tail -1 | awk '{print $1}'
# → ra: /dev/mapper/ubuntu--vg-ubuntu--lv  hoặc /dev/sda3, /dev/nvme0n1p2, v.v.

Hoặc chi tiết hơn:

Bash
findmnt ~/n8n_ngrok

Cách 4 – One-liner biết luôn nằm trên ổ SSD hay HDD

Bash
echo "Thư mục n8n_ngrok đang nằm trên:" && \
df -h ~/n8n_ngrok | tail -1 | awk '{print $1 " → " $6 " (" $5 " đã dùng)"}' && \
lsblk -d -o NAME,ROTA,MODEL $(df ~/n8n_ngrok | tail -1 | awk '{print $1}' | cut -d'/' -f3) | tail -1 | awk '{if($2==1) print "→ HDD"; else print "→ SSD/NVMe"}'

Ví dụ kết quả anh sẽ thấy:

text
Thư mục n8n_ngrok đang nằm trên:
/dev/mapper/ubuntu--vg-ubuntu--lv → / (41% đã dùng)
nvme0n1          0 → SSD/NVMe

→ Tóm lại: thư mục n8n_ngrok của anh đang nằm trên ổ chính /, cùng phân vùng với hệ điều hành, còn dư 56 GB → cực kỳ thoải mái để chạy n8n, Docker, log, database, v.v.

Không cần lo gì cả, cứ scale worker thoải mái!


Dưới đây là combo lệnh nhanh + đẹp để xem realtime tài nguyên CPU, RAM, Disk I/O, Network mà các container Docker đang ăn – anh chỉ cần copy-paste từng lệnh là ra ngay:

1. Cách nhanh nhất, đẹp nhất (khuyên dùng 99%)

Bash
docker stats

→ Realtime, cập nhật mỗi giây, thấy ngay %CPU, RAM, Net I/O, Block I/O Nhấn Ctrl+C để thoát.

2. Xem 1 lần duy nhất (không loop, dễ paste vào chat)

Bash
docker stats --no-stream

3. Chỉ hiện các container đang chạy + sort theo CPU/RAM (rất tiện)

Bash
# Sort theo CPU cao nhất
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}" | sort -k2 -hr

# Sort theo RAM cao nhất
docker stats --no-stream --format "table {{.Name}}\t{{.MemPerc}}\t{{.MemUsage}}\t{{.CPUPerc}}" | sort -k2 -hr

4. Xem chi tiết tài nguyên từng container riêng (ví dụ n8n-worker-1)

Bash
docker stats n8n-worker-1
# hoặc nhiều cái cùng lúc
docker stats n8n-main n8n-worker-1 n8n-worker-2 redis postgres

5. Xem tổng tài nguyên Docker đang ăn (image, container, volume, build cache)

Bash
docker system df -v

6. Top realtime bên trong container (giống htop, xem process nào đang ăn nhiều)

Bash
# Ví dụ xem worker nào đang ăn CPU nhất
docker top n8n-worker-3

# Hoặc vào thẳng container xem htop (nếu có cài htop trong image)
docker exec -it n8n-worker-3 htop

7. One-liner siêu gọn để theo dõi khi scale nhiều worker

Bash
watch -n 2 'docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" | sort -k2 -hr'

→ Cập nhật mỗi 2 giây, tự sort theo CPU cao nhất.

Ví dụ thực tế anh chạy ngay (để xem n8n của anh đang ăn bao nhiêu)

Bash
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" | grep -E "n8n|redis" | sort -k2 -hr

Chạy xong paste kết quả ra đây là mình đọc giúp luôn: biết ngay worker nào đang "cày" nhiều nhất, có nên tăng N8N_WORKER_CONCURRENCY nữa không, hay cần thêm worker.


3. Test kết nối trực tiếp từ bên trong Docker network (chuẩn nhất)

Bash
# Test n8n1
docker exec n8n_cloudflare_cloudflared_1 curl -I http:// TMS://n8n1-main:5678

# Test n8n2  
docker exec n8n_cloudflare_cloudflared_1 curl -I http://n8n2-main:5680

Xác định xem cổng active hay không
curl -I http://127.0.0.1:5680/

Xem log
docker logs -f n8n_cloudflare_cloudflared_1 --tail 50