我正在使用奇点在一个没有python的环境中运行python。我还按照爱荷华州立大学的解释运行了一个mysql实例(运行一个mysql实例,并在运行完成后将其关闭)。
为了清楚起见,我使用bash脚本打开mysql,然后执行我必须做的事情( python脚本)并关闭mysql,它工作得很好。但是,如果出现错误,python停止的惟一方法是sys.exit(值),这不仅会停止python脚本,还会停止运行它的bash脚本。这使我无法在python脚本退出时管理错误并关闭mysql实例。
我的问题是:当我在python沙箱中时,有没有办法执行一个“奇点实例停止mysql”?告诉奇点“嘿,这里的命令必须在主机上使用!”?
我一直在找,但什么也找不到。
我只是尝试像其他命令一样使用子进程执行它,但它返回了一条错误消息,因为我在python沙箱中没有这个实例。我甚至在这个沙盒里都没有奇点。
对于任何澄清,只要问我,我正在努力弄清楚,但我很确定它不是很清楚。
非常感谢!
发布于 2020-06-26 15:58:22
一般来说,如果一个进程可以从容器(docker或singularity)内部启动,但在主机操作系统的命名空间中运行,这将是一个很大的安全问题。
如果bash脚本在python失败时退出,那么听起来您使用的是set -e或#!/bin/bash -e。如果任何命令返回非零值,这将导致脚本中止。为了更安全的处理,通常建议这样做,但有时也会导致这样的问题。要在python步骤中绕过此步骤,您可以修改脚本:
# start mysql, do some stuff
set +x # disable abort on non-zero return
python my_script.py
set -x # re-enable abort on non-zero
# shut down mysql, do other stuffhttps://stackoverflow.com/questions/62574437
复制相似问题