3个版本 (破坏性更新)
0.3.0-rc1 | 2023年8月30日 |
---|---|
0.2.0-beta | 2023年6月12日 |
0.1.0-beta | 2023年5月29日 |
#807 in 文件系统
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