我想跟踪一堆包含特定不存在文件的未知目录名称,例如:
tail -F /tmp/*/app.log
但是,通配符不能按预期工作:如果我使用该路径创建文件,tail
除非我重新启动命令,否则不会开始跟踪。另一方面,如果我运行:
tail -F /tmp/example/app.log
文件一出现,命令就会输出:tail: '/tmp/example/app.log' has appeared; following new file
我已经尝试过-f filename --retry
组合而不是-F
结果是一样的。
如何解决这个问题,还有其他方法可以实现相同的目标吗?
/tmp/*/app.log
将由外壳扩展(我认为是 BASH)。如果存在匹配项,那么这将扩展为这些匹配项,然后作为参数传递给tail
因此,在上述情况下,
tail
将被配置为专门遵循app.log
ina
和app.log
inb
。如果在它开始app.log
的b
时候不存在,它就不会被遵循。如果创建了新目录或文件,它也不会跟随它们。在没有匹配的情况下,未扩展的字符串将作为参数传递给
tail
因此,它将尝试遵循
/tmp/test/*/app2.log
可能永远不会存在的文字路径名/文件名(或者如果它确实存在,它是以一种非常奇怪的方式创建的,因为*
在正常情况下我不建议将其作为目录名) .