python pythontop.py#在test.sh中挂起urandom的猫根本没有被截断
pythontop.py
import subprocess
subprocess.call(['test.sh'])
test.sh
RAND=`cat /dev/urandom | tr -dc 'a-zA-Z0-9'| fold -w 10 | head -n 1`
编辑:人们对任何混乱道歉。事实证明,简单地从python本身调用shell脚本会导致脚本挂起
更新:
更多更新。如果我在头前插入一个发球台。我得到了一个破碎的管道消息。这意味着head完成了它的工作。得到一行并关闭文件。 cat /dev/urandom | tr -dc 'a-zA-Z0-9'| fold -w 10 | tee | head -n 1
我看到即使在管道信息破碎后脚本仍然挂起! 答案 0 :(得分:0)
虽然您的笔记本电脑上的代码对我来说效果很好,但它似乎仍然存在于容器化的环境中,例如linux containers。
更改
subprocess.call(['test.sh'])
到
subprocess.call(['/bin/bash', 'test.sh'], shell=True)
停止脚本挂起。
subprocess documentation建议不要对来自不受信任来源的任意未经过抽取的输入使用shell=True
,因此您已收到警告。