在后台运行 lein repl :headless

kal*_*cey 1 bash signals clojure leiningen

目标:lein在后台无头运行

我正在尝试运行一个无头的 leiningen REPL,而不需要专门为其提供终端。也就是说,我想做

$ lein repl :headless &
Run Code Online (Sandbox Code Playgroud)

但几秒钟后 bash 报告它已停止

$ [2]+  Stopped                 lein repl :headless
Run Code Online (Sandbox Code Playgroud)

在 zsh 和 sh 中运行它具有相同的结果。这些 shell 打印收到的信号 SIGTTIN,这意味着该进程尝试从 STDIN 读取,尽管不是终端控制进程。

以下作品:

$ bash -c "lein repl :headless &"
$ lein repl :headless </dev/null &
Run Code Online (Sandbox Code Playgroud)

我已经查看了repl :headless 在没有标准输入的情况下无法工作,但我无法使用那里的内容来解决我的问题。


其他一些细节:

推杆

#!/bin/bash
lein repl :headless & 
Run Code Online (Sandbox Code Playgroud)

进入脚本test.bash并运行./test.bash也可以。但将线路更改为lein repl :headless并运行./test.bash &则不会。

跑步

$ lein repl :headless &
$ disown %1
Run Code Online (Sandbox Code Playgroud)

也不起作用;ps进程报告它已终止。

我通常也使用 运行tmuxreattach-to-user-namespace但我已经在 的内部和外部tmux以及多个终端仿真器(iTerm2 和 Terminal)中尝试过此操作。如果有帮助,这是我的stty -a设置

Ale*_*eph 6

lein trampoline repl :headless &将解决这个问题。

您可以阅读本文以获得解释。