我退出后我的屏幕进程还会继续吗?

我退出后我的屏幕进程还会继续吗?

我以 root 用户身份输入sudo su -然后打开一个屏幕screen。然后我运行命令来启动我的 Minecraft 服务器。

之后,我按下Ctrl-A和分离了屏幕d。退出计算机后(显然没有关闭计算机),该进程(我的服务器)是否会继续运行?

答案1

Screen 就是用来做这个的。你可以提前通过以下方式进行测试:

$ sudo su -- # Note that you should use 2 dashes, here, if you use any (you don't have to, `sudo su` would do the same thing).
# screen
# # Press [enter].
# sleep 100 && echo foo
# # Press [ctrl]+[A], then [D].
# # Press [ctrl]+[D].
$ sudo su
# screen -r
# # You'll be shown the line you entered before, again. After some time (100 seconds after you entered the 4th line), "foo" will be printed.

所有以 开头的行都$以普通用户身份执行。所有以 开头的行都#以 root 身份执行。#行后面的行标记单行注释的开始。

在第一行中,您以 root 身份登录。您可能应该弄清楚是否有必要以 root 身份运行 Minecraft 服务器。

在第二行中输入screen

按下回车键只是为了让打开时不带参数的文本屏幕显示消失。

第四行执行的是代表你的 Minecraft 服务器的命令,休眠 100 秒后打印“foo”。

通过按下crtl+A然后按下D,您可以断开与第 5 行屏幕的连接。

在第 6 行中,按ctrl+可断开与终端会话的连接D。请注意,这会保持终端打开,因为您是以较低级别的普通用户身份登录的。您只能在最高级别断开与终端会话的连接。您以 root 身份注销,exit如果这样做有助于您了解自己确实在注销,那么不妨这样做。您也可以以普通用户身份注销。只需再次按ctrl+D即可。如果这是最低级别并且您在 tty 上,您将再次看到登录屏幕。如果这是最低级别并且您正在使用终端仿真器,终端窗口将关闭。这绝对没有问题。

在第 7 行,您再次以 root 身份登录。

在第 8 行,奇迹发生了。你screen使用 flag 进行调用r,该标志取自screen手册页 (run man screen),其含义为:

重新连接会话,如果需要,请先将其分离。

由于您只有一个会话screen,因此您可以返回正确的会话。

一段时间后,“foo”将打印在屏幕上,这意味着当您连接到屏幕或稍后连接到屏幕时,您将在终端上看到它。您的所有命令及其输出仍然可见。执行发生在您不一定登录时。

答案2

是的,这是 gnu-screen 的要点之一。即使作为普通用户,您也可以使用 来检查在分离 screen 会话后它是否仍在运行pgrep screen。您也可以运行 pgrep minecraft。我不知道启动 minecraft 的命令,但您可以使用 pgrep 检查 minecraft 服务器进程是否正在运行,但我不知道命令。

相关内容