Spring Boot jar包程序部署服务器常驻后台执行

描述

对于Spring Boot导出的jar包程序,当远程服务器执行的时候,一旦关闭了当前终端,程序也被迫停止运行了。希望的是让它常驻后台执行,不受启动其终端关闭与否的影响。


方法

Linux系统可以使用 ..  & 或者 nohub .. &

比如 ping 指令,可以直接
nohup ping www.google.com &

对于Spring Boot这种导出的jar包,一样操作

java -jar xx.jar > log 2>&1 &

这里顺便打印输出到了日志文件上,注意的是log文件需要先创建chmod授权

补充: 2>&1

  1. & 1 更准确的说是文件描述符 1, 而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.其中0表示键盘输入 1表示屏幕输出 2表示错误输出.把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面。
  2. command >out.file 2>&1 &
    command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个& , 是让该命令在后台执行
    => 详情参考
关闭

对于已经后台的执行的进场,可以通过ps命令查看对应pid,直接sudo kill pid即可。

admin@chgl16:~/project/chatroom$ ps
  PID TTY          TIME CMD
22951 pts/0    00:00:00 bash
22977 pts/0    00:00:00 top
23111 pts/0    00:00:12 java   #####
23332 pts/0    00:00:00 ps

ps不带参数可以看到最近执行的几个进程

你可能感兴趣的:(Spring,Boot,Linux,系统)