我有一个名为/ home / myuser / tmp *的文件,它被简要创建,记录输出消息然后被删除。我需要看到输出,但它最多只有一秒钟(我正在使用恼人的开源程序)。有没有像" tail -f / home / myuser / tmp *"它可以在创建后立即显示该文件的内容吗?
答案 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
但请注意关于包含空格的路径的标准警告和警告。