问题描述
centos7 ,jdk1.8, nacos2.1.1
crontab开机后调用shell脚本启动nacos 、skywalking 、sentinel
nacos的start.out日志。 nacos启动成功后,过了一会儿关掉了,这就奇怪了。reboot几次机器,问题依旧。
单独在黑窗口运行bash startMicroServer.sh 是正常的。
看他的startup.sh ,也有nohup + &后台运行。按理关黑窗口照样跑的。
#最初的写法:
root@node5-db ~]# crontab -l
@reboot /root/myScript/startMicroServer.sh
[root@node5-db ~]# cat /root/myScript/startMicroServer.sh
#!/bin/bash
#01 nacos
#http://192.168.79.35:8848/nacos
cd /root/k8sFile/project/microServer/01-nacos/nacos/bin
bash startup.sh -m standalone
sleep 30
#02 sentinel
#http://192.168.79.35:8718/
cd /root/k8sFile/project/microServer/02-sentinel
nohup java -Dserver.port=8718 \
-Dcsp.sentinel.dashboard.server=localhost:8718 \
-Dproject.name=sentinel-dashboard \
-Dcsp.sentinel.api.port.port=8719 \
-jar sentinel-dashboard-1.8.5.jar &> /var/log/sentinel.log &
sleep 30
#03 skywalking
#http://192.168.79.35:8080/
cd /root/k8sFile/project/microServer/03-skywalking/apache-skywalking-apm-bin/bin
sh startup.sh
排查过程:
在/var/log/cron看不出可用的消息。在crontab加上重定向日志
@reboot /root/myScript/startMicroServer.sh >/tmp/startMicro.log 2>&1
大致日志截图(/var/log/messages的) 与startMicro.log类似内容:
#文字版:
2689 Apr 21 11:59:14 node5-db systemd: mdcheck_start.timer lacks value setting. Refusing.
42690 Apr 21 11:59:15 node5-db systemd: Starting nacos...
42691 Apr 21 11:59:15 node5-db startup.sh: which: no javac in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
42692 Apr 21 11:59:15 node5-db startup.sh: readlink: 缺少操作数
42693 Apr 21 11:59:15 node5-db startup.sh: Try 'readlink --help' for more information.
42694 Apr 21 11:59:15 node5-db startup.sh: dirname: 缺少操作数
42695 Apr 21 11:59:15 node5-db startup.sh: Try 'dirname --help' for more information.
42696 Apr 21 11:59:15 node5-db startup.sh: ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !!
42697 Apr 21 11:59:15 node5-db systemd: nacos.service: control process exited, code=exited status=1
42698 Apr 21 11:59:15 node5-db systemd: Failed to start nacos.
42699 Apr 21 11:59:15 node5-db systemd: Unit nacos.service entered failed state.
42700 Apr 21 11:59:15 node5-db systemd: nacos.service failed.
42701 Apr 21 12:00:01 node5-db systemd: Started Session 6 of user root.
42702 Apr 21 12:00:45 node5-db systemd: Starting Cleanup of Temporary Directories...
42703 Apr 21 12:00:45 node5-db systemd: Started Cleanup of Temporary Directories.
42704 Apr 21 12:01:01 node5-db systemd: Started Session 7 of user root.
42705 Apr 21 12:06:27 node5-db systemd: Starting nacos...
42706 Apr 21 12:06:27 node5-db startup.sh: which: no javac in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
42707 Apr 21 12:06:27 node5-db startup.sh: readlink: 缺少操作数
42708 Apr 21 12:06:27 node5-db startup.sh: Try 'readlink --help' for more information.
42709 Apr 21 12:06:27 node5-db startup.sh: dirname: 缺少操作数
42710 Apr 21 12:06:27 node5-db startup.sh: Try 'dirname --help' for more information.
42711 Apr 21 12:06:27 node5-db startup.sh: ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !!
42712 Apr 21 12:06:27 node5-db systemd: nacos.service: control process exited, code=exited status=1
42713 Apr 21 12:06:27 node5-db systemd: Failed to start nacos.
42714 Apr 21 12:06:27 node5-db systemd: Unit nacos.service entered failed state.
42715 Apr 21 12:06:27 node5-db systemd: nacos.service failed.
42716 Apr 21 12:08:50 node5-db yum[2237]: Erased: parfait-0.5.4-2.el7.noarch
处理方法:
在脚本中加上java环境变量。
export JAVA_HOME=/opt/software/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
小结
这个让我想到了制作tomcat启动脚本时,也是要添加java环境变量。
起初被nacos的start.out报错信息困惑了。以后写crontab时,要追加日志信息log,方便排查。
@reboot /root/myScript/startMicroServer.sh >/tmp/startMicro.log 2>&1
以后碰到java项目类似的启动,最好先在脚本添加java环境变量。
当然也可以使用systemd来开启/关闭nacos