Lệnh watch Linux là một công cụ dòng lệnh mạnh mẽ giúp bạn tự động thực thi lặp lại một lệnh bất kỳ theo chu kỳ. Thay vì phải gõ lại lệnh liên tục để xem sự thay đổi, watch sẽ cập nhật kết quả ngay trên màn hình của bạn. Bài viết này sẽ hướng dẫn bạn chi tiết cú pháp, các tùy chọn quan trọng và những ví dụ thực tế để bạn làm chủ công cụ này.
Những điểm chính
- Khái niệm lệnh watch: Hiểu rõ lệnh watch là gì và cách watch giúp tự động hóa việc giám sát các thay đổi hệ thống theo thời gian thực.
- Các tùy chọn quan trọng: Nắm vững các tùy chọn như -n (thay đổi tần suất), -d (tô sáng thay đổi), -c (giữ màu sắc) để tùy chỉnh và nâng cao hiệu quả giám sát.
- Kịch bản ứng dụng thực tế: Thấy được các ví dụ thực tế để áp dụng watch vào việc giám sát kết nối mạng, file log, tải hệ thống,…
- Giải đáp thắc mắc thường gặp về cách kết hợp lệnh, tự động kết thúc và giảm tải cho hệ thống khi sử dụng watch.
Lệnh watch Linux là gì?
Lệnh watch trong Linux là một tiện ích dòng lệnh cho phép bạn thực thi một lệnh hoặc chương trình lặp đi lặp lại theo một khoảng thời gian nhất định và hiển thị kết quả cập nhật theo thời gian thực trên terminal. Mục đích chính của watch là cho phép giám sát theo thời gian thực các kết quả đầu ra thường xuyên thay đổi, chẳng hạn như tài nguyên hệ thống, các tệp nhật ký (log), hoặc trạng thái tiến trình. Theo mặc định, watch sẽ làm mới kết quả sau mỗi 2 giây, cung cấp một cái nhìn liên tục được cập nhật cho đến khi người dùng dừng lại.

