gpt4 book ai didi

vagrant - 在供应期间创建连续的后台作业

转载 作者:行者123 更新时间:2023-12-05 05:23:19 25 4
gpt4 key购买 nike

在配置 VM 期间,我想启动一个应在后台运行的作业。该作业应持续检查某些文件是否已更改。在 vagrant 文件中,我引用了一个包含以下行的脚本(除了每 3 秒回显“x”之外什么都不做):

nohup sh -c 'while true; do sleep 3; echo x; done' &

如果我直接在命令行中运行它,就会创建一个作业,我可以使用 jobs 检查它。

如果我使用

从 VM 外部运行它
vagrant ssh -c "nohup sh -c 'while true; do sleep 3; echo x; done' &"

或者如果它作为配置的一部分执行,似乎什么也没有发生。 (没有作业,也没有创建 nohup.out 文件。)


我尝试了以下两个似乎解决同一问题的问题的答案:

(1) This answer建议“适本地守护进程”这对我不起作用。我尝试了以下方法:

vagrant ssh -c "nohup sh -c 'while true; do sleep 3; echo x; done' 0<&- &>/dev/null &"

(2) second answer说要添加“ sleep 1”,但它也不起作用:

vagrant ssh -c "nohup sh -c 'while true; do sleep 3; echo x; done' & sleep 1" 

对于这两种直接在命令行上执行命令的尝试都很好,但是通过 vagrant ssh -c 或通过配置执行它似乎没有做任何事情。

最佳答案

我的情况是这样的

Vagrantfile 配置

hub.vm.provision "shell", path: "script/run-test.sh", privileged: false, run: 'always', args: "#{selenium_version}"

我调用了一个 run-test 脚本以作为 vagrant 用户运行(是 privileged: false)

脚本中有趣的部分是

nohup java -jar /test/selenium-server-standalone-$1.jar -role hub &> /home/vagrant/nohup.grid.out&

在我的例子中,我启动了一个 java 守护进程,并将 nohup 的输出重定向到我 vagrant 家中的特定文件中。如果我检查作业正在运行并由 vagrant 用户拥有。

关于vagrant - 在供应期间创建连续的后台作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38022399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com