运行一个盐脚本作业,该作业永远不会返回盐主机

Sur*_* HK 2 java command-line salt-stack

我有一个盐SLS文件test.sls,如下所示:

test:
  cmd.run:
   - name : |
       java -jar test.jar
Run Code Online (Sandbox Code Playgroud)

在这里,test.jar运行一个命令以启动eclipse并运行指定的配置(永久运行)。由于这会永远运行(除非我停止运行),所以当我运行以下命令时,

sudo salt 'ubuntu' state.sls test
Run Code Online (Sandbox Code Playgroud)

奴才不会回到主人那里。在这种情况下会发生什么?超时后作业会自动停止吗?一般来说,如何运行永不停止使用盐的作业?

act*_*eek 5

我找到了解决方案!如果将stdout/ 重定向stderr/dev/null,则可以在后台运行该进程,并避免salt等待该进程。这是一个例子:

run-my-cmd:
   cmd.run:
      - name: ./run-your-script >/dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)

如果您的脚本包含stdout,则应确保:

现在,此模块中的许多状态函数也接受一个有状态的参数。如果有状态指定为true,则假定命令或脚本将确定其自己的状态并通过遵循简单的协议将其传达回去

输出的结尾应为:

# writing the state line 
echo  # an empty line here so the next line will be the last. 
echo "changed=yes comment='something has changed' whatever=123"
Run Code Online (Sandbox Code Playgroud)

检查salt.states.cmd