0

我创建了一个从目录中选择文件的脚本inbox。无论文件是否来自另一个进程,我都必须在脚本中包含一个处理。如果文件来自另一个进程,那么我的脚本应该等到文件被复制。

为此,我创建了一个标志

CHECK_COPY_PROCESS=$(ps -ef|grep -E 'cp|mv|scp'|grep inbox)

如果 flagCHECK_COPY_PROCESS包含某个值,则进程将进入等待状态。但问题是假设某些文件来自该目录的子目录,inbox 那么进程将生成这样cp file_name ..的上述逻辑不起作用。

4

1 回答 1

1

您可以使用 Basile 的提示,将 lsof 与 awk 结合使用(仅在第一列上进行 grepping,即命令名称)

例子:

lsof +D /path/to/inbox|awk '$1~/mv|cp|scp/'

这未经测试,因为我目前没有需要一段时间才能在我的机器上复制的大文件。

于 2013-03-11T10:18:51.477 回答