【问题标题】:Bash Script to Open a Shell, Run a Command in the Shell, & Keep Shell Running用于打开外壳、在外壳中运行命令并保持外壳运行的 Bash 脚本
【发布时间】:2021-11-21 16:52:06
【问题描述】:

我正在尝试使用 bash 脚本自动执行这些步骤

  1. 运行命令以访问程序的 shell(Kubernetes pod 的 bash shell)

    kubectl exec --stdin --tty hello-node-7567d9fdc9-zvz55 -- bash
    
  2. 在这个 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.
    >>> 
    
  3. 保持 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 进程。

标签: bash automation kubectl


【解决方案1】:

对于第 2 步,您可以使用 nohup 命令运行进程,即使用户注销进程也不会被杀死。之后,shell 会继续运行,以便您执行第 3 步

【讨论】:

  • 我希望 bash 脚本运行步骤 1-3 并最终在前台打开 python shell。我认为nohup 保持进程运行但保持在后台
  • 好的,一旦你有了第 1 步的交互式 Bash 会话,你就可以启动 Python。如果没有安装 Python,你可以正常安装 Python,就像你有一个正常的 Linux 服务器并且你已经登录一样。
猜你喜欢
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多