如何启动自定义(python)服务并在powershell中使用ansible继续?

2024-09-30 23:39:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在windows主机中使用ansible启动python服务。我试着同时使用Start Job和Start Process,如下所示。但我不能得到确切的结果。在

使用开始作业

Start-Job -ScriptBlock {Start-Process C:\Users\voiceqa\ansitest\Scripts\python.exe C:\Users\voiceqa\ansitest\Scripts\run_wireshark_service.py -PassThru -RedirectStandardError C:\Users\voiceqa\error.txt -RedirectStandardOutput C:\Users\voiceqa\output.txt -NoNewWindow 

问题是一旦ansible从会话中出来,Start Job就会停止,inturn会终止它正在运行的进程。在

使用启动过程

^{pr2}$

我都试过了。所有这些都有相同的问题。Ansible正在等待这些命令完成(它不会完成),如图所示

Here 我只需要启动这个python服务,然后继续剩下的工作。如何实现此功能?欢迎任何帮助。在


Tags: runtxtwindows作业scriptsjobansibleprocess
1条回答
网友
1楼 · 发布于 2024-09-30 23:39:39

在当前发布的Ansible版本中,这很难做到。即使您成功地通过raw:(这可能有一些跳跃),WinRM也不会让命令完成,直到所有进程退出(WinRM在Windows作业对象下运行所有东西)。你必须逃避这项工作。在

ansible2.2将有async、win_nchell和win_命令,但是async目前不是正确的选择,因为它会让一个watchdog进程运行,在异步超时之后会杀死子进程。我一直在测试command/shell的一个“分离”选项,它允许你做你想做的事情(但不确定它是否能在2.2模块冻结之前准备好)。在

如果你真的在运行一个服务,我建议你把它设置成一个Windows服务(直接,通过sc,或者使用类似NSSM的东西)。在

如果这是不可能的,您可以在当前版本的Ansible中运行后台进程(只要您不需要访问启动进程的stdin/stdout/stderr),通过raw:和WMI如下:

raw: ([wmiclass]"Win32_Process").Create("myprocess.exe /option1 /option2")

相关问题 更多 >