服务器作为后台进程在运行Java jar文件(Run java jar file on a serv

2019-06-17 21:11发布

我需要为了两个应用程序之间的通信运行在服务器的Java罐子。 我已经写了两个shell脚本来运行它,但一旦我启动该脚本我不能关闭/终止进程。 如果我按Ctrl + C或关闭控制台,服务器将关闭。 谁能帮助我如何修改这个脚本作为一个正常的服务器上运行?

 #!/bin/sh
java -jar /web/server.jar
echo $! 
#> startupApp.pid

Answer 1:

你可以试试这个:

#!/bin/sh
nohup java -jar /web/server.jar &

&符号,切换程序在后台运行。

nohup这个工具使得在你登出即使在后台运行的参数传递的命令。



Answer 2:

如果您在使用Ubuntu和有“暴发户”(http://upstart.ubuntu.com/).you可以试试这个:

创建/var/init/yourservice.conf

用下面的内容

description "Your Java Service"  
author "You"  

start on runlevel [3]  
stop on shutdown  

expect fork  

script     
    cd /web 
    java -jar server.jar >/var/log/yourservice.log 2>&1  
    emit yourservice_running  
end script  

现在,您可以发出service yourservice startservice yourservice stop命令。 您可以尾巴/var/log/yourservice.log ,以验证它的工作。

如果你只是想没有它占用的控制台窗口从控制台运行你的罐子,你可以这样做:

java -jar /web/server.jar > /var/log/yourservice.log 2>&1


Answer 3:

Systemd现在运行在大多数发行版

步骤1:

找到你的用户定义的服务我的是在/usr/lib/systemd/system/

第2步:

用你喜欢的文本编辑器,它的名称创建一个文本文件whatever_you_want.service

第3步:

把下面的模板到文件whatever_you_want.service

[Unit]
Description=webserver Daemon

[Service]
ExecStart=/usr/bin/java -jar /web/server.jar
User=user

[Install]
WantedBy=multi-user.target

第4步:

运行服务
作为超级用户

$ systemctl start whatever_you_want.service # starts the service
$ systemctl enable whatever_you_want.service # auto starts the service
$ systemctl disable whatever_you_want.service # stops autostart
$ systemctl stop whatever_you_want.service # stops the service
$ systemctl restart whatever_you_want.service # restarts the service


文章来源: Run java jar file on a server as background process