Cách chạy chương trình định kỳ bằng lệnh watch trên Linux

Cách chạy chương trình định kỳ bằng lệnh watch trên Linux

Chia sẻ kiến thức 08/10/2023

Nếu bạn phải chạy đi chạy lại cùng một lệnh trên Linux, lệnh watch có thể giúp bạn tiết kiệm nhiều thời gian và công sức. 

 

Đôi khi, bạn cần chạy liên tục một lệnh hoặc chương trình để giám sát các khía cạnh khác nhau của hệ thống, ví dụ như các tiến trình đang diễn ra, mức sử dụng dung lượng ổ đĩa hoặc thông tin đăng nhập của người dùng. Lệnh watch trên Linux cho phép bạn tự động hóa các tác vụ này mà không cần phải chạy đi chạy lại theo cách thủ công.
 
VIDEO MUO TRONG NGÀY

 
 
 
 
Đóng
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 

Sử dụng lệnh này, bạn có thể giám sát các hoạt động của hệ thống trong thời gian thực như thông tin đăng nhập của người dùng, trạng thái mạng, mức sử dụng bộ nhớ và CPU, dung lượng ổ đĩa, v.v. Hãy xem cách sử dụng lệnh watch trong Linux.

Lệnh watch là gì?

Lệnh watch trên Linux chạy lặp đi lặp lại một lệnh hoặc một chương trình được chỉ định, đều đặn và hiển thị đầu ra của lệnh đó trong terminal. Điều này cho phép bạn quan sát những thay đổi ở đầu ra trong thời gian thực. Nó làm mới đầu ra ở mỗi khoảng thời gian, ghi đè đầu ra trước đó của lệnh. Theo mặc định, lệnh lặp lại hai giây một lần và tiếp tục cho đến khi bạn dừng lệnh theo cách thủ công bằng Ctrl + C.

Xem cú pháp lệnh

Cú pháp của lệnh watch là:

watch options <command>

Có nhiều tùy chọn dòng lệnh khác nhau có sẵn để sử dụng với lệnh watch. Nếu bạn chạy lệnh watch mà không có bất kỳ tùy chọn nào, nó sẽ chạy lệnh được chỉ định sau mỗi hai giây. Ví dụ: phần sau đây sẽ cho bạn thấy đầu ra của lệnh ls:

watch ls -l ~/

Đầu ra sẽ hiển thị cho bạn những thay đổi trong danh sách thư mục nếu một tệp được tạo, xóa hoặc thay đổi kích thước, đồng thời làm mới đầu ra hai giây một lần.

 
 

Chạy lệnh watch cứ sau X giây

Bạn có thể thay đổi khoảng thời gian cập nhật của lệnh watch. Điều này có nghĩa là bạn có thể yêu cầu lệnh watch đợi x giây trước khi lặp lại lệnh. Để thay đổi khoảng thời gian cập nhật, hãy sử dụng tùy chọn -n theo sau là khoảng thời gian tính bằng giây.

watch -n 

Chẳng hạn, để chạy lệnh sau mỗi 5 giây, hãy chạy:

watch -n 5 <command>

Đánh dấu những thay đổi giữa các bản cập nhật

Lệnh watch ghi đè đầu ra của nó mỗi lần làm mới. Sử dụng tùy chọn -d, bạn cũng có thể đánh dấu những thay đổi giữa đầu ra trước đó và đầu ra được cập nhật.

watch -d

Ẩn tiêu đề trong đầu ra của lệnh watch

Theo mặc định, lệnh watch hiển thị tiêu đề ở đầu mỗi đầu ra chứa khoảng thời gian cập nhật, tên lệnh và ngày giờ hiện tại của hệ thống. Bạn có thể loại bỏ tiêu đề khỏi đầu ra bằng tùy chọn -t :

watch -t <command>

Phát tiếng bíp khi có lỗi

