Java 如何创建脚本来重新启动JAR文件并在终端中获得输出?

Java 如何创建脚本来重新启动JAR文件并在终端中获得输出?,java,bash,shell,jar,Java,Bash,Shell,Jar,我使用了以下脚本来启动和停止jar文件 **start.sh** #!/bin/bash nohup nice java -jar Server.jar > ./Server.out 2>&1 & **stop.sh** #!/bin/bash kill `ps -ef | grep Server.jar | grep -v grep | awk '{ print $2 }'` 现在我想合并这两个脚本并创建一个新的重启脚本。我还希望将此脚本输出到终端,而不是文本文

我使用了以下脚本来启动和停止jar文件

**start.sh**
#!/bin/bash
nohup nice java -jar Server.jar > ./Server.out 2>&1 &

**stop.sh**
#!/bin/bash
kill `ps -ef | grep Server.jar | grep -v grep | awk '{ print $2 }'`
现在我想合并这两个脚本并创建一个新的重启脚本。我还希望将此脚本输出到终端,而不是文本文件(Server.out)


非常感谢您的任何输入/帮助。

您可以将两个脚本的命令放在彼此之后(
kill
第一,
java
第二),也可以按适当的顺序调用这两个脚本

其思想是重启基本上等同于杀死当前运行的版本并启动一个新版本

要避免输出到文件,请删除
./Server.out
部分

编辑:删除了关于删除重定向部分的注释,因为我误读了
kill
脚本的
grep
部分


更新:缺少脚本的
nohup
部分:使用
nohup
时,需要将输出重定向到文件,因为进程与终端分离(请参阅)。如果您确实想在终端中查看输出,请删除
nohup
以及文件的重定向,您可以将两个sript的命令放在彼此之后(
kill
第一,
java
第二),或者按照适当的顺序调用两个scipt

其思想是重启基本上等同于杀死当前运行的版本并启动一个新版本

要避免输出到文件,请删除
./Server.out
部分

编辑:删除了关于删除重定向部分的注释,因为我误读了
kill
脚本的
grep
部分


更新:缺少脚本的
nohup
部分:使用
nohup
时,需要将输出重定向到文件,因为进程与终端分离(请参阅)。如果您确实想在终端中查看输出,请删除
nohup
以及文件重定向

谢谢您的回复,Attila,我想您没有正确理解我的问题,希望通过运行单个脚本重新启动Server.jar文件并在终端中获得该输出。是的,我的建议是将“stop.sh”和将“start.sh”转换为“restart.sh”,因此您只有一个执行重新启动(kill+start)的shell脚本。如果删除
./Server.out
部分,您将在终端上获得输出(而不是在Server.out文件中)。您也可以使用
tee
命令将输出保存在终端和文件中。感谢您的回复和建议。您知道如何在cron作业中使用restart.sh脚本吗。我对cron作业没有任何经验,但网站解释了cron的工作原理,并提供了有关设置的示例,但仍然没有获得从脚本中删除“>./Server.out”部分后在终端中输出。感谢您的回复Attila,我认为您没有正确理解我的问题,希望通过运行单个脚本重新启动Server.jar文件并在终端中获得该输出。是的,我的建议是将“stop.sh”和“start.sh”的内容放入“restart.sh”中,因此您只有一个执行重新启动(kill+start)的shell脚本。如果删除
./Server.out
部分,将在终端上获得输出(而不是在Server.out文件中)。您还可以使用
tee
命令将输出保存在终端和文件中。我感谢你的答复和建议。你知道如何将restart.sh脚本放在cron作业中吗?我对cron作业没有经验,但网站解释了cron的工作原理,并提供了在从脚本中删除“>./Server.out”部分后仍然无法在终端中获得输出的设置示例。