在工作中有这样的需求:需要使用web页面展示项目组所有的测试环境的服务信息和状态,并且根据状态进行启动或停止。
后台的java实现是用ssh连接远端的服务器,ChannelExec 执行linux command. 但是实际操作中发现启动jar包的命令 :nohup java -jar /xxx.jar 执行后远端机器没有反应,参考资料加了重定向也不行。
后面尝试发现,其实是没有权限获取远端机器的环境变量,无法执行java命令,和nohup没有关系。
解决办法是 nohup /java的安装目录/bin/java -jar xxxx.jar
具体ssh的命令如下:
ssh -i /xxxx指定公钥地址 user@host “nohup /xxxjavahome/bin/java /xxxjarhome > /dev/null 2> &</