小编Dro*_*dOS的帖子

为什么 inotify 事件触发不止一次

这个问题来自我在Stackoverflow 上提出的另一个问题。我正在使用Watcher - 同样的问题也适用于Incron - 来监视文件夹及其子文件夹的更改,并悄悄地将这些更改转移到 Dropbox。

我监视write_close事件 - IN_CLOSE_WRITE- 出于这个目的。本来我是在看modify事件,即IN_MODIFY。虽然这行得通,但我发现在写入大文件时,它会触发不止一次。这听起来很公平,所以我改用了,IN_CLOSE_WRITE因为我觉得假设对于给定的文件它只会发生一次是合理的。

然而,事实并非如此。即使对于在 Nano 中创建的非常小的文本文件(只有一个字符),该事件也会发生两次。当同一个文件在 Dropbox 上同步两次时,这充其量会导致不必要的流量。在我自己的情况下,它会导致灾难,因为在第一个事件中我执行同步然后删除服务器端文件。结果 - 在第二个事件中,Dropbox 侧文件变为 0 字节文件。

我现在正在处理这个问题,让我的同步脚本在我做任何其他事情之前休眠 10 秒,然后在尝试 Dropbox 同步之前检查有问题的文件是否仍然存在。这是有效的,因为在第二次迭代时文件丢失并且脚本刚刚终止。

这听起来充其量是骇人听闻的。也许不是一个糟糕的黑客,但我更愿意理解 - 为什么甚至IN_CLOSE_WRITE事件发生不止一次?


一些附加信息

  • 检查以确保没有多个 watcher 实例正在运行。

输出来自 ps ax|grep watcher.py

23880 ?        Sl     0:01 python /usr/local/bin/watcher.py restart
24977 pts/0    S+     0:00 grep --color=auto watcher.py
Run Code Online (Sandbox Code Playgroud)

文件系统是ext4. 我应该提到,我遇到了与 Incron 完全相同的问题。我从通过/etc/rc2.d. Incron OTH 通过其默认apt-get install incron …

inotify 14.04

13
推荐指数
2
解决办法
6608
查看次数

在 Ubuntu Docker 安装中删除手册页

我正在尝试减少我的 Ubuntu docker 映像的占用空间。鉴于 man 文件几乎没有用处,我删除了它们,提交了图像,然后尝试使用它。AFAICT它没有伤害。但是,我认为值得在这里询问。通过这样做,我是否为未来存储了任何丑陋的问题?

manpage docker

12
推荐指数
1
解决办法
6784
查看次数

用于 Docker 容器的 Ubuntu

Ubuntu 是适合在 Docker 容器内使用的发行版吗?如果是这样,Ubuntu是如何安装的

docker pull ubuntu
Run Code Online (Sandbox Code Playgroud)

与 Ubuntu 14.04 不同?

14.04 docker

4
推荐指数
1
解决办法
3461
查看次数

Crosswalk所说的“蚂蚁之路”是什么?

我正在设置一个 Ubuntu 14.04 服务器来试验Crosswalk。我已经安装了Java JDK,apt-get install default-jdk以及ANT, apt-get install antwhereis java返回/usr/bin/javawhereis ant返回/usr/bin/ant。我发现令人困惑的是下一步:配置说明的工具

export PATH=<path to ant>/bin:<path to JDK>/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

目前尚不清楚我应该如何解释这一点。留给我自己的设备我可能已经完成了

export PATH=/usr/bin/ant
Run Code Online (Sandbox Code Playgroud)

但看起来不像他们所建议的那样。这对我来说是未知的领域。我将不胜感激任何帮助。

java paths

4
推荐指数
1
解决办法
218
查看次数

如何挂载 Microsoft 基本数据分区

我有一台戴尔 Inspiron 5568 笔记本电脑,它不再在 Windows 10 下启动。本机(戴尔)恢复选项不允许我在尝试恢复出厂设置之前备份我的任何数据。因此,我更改了“传统启动”的 BIOS 设置并从 Ubuntu Live 16.04 USB 记忆棒启动。这是我看到的

 parted -l reports

 Partition 1  524Mb  FAT32 EFI System partition             boot,esp
 Partition 2 134Mb         Microsoft reserved partition     msftres
 Parition 3  495Gb         Basic data partition             msftdata
 ...
 Parition 8  148Gb         Basic data partition             msftdata
 Parition 9  472Mb  ntfs                                    hidden,dflag
 Two more hidden ntfs paritions

fdisk -l reports

/dev/sda1    500Mb  EFI System
/dev/sda2    128Mb  Microsoft reserved
/dev/sda3    460G   Microsoft basic data
...
/dev/sda8    138Gb  Microsoft basic data
/dev/sda9 …
Run Code Online (Sandbox Code Playgroud)

partitioning data-recovery windows-10

3
推荐指数
1
解决办法
4万
查看次数