我很难在后台启动Makefile并完成Makefile目标中的进程。
这是一个简单的瓶和戏剧化的应用程序。这就是目标:
.PHONY: run-daemon
run-daemon:
poetry run gunicorn wsgi:app --daemon --workers 16 --threads 16
poetry run dramatiq api:broker worker.tasks --processes 1首先,我尝试使用符号作为进程的背景:
.PHONY: run-daemon
run-daemon:
poetry run gunicorn wsgi:app --daemon --workers 16 --threads 16 &
poetry run dramatiq api:broker worker.tasks --processes 1 &与预期的枪声背景,但戏剧化的不是。
然后,我尝试了nohup和setsid在不同的组合,有和没有符号,但这些都没有结果背景戏剧。
.PHONY: run-daemon
run-daemon:
poetry run gunicorn wsgi:app --daemon --workers 16 --threads 16 &
setsid nohup poetry run dramatiq api:broker worker.tasks --processes 1 &事实上,它没有完成,因为剧作家的过程没有完成。
但是,像poetry run dramatiq api:broker worker.tasks --processes 1一样,直接运行剧情片会导致剧情片在后台运行。
我如何才能使它去使make目标完成呢?
发布于 2022-04-15 12:15:09
您需要使用反斜杠来创建作为单个shell命令执行的多行组合体。
我想说这应该可以(注意逃避$和Co.):
SHELL:=/bin/bash
.PHONY run-daemon
run-daemon:
daemon-executable > daemon.log 2>&1&\
disown -h $$!https://stackoverflow.com/questions/71822959
复制相似问题