我知道Unix上有一个命令可以用来监视文件并查看正在写入的更改。这对于检查日志文件特别有用。
你知道这叫什么吗?
我知道Unix上有一个命令可以用来监视文件并查看正在写入的更改。这对于检查日志文件特别有用。
你知道这叫什么吗?
Answers:
tail -F
将跟随文件名而不是文件对象,这在日志文件轮换的情况下特别有用。
根据乔恩·斯基特(Jon Skeet)的回答,您可能指的是尾巴。
另一个有用的是手表;它允许您定期运行命令并查看全屏输出。例如:
观看-n 10 -d ls -l / var / adm / messages
将ls -l /var/adm/messages
每10秒运行一次命令,并突出显示后续运行之间的输出差异。(例如,用于观察日志文件的增长速度)。
我更喜欢使用less +FG
1,tail -f
因为我发现自己需要在日志文件中搜索特定的错误或ID。如果我需要搜索某些内容,请键入^C
以停止跟踪文件并?
开始向后搜索。
键绑定与中的几乎相同vi
。可以使用以下+
选项在启动时初始化任何命令:
+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).
1.向rgmarcha致敬,以在注释中指出。
alias
您设置一个所需的选项,这样就不必每次都键入它们。
我正在编辑LaTeX文件,并希望监视它的中间位置是否有更改。我整理了以下对我有用的小shell脚本。我希望它也可以派上用场。
#!/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
将其另存为watch.sh
并执行chmod u+x watch.sh
。然后我按如下方式执行它:
./watch.sh file.tex pdflatex
如果只在实际修改发生后才运行命令,则可以使用`md5sum "$FILE"`
代替`ls -l "$FILE"`
。
NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'`
如果除了尾部文件之外,我还希望能够在文件周围进行搜索,则在“ F”命令中使用较少。
当使用tail时,请记住,如果文件可能被滚动或被edit替换(vim的:w的默认模式),则需要其他参数。
tail -f将导致tail存储文件描述符并遵循它。如果文件被替换,描述符将被更改。遵循文件描述符的好处在于,如果文件被重命名,您仍将遵循它。
tail --follow =将通过定期重新打开命名文件来查看其是否被替换,从而使tail跟踪命名文件。
如果要尾随日志文件但尚未创建该文件,则--retry是另一个有用的选项。
tail -F是--follow = --retry的快捷方式。
忘记tailf,diff是您想要的命令。这是一个很好的技巧,可以观察到两个文件之间或正在写入的一个文件之间实时(或接近)发生的差异。
您可以使用这些方法以所需的任何方式修改行为,例如将更改写入文件以保持记录。按以下命令间隔观看或观察其他选项。
您有1个文件,并且要观看对其进行的更改:
所以继承人该怎么做:
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
默认情况下,这将每2秒更新一次。因此,如果您需要返回并阅读它们,则将diff的输出写入脚本中的文件中。
或使用cron定期运行脚本(如果您不需要查看输出)。
在tail -f somefile.txt
不断滚动浏览新数据的同时,有时我还是更喜欢less +G somefile.txt
查看文件中最新数据的补丁。