gpt4 book ai didi

linux - 带屏幕的异步 shell 命令

转载 作者:太空狗 更新时间:2023-10-29 11:18:56 25 4
gpt4 key购买 nike

我正在尝试使用 ant+scp 在远程服务器上执行脚本。

远程服务器上的脚本很简单,它启动了一个用java编写的游戏服务器:

游戏服务器.sh:

java -Xms500M -Xmx500M -jar game.jar

Ant 构建.xml:

<?xml version="1.0" ?>
<project default="restart_game_server" name="server">
<target name="restart_game_server">
<sshexec host="x.x.x.x" username="root" password="xxx" command="cd xxx; ./game_server.sh" trust="true" />
</target>
</project>

当我在终端 (mac os) 中运行命令“ant”时,远程服务器上的 game_server.sh 已成功执行,但问题是:

“ant”命令被阻止,因为“game_server.sh”永远不会返回。

我试图通过在“屏幕”中启动“game_server”来解决这个问题,但我不知道如何在 shell 脚本中执行此操作,我尝试了类似的方法:

# kill the game sever first
fuser -k -n tcp 9988
# resume the last screen or start a new one
screen -R
# move to the folder where the script is located
cd xxxx
# run script
./game_server.sh

但我不知道如何使用 shell 命令而不是键盘 (c + a + d) 退出屏幕

任何建议将不胜感激,谢谢:)

编辑:

尝试使用“&”的方式还是被屏蔽了。

这是 ant 命令的输出,你可以看到它是如何被阻止的:

root: ant
Buildfile: build.xml

restart_game_server:
[sshexec] Connecting to x.x.x.x.x:22
[sshexec] cmd : fuser -k -n tcp 9988; cd xxxxx; ./game_server.sh &
[sshexec] 9988/tcp:
[sshexec] 12729
[sshexec]
[sshexec] game sever log
[sshexec] game sever log
[sshexec] game sever log
[sshexec] game sever log
[sshexec] game sever log
[sshexec] game sever log
.......
BLOCKED !!!!!

最佳答案

你可以尝试像这样在后台运行 game_server.sh 而根本不使用屏幕:

./game_server.sh &

或者,您可以尝试像这样更改您的 build.xml:

<?xml version="1.0" ?>
<project default="restart_game_server" name="server">
<target name="restart_game_server">
<sshexec host="x.x.x.x" username="root" password="xxx" command="cd xxx; ./game_server.sh &" trust="true" />
</target>
</project>

关于linux - 带屏幕的异步 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26944454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com