加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix crontab不能很好地处理python的subprocess.popen

发布时间:2020-12-15 22:33:56 所属栏目:安全 来源:网络整理
导读:我正在使用crontab启动一个 python脚本,假设使用subprocess.popen()自行启动几个procceses.我使用此命令启动可能需要30分钟的过程 – 所以我不想等待结果,而是继续使用我原来的crontab运行脚本.问题是crontab似乎像subprocess.call一样处理subprocess.popen
我正在使用crontab启动一个 python脚本,假设使用subprocess.popen()自行启动几个procceses.我使用此命令启动可能需要30分钟的过程 – 所以我不想等待结果,而是继续使用我原来的crontab运行脚本.问题是crontab似乎像subprocess.call一样处理subprocess.popen!

我可以在我的日志文件和进程列表中清楚地看到第一个popen成功但它不会在后台继续 – 它等到firts popen进程结束…

这可能是因为我将stderr / steout重定向到文件?我没有看到连接但可能……

我的代码如下:

# inside process spawning loop
# open and append process to list
mainLogger.debug("about to launch process with popen")
scoopPopenObj = subprocess.Popen(cmdArgsString,shell=True,stdout=qScoopLogFile,stderr=qScoopLogFile) 
openScoops.append((fileName,time.time(),scoopPopenObj))
# rest of script,here is where i dont get until scoopPopenObj finishes..

有任何想法吗?

解决方法

我不确定这与问题有关,但是当将stderr重定向到与stdout相同的管道时,你应该使用stderr = subprocess.STDOUT,如 documentation中所述.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读