#文件 #替换 #Linux #inotify #命令 #incron #监视

app rincron_mini

incron的替代品,用Rust编写

3个版本 (破坏性更新)

0.3.0-rc12023年8月30日
0.2.0-beta2023年6月12日
0.1.0-beta2023年5月29日

#807 in 文件系统

GPL-3.0-or-later

35KB
514

Rincron-Mini

Rincron-mini是一款用Rust编写的软件,旨在成为incrontab的替代品。由于inotify不存在于其他平台,因此该软件仅兼容Linux。

安装

使用cargo安装rincron-mini

cargo install rincron_mini

配置

Rincron-Mini使用JSON文件作为配置文件。您可以使用单个文件,也可以在目录中使用多个文件。以下为预期路径

单个文件 多个文件
root /etc/rincron-mini.json /etc/rincron-mini/*.json
user $HOME/.config/rincron-mini.json $HOME/.config/rincron-mini/*.json

文件格式

每个JSON文件必须包含一个对象数组。这是最小格式

[
    {
        "path": "/tmp",
        "events": [
            "CREATE",
            "MOVED_TO"
        ],
        "command": "echo \"Event on $#/$@\""
    }, 
    {
        "path": "/dev/null",
        "events": ["IN_ACCESS"],
        "command": "echo \"Event on $#/$@\""
    }
]
  • path:可以是文件或目录,这是将被监视的内容
  • events:一个或多个inotify事件,您可以从事件名称中删除IN_
  • command:要执行的命令

命令参数

如果您想对命令行进行上下文化,可以使用一些通配符

  • $@:被监视的文件/目录(复制path参数)
  • $#:触发事件的文件或目录名
  • $$:一个$字符

文件大小监视

当您使用rincron-mini在移动、复制或上传的文件上执行命令时,您可能只想在复制/移动/上传完成后执行命令。在这种情况下,您可以添加一个表示两次大小检查之间时间的整数(以秒为单位)的check_interval参数。一旦两次检查之间文件大小没有变化,该命令将被执行

在这个例子中,文件将每5秒检查一次

[
    {
        "path": "/tmp",
        "events": [
            "CREATE",
            "MOVED_TO"
        ],
        "command": "echo \"Event on $#/$@\"",
        "check_interval": 5
    }
]

文件名匹配

有时,您只想在特定文件类型上执行命令。您可以使用file_match命令来实现这一点。您可以使用?*通配符。

带有zip文件检查的示例

[
    {
        "path": "/tmp",
        "events": [
            "CREATE",
            "MOVED_TO"
        ],
        "command": "echo \"Event on $#/$@\"",
        "file_match": "*.zip"
    }
]

限制

遗憾的是,这款软件不是完整的 incrontab 替代品。存在一些限制

  • 未实现 $%$&

我会尝试改进软件,使其更强大。

依赖项

~1–12MB
~93K SLoC