#queue #task-queue #unix #task #flock #cli

app fnq

基于 flock 的 Unix 任务和进程队列方法

3 个版本 (重大更改)

0.3.1 2021年4月19日
0.2.0 2021年4月10日
0.1.0 2021年4月4日

#3 in #flock

MIT 许可证

36KB
870

fnq (发音为 FUNK)

用于队列 Unix 任务和进程的基于 flock 的单 CLI 方法


用法

在您的环境中设置 FNQ_DIR 以指定存储队列文件的位置。默认为 $(pwd)

$ fnq [--quiet | --clean] cmd

提示:由于 fnq 使用 FNQ_DIR 来确定队列状态,因此您可以通过更改 FNQ_DIR 来创建一个全新的队列

示例

$ export FNQ_DIR=~/.fnqdir # Can put in .bashrc for global use
$ fnq ./task1 # Can also look in PATH
fnq1617220638670.52957
$ fnq ./task2 taskarg1 taskarg2 # Queues future tasks
fnq1617221011799.53621
$ fnq -q ./task3
$ ls $FNQ_DIR
fnq1617220638670.52957  fnq1617221011799.53621  fnq1617221184552.54371
$ fnq --tap fnq1617221011799.53621 # Will check if task is running
$ fnq --block # Will block until last task finishes

标志

--quiet / -q

无 stdout

注意:任务 cmd 的 std{out,error} 仍将保存到相应的队列文件

--clean / -c

在任务完成后删除 $FNQ_DIR 中的队列文件

--block / -b<queuefile.pid>

接受一个队列输出文件以等待,否则等待/阻塞整个队列完成

--tap / -t<queuefile.pid>

接受一个队列输出文件以确定是否正在运行,否则根据整个队列是否完成来确定成功

--watch / -w<queuefile.pid>

类似于 --block,但会打印到 stdout 当前正在运行的队列文件的内容

安装

Cargo

如果您使用的是 Cargo 的最新版本,您可以看到 cargo install 命令

$ cargo install fnq

从源代码构建

在 git 克隆此仓库后,您可以通过以下方式将其作为 cargo crate 安装:

$ cargo install --path path_to_repo

这将使 fnq 在您的 cargo crates 位于 $PATH 的任何位置都可以使用

关于

这里的大部分功能都受到了 nq (用 C 编写) 的极大启发。

此包依赖于 nix 来抽象 Unix flock 操作,因此假设 nix 在某个平台上工作,此二进制文件也应该可以工作。这里需要做的工作之一是创建一个适合在不同机器上运行的适当测试套件

在开发过程中已在 x86_64 的 Linux 上进行测试

许可证

MIT

Milan 维护

依赖项

~1.9–9.5MB
~86K SLoC