• Jenkins-ssh远程执行nohup- java无法退出


    一,初步

    #执行方式
    ssh  192.168.2.103    " nohup  java -jar /home/a/ipf/ight/feedback/ixxxedback-platform-1.0-SNAPSHOT.jar  > out.file 2>&1  &"
    
    执行完这边立即断开,日志写在指定文件。
    参考文章:
    https://blog.csdn.net/oneinmore/article/details/50073443
    
    示例:
      ssh target "./test.sh"                            # 等待命令完成后退出;本地Ctrl+C中断ssh会话,不会中断test.sh的执行(bash父进程变为1)(与登录终端执行命令而终端连接断开时的行为不一样)
      ssh target "./test.sh &"                        # 等待命令完成后退出;本地Ctrl+C中断ssh会话,不会中断test.sh的执行(bash父进程本来就为1)
      ssh target "nohup ./test.sh &"                          # 等待命令完成后退出;本地Ctrl+C中断ssh会话,不会中断test.sh的执行(bash父进程本来就为1)
      ssh target "nohup ./test.sh >/dev/null 2>&1 &" # 启动test.sh执行后就会退出(bash父进程本来就为1)
      ssh target "./test.sh >/dev/null 2>&1 &"            # 启动test.sh执行后就会退出(bash父进程本来就为1),这也表明ssh不退出与nohup命令本身没有什么关系
    
    
    
    

    jenkins ssh远程执行nohup Java 后无法断开

    
    #问题
    Jenkins  exec 执行shell 脚本,远程启动jar 包后控制台信息一直在转圈,无法正常退出。命令为:
    
    ssh  user@IP " source    /etc/profile   &&  nohup  java   -jar xxxxx.jar  >  `date  +%m%d`-out.file 2>&1 &"
        
    查看部署服务器服务启动正常。
    在Jenkins服务器上看进程   :
    ps  -ef |grep  jenkins   发现子进程无法退出,即是执行启动命令,如上。
    
    手动杀死后,部署服务器没有异常,说明nohup 没有异常,只是ssh  执行后没有退出。
    
    
    su   jenkins   进入后手动执行如上命令;没有正常退出,去掉source   /etc/profile  重试, 无法正常启动jar 包,应该是没有环境变量。使用绝对路径执行:
    
    ssh  user@IP " nohup   /path/to/bin/java   -jar xxxxx.jar  >  `date  +%m%d`-out.file 2>&1 &"   后成功,原因是source 引起的,导致ssh  执行后无法退出,具体原理不清楚。
    
    
    
  • 相关阅读:
    SQl 语句(常见) 新建,删除,修改表结构
    3步把您的java程序转换为webservice
    JSP标签中不要省略引号
    图文并茂——使用xfire编写webservice,并通过C#调用
    Java取随机数
    JAVA获取文件本身所在的磁盘位置
    XFire 入门
    mysql复制表和表结构
    遍历HashMap及获取所有的Key值
    MyEclipse+struts+Hibernate配置开发
  • 原文地址:https://www.cnblogs.com/g2thend/p/11702852.html
Copyright © 2020-2023  润新知