启动systemd-nspawn并执行里面的命令

启动systemd-nspawn并执行里面的命令

我没有找到这样的问题。我有一个 bash 脚本(在 Debian 中运行)可以启动一个systemd-nspawn会话。之后,我想继续执行我的脚本,因为我在生成的机器中:

#!/bin/bash
systemd-nspawn -q --bind /usr/bin/qemu-arm-static -D /mnt/project /bin/bash

apt-get update
apt-get -y upgrade

执行systemd-nspawn命令后,脚本暂停,控制台提示符位于生成的系统内。当我退出时,脚本恢复运行,但在本地计算机中。

答案1

您可以通过以下几种方法来解决问题:

  1. 创建一个在 systemd-nspawn 容器内执行的脚本,并将要运行的命令放入其中 ( systemd-nspawn -D .. /your-script)。如果要在运行命令后获取交互式 shell,请exec bash -i在脚本末尾放置类似 的内容。

  2. 如果您想保留当前脚本,可以将命令作为输入提供给 bash:

     #!/bin/bash
     systemd-nspawn --pipe -q --bind /usr/bin/qemu-arm-static -D /mnt/project /bin/bash << EOF
     apt-get update
     apt-get -y upgrade
     EOF
    

    如果您之后不需要交互式 shell,那么这种方法就可以正常工作。

相关内容