在 linux 服务器上运行 Jar 文件时通常的方法是执行执行命令:

$ java -jar test.jar

这种方式特点是 ssh 窗口关闭时,程序中止运行. 或者是运行时没法切出去执行其他任务。

使用nohup 放到后台

nohup java -jar test.jar &
# nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
# 当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中
# 除非另外指定了输出文件。
nohup java -jar test.jar >temp.txt &  # 制定日志输出文件

查看、切换后台程序

jobs # 那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。

fg 2 # 如果想将某个作业调回前台控制,只需要 fg + 编号即可。

关闭shell后程序中断

  • 不能点终端的叉,只能使用exit退出
exit #logout
  • 使用disown断开程序连接
nohup ./MISS.GO.PayNotifyService & disown # 直接使用disown

## 或者手动disown
nohup ./MISS.GO.PayNotifyService &

jobs -l #  查询任务编号

disown [查到的程序编号] # 手动断开

查看某端口占用的线程的 pid

netstat -nlp |grep :8080

Refence

关于Nohup的若干问题及解释