在屏幕上运行的 Java 应用程序启动一个进程,并且该子进程不在屏幕上

在屏幕上运行的 Java 应用程序启动一个进程,并且该子进程不在屏幕上

我在屏幕上运行 spigot 服务器,它是一个 Java 应用程序。当它崩溃并正常关闭时,它会调用重启脚本作为最后一项操作。

此脚本仅包含一个java -jar spigot.jar。问题是,每当服务器宕机时,它会自动重启,不再显示屏幕。不好,我想让重新启动的进程在同一个屏幕中运行。

我尝试了这个老screen -S test -p 0 -X stuff 'java -jar spigot.jar^M'办法,但是它将字符串发送到 java 应用程序控制台,而不是命令行。

因此我尝试将这个调用与父级分离,这个技巧理论上可以做到这一点:(sleep 20&);java -jar spigot.jar,但没有结果。

所以...我真的不知道该怎么办。请推荐一下。

答案1

它将字符串发送到 java 应用程序控制台,而不是命令行。

Java 需要一些时间才能退出。
重新启动脚本bash -c "sleep 20; screen -S test -p 0 -X stuff 'java -jar spigot.jar^M' "

答案2

# Creates detached session named spigot
screen -S spigot -d -m
# Runs "java -jar spigot.jar" in spigot session
screen -S spigot -X stuff "java -jar spigot.jar^M"

相关内容