Linux后台运行java的jar包

拟墨画扇 提交于 2019-11-29 19:34:40

前言

需要执行的jar为:sysrd-test.jar,并已经上传到了Linux服务器上!

直接运行方式

java -jar sysrd-test.jar
通过这种方式部署的时候,SecureCRT的shell是被锁定的,我们无法再执行其他的操作,如下:

[root@48 opt]# java -jar sysrd-test.jar 

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.4.4.RELEASE)

2017-05-25 14:13:27.909  INFO 29120 --- [           main] c.t.srd.tcldp.SrdTcldpApplication        : Starting SrdTcldpApplication v0.0.1-SNAPSHOT on 48.sysrd with PID 29120 (/opt/sysrd-test.jar started by root in /opt)
2017-05-25 14:13:27.915  INFO 29120 --- [           main] c.t.srd.tcldp.SrdTcldpApplication        : The following profiles are active: dev
2017-05-25 14:13:33.807  INFO 29120 --- [           main] org.quartz.impl.StdSchedulerFactory      : Using default implementation for ThreadExecutor
2017-05-25 14:13:33.828  INFO 29120 --- [           main] org.quartz.core.SchedulerSignalerImpl    : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2017-05-25 14:13:33.829  INFO 29120 --- [           main] org.quartz.core.QuartzScheduler          : Quartz Scheduler v.2.2.1 created.
2017-05-25 14:13:33.830  INFO 29120 --- [           main] org.quartz.simpl.RAMJobStore             : RAMJobStore initialized.
2017-05-25 14:13:33.832  INFO 29120 --- [           main] org.quartz.core.QuartzScheduler          : Scheduler meta-data: Quartz Scheduler (v2.2.
如果我们还想做其他的操作除非重新启动一个shell终端,或者是Ctrl+C结束当前的程序。

后台运行方式

java -jar sysrd-test.jar &
通过这种方式运行的程序,会在后台继续运行,我们也可以进行其他的操作,如果此时,我们想关闭刚才运行的程序,可以通过下面几种方式:

方式一:

ps aux // 查看所有运行的程序的进程
kill 进程号// 选中程序对应的进程,并kill掉
方式二:

关闭当前的shell。

也就是说,一旦我们关闭了这个shell,那么整个程序也就结束了。那么,如果我们想即使shell退出或关闭后,程序还能够运行,那怎么办了?

nohup方式运行

nohup java -jar sysrd-test.jar >log.log &
nohup表示不挂断运行命令,即使shell关闭了,程序依然会在后台运行。其中的>log.log表示将程序的输出重定向到log.log文件中,默认的情况下,是输出到当前目录下的nohup.out文件中

这种方式运行的程序,我们想要结束,怎么办了?同样两种方式

方式一:

ps aux // 查看所有运行的程序的进程
kill 进程号// 选中程序对应的进程,并kill掉
方式二:
1、使用jobs命令

输出如下:

[root@48 opt]# jobs
[1]+  Running                 nohup java -jar sysrd-test.jar > log.log &
jobs命令的作用是显示当前后台的运行的任务,每个任务会有一个对应的任务号,上面指令对应的任务号为1,即中括号中对应的数字。

2、fg 1

fg表示将后台任务回调到前台,后面跟的是后台任务对应的任务号。

3、Ctrl+C

最后,通过命令结束任务


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!