Khi một tiến trình Linux chạy xong, nó sẽ trả về code thoát. Theo quy ước, giá trị là 0 nếu thành công và khác 0 để biểu thị lỗi. Tùy chọn -b của lệnh watch sẽ phát ra âm thanh bíp nếu lệnh trả về kết quả thoát khác 0.

 

Giả sử bạn muốn theo dõi sshd.service và nhận thông báo khi dịch vụ dừng; bạn sẽ sử dụng:

watch -b sudo systemctl status sshd.service

Lệnh này sẽ phát ra tiếng bíp khi dịch vụ dừng. Tiếng bíp sẽ dừng khi dịch vụ tiếp tục. Để thử điều này, hãy mở một cửa sổ terminal khác và dừng dịch vụ. Điều này sẽ phát ra tiếng bíp liên tục cho đến khi bạn bắt đầu lại dịch vụ. Tuy nhiên, để sử dụng tính năng này, bạn phải cài đặt gói beep trên hệ thống của mình.

Thoát lệnh watch khi thay đổi đầu ra

Bạn cũng có thể yêu cầu lệnh watch ngừng chạy và thoát khi đầu ra của lệnh thay đổi. Bạn có thể thực hiện việc này bằng tùy chọn -g. Tùy chọn này rất hữu ích trong các tình huống khi bạn đang chờ đợi những thay đổi nhất định ở đầu ra.

Khi đầu ra thay đổi, lệnh watch sẽ dừng. Bạn có thể kết hợp cách sử dụng này với lệnh echo để hiển thị thông báo trên màn hình.

Ví dụ: hãy xem xét tình huống trong đó bạn đang đợi một tệp đến thư mục của mình. Lệnh sau sẽ theo dõi thư mục để tìm tệp được chỉ định. Ngay khi nó đến, lệnh watch sẽ ngừng chạy và thông báo file arrived (File đã đến) sẽ hiển thị trên terminal.

 
watch -g "ls -l | grep filename" && echo "file arrived"

Một ví dụ hữu ích khác là thông báo khi một người dùng cụ thể đăng nhập vào hệ thống của bạn:

watch -g "who | grep username" && echo "username logged in"

Lệnh này sẽ giám sát đầu ra của lệnh who liệt kê những người dùng đã đăng nhập. Khi người dùng đăng nhập, lệnh watch sẽ dừng và hiển thị thông báo trên terminal.

Tương tự, bạn có thể yêu cầu lệnh watch dừng dịch vụ khi một số thay đổi được thực hiện trong một tệp. Hãy nhớ rằng khi sử dụng chuỗi lệnh theo đường dẫn, bạn sẽ cần phải đặt toàn bộ lệnh trong dấu ngoặc kép.

Xem các hoạt động trong hệ thống Linux của bạn

Nếu bạn cần thực hiện cùng một quy trình nhiều lần, hãy cân nhắc sử dụng lệnh watch để tự động hóa quy trình đó. Nó giúp bạn không phải thường xuyên gõ lệnh để xem những gì đã thay đổi.

Bạn cũng có thể sử dụng lệnh watch với các lệnh Linux khác để giám sát tài nguyên và hoạt động của hệ thống cũng như theo dõi các thay đổi trong tệp hoặc thư mục.

Tìm hiểu ngay chương trình học công nghệ thông tin trực tuyến tại FUNiX ở đây:

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/tag/commands-manage-wireless-networks-windows/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, phường Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        

Cơ quan chủ quản: Công ty Cổ phần Giáo dục Trực tuyến FUNiX
MST: 0108171240 do Sở kế hoạch và Đầu tư thành phố Hà Nội cấp ngày 27 tháng 02 năm 2018
Địa chỉ:
Văn phòng Hà Nội: Tầng 4, Tòa nhà 25T2, Đường Nguyễn Thị Thập, phường Yên Hòa, Hà Nội.
Văn phòng TP.HCM: Lầu 8, Tòa nhà Giày Việt Plaza 180-182 Lý Chính Thắng, phường Nhiêu Lộc, TP. Hồ Chí Minh.
Hotline: 078 231 3602 – Email: info@funix.edu.vn

yêu cầu gọi lại