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

  • 博主最近在更新自己的项目的时候,打包好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进程,而是
原创文章 50 获赞 101 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42173451/article/details/105858445