用于打开外壳、在外壳中运行命令并保持外壳运行的 Bash 脚本
Posted
技术标签:
【中文标题】用于打开外壳、在外壳中运行命令并保持外壳运行的 Bash 脚本【英文标题】:Bash Script to Open a Shell, Run a Command in the Shell, & Keep Shell Running 【发布时间】:2021-11-21 16:52:06 【问题描述】:我正在尝试使用 bash 脚本自动执行这些步骤
运行命令以访问程序的 shell(Kubernetes pod 的 bash shell)
kubectl exec --stdin --tty hello-node-7567d9fdc9-zvz55 -- bash
在这个 shell 中,运行第二个命令(例如python
)
root@hello-node-7567d9fdc9-zvz55:/# python
Python 3.7.4 (default, Aug 13 2019, 15:17:50)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
保持 shell 在前台打开/运行(这样用户可以立即将更多命令输入到步骤 2 中启动的 python shell)
我可以使用下面的脚本完成上述第一步。第二步和第三步怎么做?
#! /bin/bash
bash -c 'kubectl exec --stdin --tty hello-node-7567d9fdc9-zvz55 -- bash'
【问题讨论】:
你需要写一个pexpect
脚本
或者使用python -c 'print("hello from python"); print ("hi")'
提供多个python命令
你可以试试run individual commands in a pod,也可以试试这个answer。
您可以将bash -c 'kubectl …'
替换为kubectl …
:绝对没有理由在您的shell 脚本中生成另一个 shell 进程。
【参考方案1】:
对于第 2 步,您可以使用 nohup
命令运行进程,即使用户注销进程也不会被杀死。之后,shell 会继续运行,以便您执行第 3 步
【讨论】:
我希望 bash 脚本运行步骤 1-3 并最终在前台打开 python shell。我认为nohup
保持进程运行但保持在后台
好的,一旦你有了第 1 步的交互式 Bash 会话,你就可以启动 Python。如果没有安装 Python,你可以正常安装 Python,就像你有一个正常的 Linux 服务器并且你已经登录一样。以上是关于用于打开外壳、在外壳中运行命令并保持外壳运行的 Bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章