如果在 Linux 上使用 cp 复制操作期间重命名文件会发生什么?

如果在 Linux 上使用 cp 复制操作期间重命名文件会发生什么?

所以我想用...

cp /var/log/somelogs/* ./temp

...将一些日志文件复制到临时文件夹并分析它们。问题是生成日志文件的进程不受我的控制,并且它经常会实现日志轮换 - 在繁忙时间每 15 秒一次!最终 cp 将发生,同时日志轮换也会发生。我很好奇当这种情况发生时会发生什么。

虽然我可以高兴地再等待几分之一秒来仔细阅读该文件夹,但我如何判断我的文件夹是否损坏? cp 是否可能因错误代码而终止/崩溃?它会打印一些东西到标准输出吗?或者它可能会默默地向我传递一个可能已损坏/命名错误的文件夹的日志?

遗憾的是,fs 是 ext4 并且超出了我的控制范围,因此我无法利用快照,嘘:/

答案1

命令行上的通配符 (" /var/log/somelogs/*") 首先展开(在cp开始执行之前)。如果生成的文件列表包含不再存在的文件名(由于cp复制早期文件时运行日志轮换),cp则会抱怨,尝试下一个文件,并返回非零退出状态(bashvariable $?)。看man cp

请参阅通配符扩展;

echo cp /var/log/somelogs/* ./temp

相关内容