Nó có thể là "xem" không phải là những gì bạn muốn. Bạn có thể muốn yêu cầu giúp đỡ trong việc giải quyết vấn đề của bạn, không phải trong việc thực hiện giải pháp của bạn! :)
Nếu mục tiêu thực sự của bạn là kích hoạt các hành động dựa trên những gì nhìn thấy từ tail
lệnh , thì bạn có thể thực hiện điều đó như một phần của chính đuôi. Thay vì chạy "định kỳ", đó là những gì watch
bạn có thể chạy mã theo yêu cầu .
#!/bin/sh
tail -F /var/log/somelogfile | while read line; do
if echo "$line" | grep -q '[Ss]ome.regex'; then
# do your stuff
fi
done
Lưu ý rằng tail -F
sẽ tiếp tục theo dõi một tệp nhật ký ngay cả khi nó được xoay vòng bởi newsyslog hoặc logrotate. Bạn muốn sử dụng điều này thay vì chữ thường tail -f
. Kiểm tra man tail
để biết chi tiết.
Điều đó nói rằng, nếu bạn thực sự muốn chạy một lệnh theo định kỳ, các câu trả lời khác được cung cấp có thể được chuyển thành một tập lệnh shell ngắn:
#!/bin/sh
if [ -z "$2" ]; then
echo "Usage: $0 SECONDS COMMAND" >&2
exit 1
fi
SECONDS=$1
shift 1
while sleep $SECONDS; do
clear
$*
done