Unverified Commit 9a8d07cb authored by 乔占卫's avatar 乔占卫 Committed by GitHub
Browse files

Merge pull request #430 from qiaozhanwei/branch-1.0.2

kill task need kill sub pids
parents f8b98d3c 34133365
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -220,7 +220,7 @@ public class OSUtils {
   * @throws IOException
   */
  public static String exeShell(String command) throws IOException {
    return ShellExecutor.execCommand("groups");
    return ShellExecutor.execCommand(command);
  }

  /**
+22 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package cn.escheduler.server.utils;

import cn.escheduler.common.Constants;
import cn.escheduler.common.utils.CommonUtils;
import cn.escheduler.common.utils.OSUtils;
import cn.escheduler.dao.model.TaskInstance;
import cn.escheduler.server.rpc.LogClient;
import org.apache.commons.io.FileUtils;
@@ -33,6 +34,7 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


/**
 *  mainly used to get the start command line of a process
 */
@@ -139,6 +141,8 @@ public class ProcessUtils {

          {' ', '\t', '<', '>'}, {' ', '\t'}};

  private static Matcher matcher;

  private static String createCommandLine(int verificationType, final String executablePath, final String[] cmd) {
    StringBuilder cmdbuf = new StringBuilder(80);

@@ -256,7 +260,7 @@ public class ProcessUtils {
          return ;
      }

      String cmd = String.format("sudo kill -9 %d", processId);
      String cmd = String.format("sudo kill -9 %s", getPidsStr(processId));

      logger.info("process id:{}, cmd:{}", processId, cmd);

@@ -270,6 +274,23 @@ public class ProcessUtils {
    }
  }

  /**
   * get pids str
   * @param processId
   * @return
   * @throws Exception
   */
  private static String getPidsStr(int processId)throws Exception{
    StringBuilder sb = new StringBuilder();
    // pstree -p pid get sub pids
    String pids = OSUtils.exeCmd("pstree -p " +processId+ "");
    Matcher mat = Pattern.compile("(\\d+)").matcher(pids);
    while (mat.find()){
      sb.append(mat.group()+" ");
    }
    return sb.toString().trim();
  }

  /**
   * find logs and kill yarn tasks
   * @param taskInstance