如果文件在linux中被删除,则触发命令

时间:2017-01-04 19:23:57

标签: linux bash cron

我们说我有一个文件/local/content/en/abc.html,我在/local/en/abc.html中有一个相同的文件。我想向/local添加一个观察程序,以便在/local/content/en/abc.html被删除时自动删除/local/en/abc.html文件。

我怎样才能做到这一点?我有一个Linux环境。这可以是一个bash文件,可以看/local目录。

2 个答案:

答案 0 :(得分:5)

看起来像是内核中内置的inotify的作业。这是一个子系统,可让您查看特定文件夹以进行更改,并在发生这种情况时接收通知。它通常用于自动更新目录视图,重新加载配置文件,记录更改,备份,同步等。

inotify本身就是一个API,而不是一个程序。如果您想自己编写一个小程序,可以从inotify手册页找到有关API的更多信息,或者查看GitHub链接以获取一个工具,该工具可让您轻松地从shell脚本设置inotify监视(在通知进来时你可以采取适当的行动。)

https://en.wikipedia.org/wiki/Inotify

https://github.com/rvoicilas/inotify-tools

答案 1 :(得分:0)

如果它们具有相同的内容,您可以使用符号链接(ln -s)。 例如:

$echo Test > a
$ln -s a b
$ ll
total 4
-rw-rw-r--. 1 ...................... a
lrwxrwxrwx. 1 ...................... b -> a

文件a和b具有相同的内容:

$ cat b
Test

如果你销毁a,b只是一个符号链接:

$rm b
$cat b
cat: b: no file

创建文件a后,您可以再次使用文件b:

$echo Test > a
$ cat b
Test