我在屏幕上运行 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"