检查目录内容是否已更改,使用Shell脚本或Python
我有一个程序,它会在一个特定的文件夹里创建文件。等这些文件准备好了之后,我会运行Latex来生成一个.pdf文件。所以,我的问题是,怎么能把这个文件夹的变化当作一个信号,来调用Latex,使用一个shell脚本或者Python脚本呢?
祝好
7 个回答
3
你不仅需要检查是否有变化,还需要确保所有的变化都完成了,才能运行LaTeX。举个例子,如果你在第一个文件修改后就开始运行LaTeX,而其他的修改还没完成,那你使用的数据就是不完整的,之后还得再重新运行一次。
等你的第一个程序完成:
#!/bin/bash
first-program &&
run-after-changes-complete
使用&&的意思是,第二个命令只有在第一个命令成功完成(返回值为零)后才会执行。因为这个简单的脚本即使第一个命令没有修改任何文件,第二个命令也会一直运行,所以你可以把它用在你已经熟悉的任何构建系统里,比如make。
3
你需要的是dnotify吗?
5
inotify
替代了 dnotify
。
...使用
dnotify
时,每个你想监控变化的目录都需要打开一个文件描述符...而且,这个文件描述符会把目录“锁住”,这样就不能卸载这个目录所在的设备,这在使用可移动存储时会造成问题。使用
inotify
的时候,如果你在监控一个已经卸载的文件系统上的文件,监控会自动取消,并且你会收到一个卸载事件。
...还有更多。
与它的前身
dnotify
不同,inotify
不会因为各种限制而让你的工作变得复杂。例如,如果你在监控可移动存储上的文件,这些文件不会被锁定。相比之下,dnotify
要求文件本身必须被打开,这样就真的“锁住”了它们(这会妨碍卸载存储设备)。