返回信息流# Situation
- shell 包了一个python进程来执行
- python 进程在做什么?
```
for some situation:
#bcp 不阻塞,扔给sqlserver去做文件导出
sql bcp queryout
#shell 合并bcp导出的文件,有可能操作的时候sqlserver的bcp进程还在占用文件
shell merge bcp file
shell remove merged file
```
- shell 在干什么?
```
python my_python.py
echo "succeed!!!"
```
- 结果呢?
- 为了看最终shell进程的状态,执行python之后调了个echo
- python调用、外围shell调用都加了错误输出重定向
- 结果,python进程莫名退出了,shell进程也退出了,没有错误日志也没有打印最后的echo。。。
# Questions
- 确实python调用shell合并文件并删除文件,会碰到文件还被windows进程占用的情况。but,为什么没有错误日志能refer。。。
- 如果shell成功了,最后一行echo为啥没有输出?如果失败了,错误日志呢???
- 或者,有其他方法能追到python进程或者shell进程的log?脚本又没有java之类的jstack能看跑到哪了。。。为什么卡了。。。
## 新手求教!
这是一条镜像帖。来源:北邮人论坛 / python / #14643同步于 2016/6/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
python shell互调导致主进程退出,how to 排查?
cccoco
2016/6/23镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
其实换种方法就能避过这个,但是就想知道为什么没有办法追溯错误原因。。。
【 在 nuanyangyang 的大作中提到: 】
: 说说你要做什么吧。感觉不需要这么麻烦。
可是你说了这么多也没说明白你想做什么事情,只是提到了python、shell、sql什么的,不知道你想达到什么目的。
既然不知道你想做什么事,也就没办法帮你找问题了。
【 在 cccoco 的大作中提到: 】
: 其实换种方法就能避过这个,但是就想知道为什么没有办法追溯错误原因。。。
对头,即想别人帮你,又不想跟别人坦诚相待。
【 在 nuanyangyang 的大作中提到: 】
: 可是你说了这么多也没说明白你想做什么事情,只是提到了python、shell、sql什么的,不知道你想达到什么目的。
: 既然不知道你想做什么事,也就没办法帮你找问题了。
我想做的是:
1. python调用dbapi从数据库导出数据到文件
2. 基于某种规则在导出后做文件合并
我的问题:
1. 跟我想做的其实没什么关系,就是想知道为什么python进程也好shell进程也好,出错了为什么没有错误输出。。。
2. 我的重定向没问题,因为有正常打log的时间,只是打着打着进程就退出了,没什么错误信息能追
【 在 nuanyangyang 的大作中提到: 】
: 可是你说了这么多也没说明白你想做什么事情,只是提到了python、shell、sql什么的,不知道你想达到什么目的。
: 既然不知道你想做什么事,也就没办法帮你找问题了。
【 在 cccoco 的大作中提到: 】
: 我想做的是:
: 1. python调用dbapi从数据库导出数据到文件
: 2. 基于某种规则在导出后做文件合并
: ...................
如果你说的都是对的,那么不应该出错。如果结果不是你期望的,肯定是哪一步出错了。通过你抽象的描述看不出具体问题。
建议python不要再调用shell了。所有的事情应该都可以在python里面做。降低复杂度,便于调试。
嗯,谢谢!看来只能绕过了
【 在 nuanyangyang 的大作中提到: 】
:
: 如果你说的都是对的,那么不应该出错。如果结果不是你期望的,肯定是哪一步出错了。通过你抽象的描述看不出具体问题。
: 建议python不要再调用shell了。所有的事情应该都可以在python里面做。降低复杂度,便于调试。