inotifywait -r -m -e modify /var/log |
while read file_path file_event file_name; do
echo ${file_path}${file_name} event: ${file_event}
done
输出:
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
/var/log/messages event: MODIFY
/var/log/kern event: MODIFY
...
+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.
-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).
你的意思是
?
(尾巴的手册页)
根据 Jon Skeet 的回答,您可能是指尾巴。
另一个有用的是watch;它允许您定期运行命令并全屏查看输出。例如:
将
ls -l /var/adm/messages
每 10 秒运行一次命令,并突出显示后续运行之间的输出差异。(例如,对于观察日志文件的增长速度很有用)。inotifywait
如果您想在每次文件(或目录中的任何文件)更改时运行命令,则 inotify-tools 非常有用。例如:输出:
我更喜欢使用
less +FG
1,tail -f
因为我发现自己需要在日志文件中搜索特定错误或 ID。如果我需要搜索某些内容,我会键入^C
以停止跟踪文件并?
开始向后搜索。键绑定与
vi
. 任何命令都可以在启动时使用以下+
选项进行初始化:-n
对于非常长的日志,我发现使用关闭行号的选项很方便。从手册页:1. 向rgmarcha 致敬,感谢您在评论中指出这一点。
tail
很棒...less
也可以在文件上使用 start less ,即less myfile
然后按Shift+ F。这已less
充当tail
.我正在编辑一个 LaTeX 文件,并且还想监视它以了解中间某处的更改。我编写了以下证明对我有用的小 shell 脚本。我希望它也能对其他人派上用场。
将其另存为
watch.sh
并执行chmod u+x watch.sh
. 然后我执行如下:./watch.sh file.tex pdflatex
如果您希望仅在发生实际修改时运行该命令,您可以使用
`md5sum "$FILE"`
代替`ls -l "$FILE"`
.您可以使用tailf 命令,这是最简单的命令
您还可以使用 inotifywatch/inotifywait 挂钩到内核 inotify 子系统。通过这种方式,您还可以查看“打开”、“关闭”或“访问”等内容。
但是,如果您只是想将附加行添加到标准输出,我同意尾巴。
Tail 是标准的、传统的、随处可用的 unix 工具。更复杂一点的工具是multitail,它可以同时监控多个文件并进行语法高亮显示。
如果我希望能够在文件周围搜索而不只是拖尾它,我会在“F”命令中使用 less。
使用 tail 时,请记住,如果文件可能滚动或被编辑替换(vim 的默认模式:w),则需要额外的参数。
tail -f <filename>
将导致 tail 存储文件描述符并跟随它。如果文件被替换,描述符将被更改。遵循文件描述符的好处是,如果文件被重命名,您仍然会遵循它。tail --follow=<filename>
将通过定期重新打开命名文件来跟踪命名文件以查看它是否已被替换。--retry
如果您想跟踪日志文件但该文件尚未创建,这是另一个有用的选项。tail -F <filename>
是--follow=<filename> --retry
.