nohup命令让服务器上的程序在后台一直运行,退出终端也可以保持程序运行

(本博文的方法对于阿里云和腾讯与服务器都适用 )

场景:

部署一个后端程序(climate-0.0.1-SNAPSHOT.jar)到我腾讯云的服务器上,常规启动命令如下:

1
java -jar climate-0.0.1-SNAPSHOT.jar

上图表示项目部署成功,便可以在浏览器上进行访问

但是关闭终端后,就不能访问了,也就达不到上线的效果。

而我们想项目程序在关闭退出终端后,也一样继续运行,

这时候需要使用 nohup 命令启动(该命令可以在你退出帐户/关闭终端之后继续运行相应的进程)

输入如下命令:

1
nohup java -jar climate-0.0.1-SNAPSHOT.jar

但是会报错(表示:执行nohup命令的时候,经常会没有写入权限的错误)

1、原因

是因为使用 nohup 会产生日志文件,默认写入到 nohup.out

2、解决

将 nohup 的日志输出到 /dev/null,这个目录会让所有到它这的信息自动消失

1
nohup java -jar climate-0.0.1-SNAPSHOT.jar > /dev/null 2> /dev/null &

其它解决方法:
就是在末尾直接加一个&就就能够直接在后台运行

1
nohup java -jar climate-0.0.1-SNAPSHOT.jar & 

停止进程

如果想停止进程运行的话,可通过命令(kill -9 进程号PID)进程号来杀死

另外也可以使用 ps -def | grep “进程名” 命令来查找PID。

找到 PID 后,就可以使用 kill PID 来删除。

1
kill -9  进程号PID

如果发现启动时,查看日志发现端口号被占了

lsof -i:[端口号] 查看使用某端口的进程

1
lsof -i:[端口号] 

然后使用kill杀掉进城后再启动

终止后台运行的进程

1
kill -9  进程号PID

比如:发现 6868 端口被占用了

image-20230430132617648