Tôi biết có một lệnh trên Unix mà tôi có thể sử dụng để theo dõi một tệp và xem các thay đổi đang được ghi vào nó. Điều này khá hữu ích đặc biệt là để kiểm tra các tệp nhật ký.
Bạn có biết nó được gọi là gì không?
Tôi biết có một lệnh trên Unix mà tôi có thể sử dụng để theo dõi một tệp và xem các thay đổi đang được ghi vào nó. Điều này khá hữu ích đặc biệt là để kiểm tra các tệp nhật ký.
Bạn có biết nó được gọi là gì không?
Câu trả lời:
tail -F
sẽ theo tên tệp thay vì các đối tượng tệp, đặc biệt hữu ích trong trường hợp xoay tệp nhật ký.
tailf
hiện không dùng nữa và tail -f
an toàn. (xác nhận điều này trên hệ thống của bạn với man tailf
.) Xem tài liệu: man7.org/linux/man-pages/man1/tailf.1.html
Bạn có thể có nghĩa là đuôi, theo câu trả lời của Jon Skeet.
Một cái hữu ích khác là đồng hồ ; nó cho phép bạn chạy một lệnh định kỳ và xem toàn màn hình đầu ra. Ví dụ:
xem -n 10 -d ls -l / var / adm / tin nhắn
Sẽ chạy lệnh ls -l /var/adm/messages
sau mỗi 10 giây và làm nổi bật sự khác biệt về đầu ra giữa các lần chạy tiếp theo. (Hữu ích để xem tốc độ phát triển của một logfile chẳng hạn).
inotifywait
từ inotify-tools rất hữu ích nếu bạn muốn chạy lệnh mỗi khi tệp (hoặc bất kỳ tệp nào trong thư mục) thay đổi. Ví dụ:
inotifywait -r -m -e modify /var/log |
while read path _ file; do
echo $path$file modified
done
path
không phải là sự lựa chọn lớn nhất cho một tên biến. Trên zsh
, có vẻ như các vars môi trường không phân biệt chữ hoa chữ thường. Đối với tôi, cài đặt path
nguyên nhân PATH
cũng được thiết lập và điều đó về cơ bản có nghĩa là không có gì sẽ thực thi cho đến khi bạn khắc phục điều đó. Bật bash
, cài đặt path
không có hiệu lực trên PATH
.
Tôi thích sử dụng hơn less +FG
1tail -f
vì tôi thấy mình cần tìm kiếm tệp nhật ký cho một lỗi hoặc ID cụ thể. Nếu tôi cần tìm kiếm thứ gì đó, tôi gõ ^C
để dừng theo dõi tệp và ?
bắt đầu tìm kiếm ngược.
Các ràng buộc chính là khá nhiều như trong vi
. Bất kỳ lệnh nào cũng có thể được khởi tạo khi khởi động bằng +
tùy chọn:
+cmd Causes the specified cmd to be executed each time a new file is
examined. For example, +G causes less to initially display each
file starting at the end rather than the beginning.
Đối với các bản ghi thực sự dài, tôi thấy thuận tiện khi sử dụng -n
tùy chọn tắt đánh số dòng. Từ trang hướng dẫn:
-n or --line-numbers
Suppresses line numbers. The default (to use line numbers) may
cause less to run more slowly in some cases, especially with a
very large input file. Suppressing line numbers with the -n
option will avoid this problem. Using line numbers means: the
line number will be displayed in the verbose prompt and in the =
command, and the v command will pass the current line number to
the editor (see also the discussion of LESSEDIT in PROMPTS
below).
1. Hat-tip to rgmarcha vì đã chỉ ra điều này trong các bình luận.
alias
tùy chọn mong muốn của bạn, vì vậy bạn không cần phải gõ chúng ra mỗi lần.
Tôi đang chỉnh sửa tệp LaTeX và cũng muốn theo dõi nó để biết những thay đổi ở đâu đó ở giữa. Tôi đã đánh dấu kịch bản shell nhỏ sau đây tỏ ra hữu ích với tôi. Tôi hy vọng nó cũng sẽ có ích cho người khác.
#!/bin/bash
FILE="$1"
CMD="$2"
LAST=`ls -l "$FILE"`
while true; do
sleep 1
NEW=`ls -l "$FILE"`
if [ "$NEW" != "$LAST" ]; then
"$CMD" "$FILE"
LAST="$NEW"
fi
done
Lưu nó như watch.sh
và làm chmod u+x watch.sh
. Sau đó, tôi thực hiện nó như sau:
./watch.sh file.tex pdflatex
Nếu bạn muốn lệnh chỉ được chạy nếu sửa đổi thực tế diễn ra, bạn có thể sử dụng `md5sum "$FILE"`
thay vì `ls -l "$FILE"`
.
NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'`
bạn có thể sử dụng lệnh tailf một cách dễ dàng nhất
tailf logfile.log
Nếu tôi muốn có thể tìm kiếm xung quanh tệp ngoài việc chỉ theo đuôi nó, tôi sử dụng ít hơn với lệnh "F".
Khi sử dụng đuôi, hãy nhớ rằng các đối số bổ sung là cần thiết nếu tệp có thể được cuộn qua hoặc thay thế bằng chỉnh sửa (chế độ mặc định cho vim's: w).
tail -f sẽ khiến đuôi lưu trữ bộ mô tả tệp và làm theo nó. Nếu tập tin được thay thế, bộ mô tả sẽ được thay đổi. Lợi ích của việc theo dõi bộ mô tả tệp là nếu tệp được đổi tên, bạn vẫn sẽ theo dõi nó.
tail --follow = sẽ làm cho đuôi theo dõi tệp được đặt tên bằng cách mở lại định kỳ để xem nó đã được thay thế chưa.
--retry là một tùy chọn hữu ích khác nếu bạn muốn theo dõi tệp nhật ký nhưng tệp chưa được tạo.
đuôi -F là một phím tắt cho --follow = --retry.
Quên tailf, diff là lệnh bạn muốn. Đây là một mẹo hay để xem sự khác biệt khi chúng xảy ra trong thời gian thực (hoặc đóng) giữa 2 tệp hoặc trong một tệp được ghi vào.
Bạn có thể sử dụng các phương pháp này để sửa đổi hành vi theo bất kỳ cách nào bạn muốn, chẳng hạn như viết các thay đổi vào một tệp để lưu giữ hồ sơ. Chơi xung quanh với khoảng thời gian của đồng hồ hoặc các tùy chọn khác cho các lệnh bên dưới.
Bạn có 1 tệp và bạn muốn xem những thay đổi được thực hiện cho nó:
Vì vậy, đây là những gì để làm:
cp file file2
touch check-differences.sh
nano check-differences.sh
chmod 755 check-differences.sh
#!/bin/bash
diff file file2
cp file file2
watch ./check-differences
cái này sẽ cập nhật cứ sau 2 giây. Vì vậy, nếu bạn cần quay lại và đọc chúng, sau đó ghi đầu ra của diff vào một tệp trong tập lệnh.
hoặc sử dụng cron để chạy tập lệnh của bạn thường xuyên nếu bạn không cần xem đầu ra.
Trong khi tail -f somefile.txt
tiếp tục cuộn với dữ liệu mới, đôi khi tôi cũng thích less +G somefile.txt
nhìn vào một bản vá dữ liệu mới nhất trong tệp.