服务器项目部署——后台启动、关闭、替换踩坑

本文详细介绍了如何在不中断服务的情况下,通过杀死旧进程并替换jar包来重启Java项目,同时确保日志信息正确重定向至新日志文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 博主最近在更新自己的项目的时候,打包好jar换下之前的jar,然后准备重启项目,遇到了些问题,网上关于这些说的不是很细节,故写篇博客记录下。
  • 我们后台启动项目一般是:nohup java -jar 包名.jar >log.txt &。这种方式会在jar目录下生成log.txt。这里我们先查看当前项目是否还在运行:ps -ef | grep blog-backend-0.0.1-SNAPSHOT.jar,可以看到如下结果(例图):
    在这里插入图片描述
  • grep是默认就会有的,不用管,java字样的就是我们正在跑的项目,替换前需要做好日志备份,由于只是个人项目,其他细节就不多说了。我们准备完毕后杀死该进程:kill 32733或者kill -9 32733,这串数字是项目进程对应的PID
  • 杀掉后,再次执行ps -ef | grep blog-backend-0.0.1-SNAPSHOT.jar查看是否只有grep了,又或者都没有了,那么此时就可以替换上新的项目jar包了:nohup java -jar blog-backend-0.0.1-SNAPSHOT.jar > /log/blog_v1.3.txt 2>&1 &,这里可能会报nohup: redirecting stderr to stdout有关错误,请检查,你的第一个“>”后边跟的是不是你的日志目录,还有最好把之前那个项目目录下生成的nohup.txt(如果有的话,我这里是log.txt)备份并删除,这里这个尖括号作用是将打印信息重定向到日志文件
  • 这里解释下第二个">",左边的2代表的是标准错误——stderr,左边也可以是1——标准输出stdout,2/1> 表示将标准错误/输出重定向,右边可以是上边&1或者&2,分别表示重定向到标准输出和标准错误,后边也可以跟文件名:
    • 2> stderr.log
    • 1> stdout.log
      这里不再细谈
  • 注意,最后边的"&"不能掉,它的前边要有一个空格,请检查
  • 关于kill进程,我不知道有没有更好的不kill进程,而是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值