在服务器上运行java jar文件作为后台进程
我需要在服务器上运行一个java jar,以便在两个应用程序之间进行通信。 我已经编写了两个shell脚本来运行它,但是一旦启动该脚本,我就不能closures/终止该进程。 如果我按ctrl + C或closures控制台,服务器将closures。 任何人都可以帮助我如何修改这个脚本作为一个普通的服务器运行?
#!/bin/sh java -jar /web/server.jar echo $! #> startupApp.pid 
	
你可以试试这个:
 #!/bin/sh nohup java -jar /web/server.jar & 
&符号,将程序切换到后台运行。
nohup实用程序使命令作为参数在后台运行,即使在注销后也是如此。
如果你使用的是Ubuntu并且有“Upstart”(http://upstart.ubuntu.com/),你可以试试这个:;
 创build/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 start和service yourservice stop命令。 你可以尾巴/var/log/yourservice.log来validation它的工作。 
如果你只想从控制台运行你的jar,而不占用控制台窗口,你可以这样做:
 java -jar /web/server.jar > /var/log/yourservice.log 2>&1 
Systemd现在运行在大部分发行版中
 find你的用户定义的服务我的是在usr/lib/systemd/system/ 
 用你最喜欢的文本编辑器创build一个文本文件名称为whatever_you_want.service 
  模板 
 [Unit] Description=webserver Daemon [Service] ExecStart=/usr/bin/java -jar /web/server.jar User=user [Install] WantedBy=multi-user.target 
  运行你的服务 
  作为超级用户 
 # 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