本项目采用是springboot框架,今天在启动项目时发生了一个错误,让我慌了好久,最后还是鹏哥帮忙解决的。
下面说一下问题产生的原因:
在启动项目时 我采用了 shell命令启动:nohup java -Xmx4096m -jar /mnt/yylm/yylm-core-0.0.1-SNAPSHOT-1.1.8.jar --spring.profiles.active=master > "yylm_"`date +%Y%m%d%H%M%S`.log 2>&1 &
然而 就是这么一串看似简单的命令 却给我带了一个麻烦,因为自己的不细心错将命令行后面的 & 符号丢失 即执行的是nohup java -Xmx4096m -jar /mnt/yylm/yylm-core-0.0.1-SNAPSHOT-1.1.8.jar --spring.profiles.active=master > "yylm_"`date +%Y%m%d%H%M%S`.log 2>&1 ,当执行完这个命令后我像往常一样去找日志查看启动情况,执行了tail -f 命令后 发现没有日志打印,并且 查看进程也无法找到,我以为是项目没有启动,就又去执行相同的命令(丢了符号的),还是无法启动。这就让我慌了,头一次在没有人看着的情况下自己部署生产环境,就遇到这种问题,让我十分慌乱。刚以为是不是磁盘满了,没有启动起来,但是查看时 发现磁盘还是很闲的,排除了这个可能性。下面是报错截图:

感觉过了好久(当然只是自己觉得,因为慌乱嘛),鹏哥帮忙解决了问题。看着鹏哥的命令行截图,才发现原来是后面少了个&。发现了问题的所在就去专门查了一下这行命令的用法(之前只是copy用,并不知道具体是做什么):
首先: nohup xxxx & 结合使用 nohup用途:不挂断的运行命令 &用途:在后台运行
Java -jar xxx.jar 启动jar包
spring.profiles.active=master 配置启动执行的配置文件
java -Xmx4096 设置jvm参数(最大可用内存)
> xx.log 2>&1 将输出的 std.out std.err 都重定向到 xx.log 文件(2-->标准错误输出,1--->标准输出)
注意:
nohup java -Xmx4096m -jar /mnt/yylm/yylm-core-0.0.1-SNAPSHOT-1.1.8.jar --spring.profiles.active=master > "yylm_"`date +%Y%m%d%H%M%S`.log 2>&1 虽然丢下了&符号,但是项目也已经启动了,只是被挂起,无法看到输出,进程一直都在。
上面就是我在这次自己部署中遇到的问题:
总结自身问题所在:
1.就像鹏哥所说的那样,平时不努力,除了事情就慌乱了,不知道怎么解决了。
2.不注意细节,平时觉得用着没啥问题就从来不回去管原理,为什么这样执行就可以运行呢?
3.不细心,换个角度,如果不丢下&符号,是不是就不会出现这个问题。
总而言之,就是自己太菜,还要努力。。。。。现在是晚上12.22了,睡觉了,晚安。
网友评论