用于打开外壳、在外壳中运行命令并保持外壳运行的 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 脚本的主要内容,如果未能解决你的问题,请参考以下文章

git difftool 持有外壳

使用“bash 脚本”将命令发送到“应用程序的外壳”[重复]

创建自定义外壳

命令行程序增加 GUI 外壳

为啥谷歌云外壳会在 1 小时后自动断开连接

了解内核引导外壳