在Linux中,如何在创建文本文件后打印输出?

时间:2015-08-05 20:00:30

标签: linux cat tail

我有一个名为/ home / myuser / tmp *的文件,它被简要创建,记录输出消息然后被删除。我需要看到输出,但它最多只有一秒钟(我正在使用恼人的开源程序)。有没有像" tail -f / home / myuser / tmp *"它可以在创建后立即显示该文件的内容吗?

2 个答案:

答案 0 :(得分:0)

尝试打开另一个终端并编写一个尝试复制文件的循环。 在导致创建文件的操作之前启动它。创建脚本完成后,按CTRL-C终止另一个会话中的循环,看它是否创建了保存的文件。您可能需要尝试几次,但它应该在某个时刻捕获该文件!

while :
do
  cp /home/myuser/tmpfile /home/myuser/tmpfile.sav 2>/dev/null
done

如果文件已经存在,创建文件的进程可能会附加到它上面。如果是,并且如果您知道它的名称,则按该名称创建一个空文件,并在另一个终端会话中执行tail -f,然后在第一个终端中运行该程序。不是循环,只是tail -f tmpfile

答案 1 :(得分:0)

如果/ home / myuser中没有其他活动,您只需执行以下操作:

inotifywait -e close /home/myuser && cat '/home/myuser/tmp*'  

(文件名是tmp*,还是您询问以tmp开头的任意命名文件?如果是后者,此解决方案显然不起作用。

Inotifywait将一直阻止,直到/home/myuser中的某个文件关闭,然后cat该文件。如果您想要观看多个文件,您可能更喜欢以下内容:

inotifywait -m -e close_write --format %f ~myuser | 
    while read file; do cat ~myuser/$file; done  

但请注意关于包含空格的路径的标准警告和警告。