我一直在寻找和screen
options之间差异的解释。我知道这两个选项都用于使屏幕在后台运行/在创建后将其分离。我读到过差异与分叉有关,但我不明白。-dm
-Dm
我用screen
它来包含我的 Minecraft 服务器的控制台。当我直接在simple
systemd 服务中调用它时,一切都运行正常。但是,当我将调用移至脚本并从服务中调用该脚本时,服务会在脚本退出时退出,从而使用该ExecStop
命令停止 Minecraft 服务器。谷歌搜索显示我应该使用forking
服务来防止这种情况,但这并不能解决问题,而且我不能使用oneshot
不退出的服务,因为我需要系统能够检测 Minecraft 服务器是否仍在运行。
我目前的调用screen
方式如下:
screen -DmS minecraft java -jar server.jar nogui &
我使用来&
分叉进程并防止屏幕冻结外壳。
由于服务因未正确分叉而失败,并且-Dm
和-dm
选项之间的差异与分叉有关,因此我怀疑问题就出在这里。
有人可以向我解释一下这些选项之间的实际区别是什么,以及如何在分叉服务中正确使用屏幕?
提前致谢。
答案1
我只是在这里引用手册:
-d -m Start screen in "detached" mode. This creates a new session but
doesn't attach to it. This is useful for system startup scripts.
-D -m This also starts screen in "detached" mode, but doesn't fork a new process.
The command exits if the session terminates.