该日志说到了两个问题,分别解答:
(1)ssh 登陆远程调用含有nohup java的启动脚本失败
(2)ssh 登陆远程调用启动脚本生效后,但是日志中出现中文乱码
场景:jenkins 192.168.1.2 生成了一个test_ssh.jar 要替换到远程的120.1.1.2的机器上/usr/test/路径下,并且重启test_ssh.jar服务,/usr/test/目录下如下:
stop.sh start.sh log.txt test_ssh.jar
stop.sh 的内容如下:
#!/bin/bash ps aux | grep -w test_ssh | grep -v "grep" | awk '{print $2}' |xargs kill -9
start.sh的内容如下:
#!/bin/sh nohup java -jar -Xms256m -Xmx512m test_ssh.jar > log.txt 2>&1 &
问题:我在jenkins 192.168.1.2上执行:
ssh root@120.1.1.2 "sh /usr/test/stop.sh" 成功了
ssh root@120.1.1.2 "cd /usr/test/; sh start.sh" 失败了,在120.1.1.2上查看进程,发现进程没起来。经过多次调试,发现是环境变量未生效,因为我在192.168.1.2上执行ssh root@120.1.1.2 " java -version " 显示找不到命令,但是在120.1.1.2上已经安装了java,且 java -version 可以正常执行。
换成ssh root@120.1.1.2 "cd /usr/test/; source /etc/profile; sh start.sh" 成功了。解决了第一个问题
启动脚本start.sh生效后,发现log.txt中中文乱码,但是我在120.1.1.2上手动执行start.sh,然后中文就不会乱码了,后面查资料发现是编码的问题,
换成ssh root@120.1.1.2 "cd /usr/test/; export LANG='zh_CN.UTF-8';source /etc/profile; sh start.sh" 成功了,可以解决第二个问题,中文乱码的问题。