公司一个自动部署的py脚本,执行完会自动部署filebeat。
问题:
subprocess.Popen返回为0说明该命令执行成功对吗。
为什么我手动执行这个脚本的时候返回为0,发现自动部署成功了
把这个脚本丢给程序自动执行返回也是0,但是却没部署成功
而且执行的用户和权限都是一样的,我真是懵了,有什么方法可以替代subprocess.Popen吗,我换种方式看看
python自动部署filebeat
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 - 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:python subprocess.Popen系列问题
- 除此之外, 这篇博客: python subprocess调用外部进程中的 Popen方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
import subprocess, sys p1 = subprocess.Popen('ping 127.0.0.1'.split(), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # Popen构造一个新进程,启动其它程序,第一个参数由元组或列表提供,包括了命令和命令的参数。 # stdin、stdout 输入输出的标准。 # p1.wait() # 如果此处没有调用wait()方法,那 下面的 print(11111)是在p1执行时,马上接着执行的。 # print(11111) # 如果调用了 wait()方法,则在p1结束后,再运行 print()。 output, err = p1.communicate() # communicate()控制输入输出,结果返回一个元组(stdout, stderr)。 sys_encode = sys.stdout.encoding # 获取操作系统的默认编码。 print('p1', output.decode(sys_encode)) # 获取输出的内容,因为是字节码,所以得得重新解码。 print('Exit code:', p1.returncode) # p.returncode ==》p的退出状态码。 p = subprocess.Popen('ping 126.com'.split()) print(p.poll()) # poll 查看进程是否还在运行,如果还在运行返回None。如果正常结束返回0,错误中止通常为1。 print(p.wait()) # 等待进程结束,可以传入一个timeout的参数=等待的时长。返回进程的结束状态码。和join类似。 打开其他程序 p = subprocess.Popen(['程序A', '文件B']) # 即用 程序A 来打开 文件B。 p = subprocess.Popen(['start', '文件B'], shell=True) # 调用系统默认程序打开 文件B, start是windows的shell命令,其他系统有open,see。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 解决一个加好友限制问题 或者有好的方案
- ¥15 关于#java#的问题,请各位专家解答!
- ¥15 急matlab编程仿真二阶震荡系统
- ¥20 TEC-9的数据通路实验
- ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
- ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
- ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
- ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
- ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
- ¥30 求解达问题(有红包)