如何在不关闭从终端启动的 Android 模拟器的情况下关闭终端

如何在不关闭从终端启动的 Android 模拟器的情况下关闭终端

我知道从命令行启动的任何进程都附加到命令行进程,所以当我关闭终端时,从该 shell 进程启动的任何进程都将被终止。

所以如果我想启动一个模拟器

emulator -av emu1 -ports 5000,5000 &

它会创建后台模拟器进程,但如果我关闭终端,模拟器仍然会死亡。

我如何启动模拟器,以便在关闭终端后模拟器不会被杀死?

谢谢

答案1

为了防止从终端启动的任何进程在启动该进程的终端关闭时被终止,您需要在模拟器命令前添加禁止或者设置
禁止是 no hang-ups 的缩写,你可能希望将输出重定向到 /dev/null,否则它会生成一个禁止运行文件。末尾的 & 符号使命令作为后台进程运行。用法示例:

$ nohup ./emulator -avd Nexus_5X_API_29_x86 >/dev/null &

设置在新的会话中运行进程或程序,防止在启动该进程或程序的终端关闭时将其终止。使用示例:

$ sudo setsid ./emulator -avd Nexus_5X_API_29_x86

注意:在我的系统上,我必须先进入〜/ Android的/ SDK /模拟器运行模拟器,以防任何人尝试从命令行直接运行模拟器并收到未找到命令的错误。

请参阅手册页禁止或者设置了解更多信息。

答案2

您可以尝试使用screen。如果尚未安装,请安装

sudo apt install screen

开始屏幕

screen

屏幕会话启动后,发出命令

emulator -av emu1 -ports 5000,5000

按下ctrl+a然后d

退出终端并打开一个新终端进行验证。重新连接正在运行的会话

screen -r

答案3

从终端启动 Android 模拟器,这样关闭终端后它就不会被杀死。

如果我们在行末使用“&”符号启动 Android 模拟器,则在关闭终端后它将自行终止。为了解决这个问题,我们可以使用screen特殊参数-dm

screen -dm emulator <emulator parameters>

如果没有安装屏幕:sudo install screen

来自手册页

-dm 以“分离”模式启动屏幕。这将创建一个新会话,但不会附加到它。这对于系统启动脚本很有用。

最初,这个命令是由@Misantorp,作为对他的回答的评论。

相关内容