代码改变世界

ssh 登陆远程nohup java 脚本无效,但设置生效后日志中文乱码

2020-03-03 12:05  加个小鸡腿  阅读(1985)  评论(1编辑  收藏  举报

该日志说到了两个问题,分别解答:

(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" 成功了,可以解决第二个问题,中文乱码的问题。

 

关联博客:Linux jenkins 生成的jar复制到远程linux系统后服务启动乱码