首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在沙箱中时,在沙箱外执行shell命令

问在沙箱中时,在沙箱外执行shell命令
EN

Stack Overflow用户
提问于 2020-06-25 19:39:12
回答 1查看 147关注 0票数 0

我正在使用奇点在一个没有python的环境中运行python。我还按照爱荷华州立大学的解释运行了一个mysql实例(运行一个mysql实例,并在运行完成后将其关闭)。

为了清楚起见,我使用bash脚本打开mysql,然后执行我必须做的事情( python脚本)并关闭mysql,它工作得很好。但是,如果出现错误,python停止的惟一方法是sys.exit(值),这不仅会停止python脚本,还会停止运行它的bash脚本。这使我无法在python脚本退出时管理错误并关闭mysql实例。

我的问题是:当我在python沙箱中时,有没有办法执行一个“奇点实例停止mysql”?告诉奇点“嘿,这里的命令必须在主机上使用!”?

我一直在找,但什么也找不到。

我只是尝试像其他命令一样使用子进程执行它,但它返回了一条错误消息,因为我在python沙箱中没有这个实例。我甚至在这个沙盒里都没有奇点。

对于任何澄清,只要问我,我正在努力弄清楚,但我很确定它不是很清楚。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-06-26 15:58:22

一般来说,如果一个进程可以从容器(docker或singularity)内部启动,但在主机操作系统的命名空间中运行,这将是一个很大的安全问题。

如果bash脚本在python失败时退出,那么听起来您使用的是set -e或#!/bin/bash -e。如果任何命令返回非零值,这将导致脚本中止。为了更安全的处理,通常建议这样做,但有时也会导致这样的问题。要在python步骤中绕过此步骤,您可以修改脚本:

代码语言:javascript
复制
# 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 stuff
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62574437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档