我正在尝试以特殊的方式运行screen
(我正在制作一个不同寻常的脚本),但它没有正常工作。
我的脚本:
#!/bin/bash
#startserver
set -m
cd /home/USER/SERVER_FOLDER/
screen -Dm -S SERVER java -Xmx768M -Xms768M -jar ./JARFILE.jar $@ &
PID=$!
echo $PID > ./.mc.pid
(sleep 0.5; sudo /usr/bin/oom-priority $PID) &
(wait $PID; startserver_after) &
screen -r $PID.SERVER
/usr/bin/oom-priority
是我创建的一个命令,用于将pid的优先级设置为-16
。
startserver_after
是我想在java
退出后运行的命令。
这不起作用是因为我无法恢复screen
。查看screen
的手册:
-D -m This also starts screen in "detached" mode, but doesn't fork a new process. The command exits if the session terminates.
这意味着:
screen
的pid
应该与java
的相同,但不管怎样都可以。- 它仍然是
screen
,所以我应该能够通过screen -r SERVER
访问它(但我不能)。
当我运行此行时,如果没有把它放在后台并添加 ampersand 符号,它就会一直等到 java
退出而没有输出。
screen -r SERVER
返回什么? - mofoescreen -ls
返回什么? - pawel7318