Cú pháp cơ bản của lệnh watch:
watch [tùy_chọn] [lệnh_cần_thực_thi]Trong đó:
[tùy_chọn]: Các cờ để thay đổi hành vi của watch, chẳng hạn như khoảng thời gian làm mới.[lệnh_cần_thực_thi]: Lệnh bạn muốn watch chạy lặp đi lặp lại. Nếu lệnh chứa các ký tự đặc biệt như chuyển hướng (>), dấu&&. hoặc đường ống (|), bạn nên đặt lệnh trong dấu nháy đơn ‘ ‘.
Các tùy chọn watch Linux phổ biến nhất
Bảng dưới đây liệt kê các tùy chọn phổ biến và hữu ích nhất của lệnh watch.
| Tùy chọn | Chức năng | Ví dụ |
|---|---|---|
-n <giây> hoặc --interval=<giây> | Thiết lập khoảng thời gian cập nhật giữa các lần chạy lệnh (đơn vị: giây). Mặc định là 2 giây. | watch -n 5 date (Chạy lệnh date mỗi 5 giây). |
-d hoặc --differences | Đánh dấu (highlight) sự khác biệt giữa lần cập nhật hiện tại và lần cập nhật trước. | watch -d free -m (Tô sáng các thay đổi trong việc sử dụng bộ nhớ). |
-t hoặc --no-title | Ẩn tiêu đề (bao gồm thông tin về khoảng thời gian, lệnh và thời gian hiện tại) ở đầu ra. | watch -t date (Chỉ hiển thị kết quả của lệnh date). |
-b hoặc --beep | Phát ra tiếng beep khi lệnh trả về mã thoát khác 0 (tức là có lỗi xảy ra). | watch -b 'grep "ERROR" /var/log/app.log' (Bíp nếu tìm thấy lỗi). |
-p hoặc --precise | Cố gắng chạy lệnh ở thời điểm chính xác nhất có thể so với khoảng thời gian đã chỉ định, tránh sự chậm trễ tích lũy. | watch -n 1 -p "date" (Đảm bảo lệnh chạy gần chính xác 1 giây một lần). |
-e hoặc --errexit | Thoát khỏi watch ngay lập tức nếu lệnh trả về mã thoát khác 0. | watch -e cat /etc/passwd (Nếu file /etc/passwd không tồn tại, watch sẽ dừng lại). |
-g hoặc --chgexit | Thoát khỏi watch khi đầu ra của lệnh thay đổi. | watch -g 'ls -l' (Thoát ngay khi có file mới được tạo hoặc thay đổi). |
-c hoặc --color | Hiển thị đúng các mã màu và kiểu ANSI trong kết quả đầu ra. | watch -c 'ls -l --color=always' (Hiển thị kết quả ls có màu). |
-x hoặc --exec | Thực thi lệnh bằng exec, không thông qua sh -c. | watch -x 'ps aux' (Thực thi trực tiếp lệnh ps aux). |
Ví dụ sử dụng watch thực tế
Dưới đây là một số cách watch được sử dụng trong thực tế để giám sát hệ thống:
Giám sát tài nguyên hệ thống (RAM)
Lệnh này hiển thị dung lượng RAM trống và đã sử dụng, cập nhật mỗi giây, giúp bạn nhanh chóng phát hiện các vấn đề về bộ nhớ:
watch -n 1 free -m
Theo dõi sự thay đổi của file log
Lệnh dưới đây hiển thị 10 dòng cuối cùng của file log Nginx. Tùy chọn -d sẽ tô sáng các dòng log mới khi chúng xuất hiện:
watch -d -n 1 'tail -n 10 /var/log/nginx/access.log'Quan sát tải của hệ thống (Load Averages)
Bạn chạy lệnh sau để xem tải trung bình của hệ thống (load average) thay đổi theo thời gian:
watch uptime
Giám sát số lượng kết nối mạng
Lệnh sau giúp đếm và hiển thị số lượng kết nối đang ở trạng thái ESTABLISHED, cập nhật mỗi giây, rất hữu ích để theo dõi lưu lượng truy cập vào máy chủ:
watch -n 1 'ss -an | grep ESTAB | wc -l'
Theo dõi các tiến trình của một người dùng cụ thể
Bạn chạy lệnh sau để liệt kê tất cả các tiến trình đang chạy bởi người dùng (ví dụ: nginx) và cập nhật liên tục.
watch 'ps -U www -f'
Giám sát nhiệt độ CPU
Nếu hệ thống của bạn có cài đặt sensors, lệnh này sẽ theo dõi nhiệt độ CPU và tô sáng sự thay đổi.
watch -n 1 -d sensorsCâu hỏi thường gặp
Có thể kết hợp lệnh watch với grep để lọc tiến trình theo từ khóa không?
Hoàn toàn được, ví dụ: watch "ps aux | grep nginx" sẽ chỉ hiển thị các tiến trình liên quan đến nginx theo thời gian thực
Làm thế nào để lệnh watch tự động kết thúc khi có sự thay đổi kết quả?
Bạn sử dụng tùy chọn -g, ví dụ: watch -g "ls /tmp" sẽ tự động thoát nếu có thêm hoặc mất file trong /tmp.
Làm thế nào để giảm tải cho hệ thống khi dùng watch tần suất cao?
Bạn giảm tần suất lặp lại bằng tham số -n, ví dụ: watch -n 10 'ps aux' sẽ chỉ cập nhật mỗi 10 giây, giảm tiêu tốn tài nguyên đáng kể.
Muốn làm nổi bật phần thay đổi giữa các lần cập nhật kết quả, phải làm sao?
Bạn sử dụng thêm tùy chọn -d. Ví dụ: watch -d 'ps aux' sẽ giúp bạn thấy rõ tiến trình nào thay đổi trạng thái hoặc tài nguyên.
Cách dừng lệnh watch như thế nào?
Để dừng quá trình giám sát của watch và quay trở lại dòng lệnh, bạn chỉ cần nhấn tổ hợp phím Ctrl + C.
Tóm lại, bài viết đã cung cấp cái nhìn chi tiết về lệnh watch Linux và hướng dẫn cụ thể cách bạn có thể sử dụng lệnh này để giám sát đầu ra của bất kỳ lệnh nào theo thời gian thực. Đây là công cụ hữu ích giúp bạn theo dõi trạng thái hệ thống, tài nguyên hoặc các quá trình đang chạy mà không cần lặp đi lặp lại lệnh theo cách thủ công.




