这是运行任意命令返回其stdout数据的Python代码,或者在非零退出代码上引发异常:
proc = subprocess.Popen(
cmd,
stderr=subprocess.STDOUT, # Merge stdout and stderr
stdout=subprocess.PIPE,
shell=True)
Run Code Online (Sandbox Code Playgroud)
communicate 用于等待进程退出:
stdoutdata, stderrdata = proc.communicate()
Run Code Online (Sandbox Code Playgroud)
该subprocess模块不支持超时 - 能够终止运行超过X秒的进程 - 因此,communicate可能需要永久运行.
在旨在在Windows和Linux上运行的Python程序中实现超时的最简单方法是什么?
通常在NFS客户端上,如何通过使用Bash Shell脚本来检测服务器端的Mounted-Point或DEAD?
通常我这样做:
if ls '/var/data' 2>&1 | grep 'Stale file handle';
then
echo "failing";
else
echo "ok";
fi
Run Code Online (Sandbox Code Playgroud)
但问题是,当特别是NFS服务器完全死机或停止时,即使是ls命令,在客户端进入该目录也会被绞死或死亡.手段,上面的脚本不再可用.
有没有办法再次检测到这个?