Java Code Examples for org.apache.hadoop.fs.FileUtil#makeShellPath()

The following examples show how to use org.apache.hadoop.fs.FileUtil#makeShellPath() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TaskLog.java    From RDFS with Apache License 2.0 5 votes vote down vote up
/**
 * Wrap a command in a shell to capture debug script's 
 * stdout and stderr to debugout.
 * @param cmd The command and the arguments that should be run
 * @param debugoutFilename The filename that stdout and stderr
 *  should be saved to.
 * @return the modified command that should be run
 * @throws IOException
 */
public static List<String> captureDebugOut(List<String> cmd, 
                                           File debugoutFilename
                                          ) throws IOException {
  String debugout = FileUtil.makeShellPath(debugoutFilename);
  List<String> result = new ArrayList<String>(3);
  result.add(bashCommand);
  result.add("-c");
  StringBuffer mergedCmd = new StringBuffer();
  mergedCmd.append("exec ");
  boolean isExecutable = true;
  for(String s: cmd) {
    if (isExecutable) {
      // the executable name needs to be expressed as a shell path for the  
      // shell to find it.
      mergedCmd.append(FileUtil.makeShellPath(new File(s)));
      isExecutable = false; 
    } else {
      mergedCmd.append(s);
    }
    mergedCmd.append(" ");
  }
  mergedCmd.append(" < /dev/null ");
  mergedCmd.append(" >");
  mergedCmd.append(debugout);
  mergedCmd.append(" 2>&1 ");
  result.add(mergedCmd.toString());
  return result;
}
 
Example 2
Source File: TaskLog.java    From hadoop-gpu with Apache License 2.0 5 votes vote down vote up
/**
 * Wrap a command in a shell to capture debug script's 
 * stdout and stderr to debugout.
 * @param cmd The command and the arguments that should be run
 * @param debugoutFilename The filename that stdout and stderr
 *  should be saved to.
 * @return the modified command that should be run
 * @throws IOException
 */
public static List<String> captureDebugOut(List<String> cmd, 
                                           File debugoutFilename
                                          ) throws IOException {
  String debugout = FileUtil.makeShellPath(debugoutFilename);
  List<String> result = new ArrayList<String>(3);
  result.add(bashCommand);
  result.add("-c");
  StringBuffer mergedCmd = new StringBuffer();
  mergedCmd.append("exec ");
  boolean isExecutable = true;
  for(String s: cmd) {
    if (isExecutable) {
      // the executable name needs to be expressed as a shell path for the  
      // shell to find it.
      mergedCmd.append(FileUtil.makeShellPath(new File(s)));
      isExecutable = false; 
    } else {
      mergedCmd.append(s);
    }
    mergedCmd.append(" ");
  }
  mergedCmd.append(" < /dev/null ");
  mergedCmd.append(" >");
  mergedCmd.append(debugout);
  mergedCmd.append(" 2>&1 ");
  result.add(mergedCmd.toString());
  return result;
}
 
Example 3
Source File: TaskLog.java    From hadoop with Apache License 2.0 4 votes vote down vote up
/**
 * Construct the command line for running the task JVM
 * @param setup The setup commands for the execed process.
 * @param cmd The command and the arguments that should be run
 * @param stdoutFilename The filename that stdout should be saved to
 * @param stderrFilename The filename that stderr should be saved to
 * @param tailLength The length of the tail to be saved.
 * @return the command line as a String
 * @throws IOException
 */
static String buildCommandLine(List<String> setup, List<String> cmd, 
                                    File stdoutFilename,
                                    File stderrFilename,
                                    long tailLength, 
                                    boolean useSetsid)
                              throws IOException {
  
  String stdout = FileUtil.makeShellPath(stdoutFilename);
  String stderr = FileUtil.makeShellPath(stderrFilename);    
  StringBuffer mergedCmd = new StringBuffer();
  
  // Export the pid of taskJvm to env variable JVM_PID.
  // Currently pid is not used on Windows
  if (!Shell.WINDOWS) {
    mergedCmd.append(" export JVM_PID=`echo $$` ; ");
  }

  if (setup != null && setup.size() > 0) {
    mergedCmd.append(addCommand(setup, false));
    mergedCmd.append(";");
  }
  if (tailLength > 0) {
    mergedCmd.append("(");
  } else if(ProcessTree.isSetsidAvailable && useSetsid &&
      !Shell.WINDOWS) {
    mergedCmd.append("exec setsid ");
  } else {
    mergedCmd.append("exec ");
  }
  mergedCmd.append(addCommand(cmd, true));
  mergedCmd.append(" < /dev/null ");
  if (tailLength > 0) {
    mergedCmd.append(" | ");
    mergedCmd.append(tailCommand);
    mergedCmd.append(" -c ");
    mergedCmd.append(tailLength);
    mergedCmd.append(" >> ");
    mergedCmd.append(stdout);
    mergedCmd.append(" ; exit $PIPESTATUS ) 2>&1 | ");
    mergedCmd.append(tailCommand);
    mergedCmd.append(" -c ");
    mergedCmd.append(tailLength);
    mergedCmd.append(" >> ");
    mergedCmd.append(stderr);
    mergedCmd.append(" ; exit $PIPESTATUS");
  } else {
    mergedCmd.append(" 1>> ");
    mergedCmd.append(stdout);
    mergedCmd.append(" 2>> ");
    mergedCmd.append(stderr);
  }
  return mergedCmd.toString();
}
 
Example 4
Source File: TaskLog.java    From big-c with Apache License 2.0 4 votes vote down vote up
/**
 * Construct the command line for running the task JVM
 * @param setup The setup commands for the execed process.
 * @param cmd The command and the arguments that should be run
 * @param stdoutFilename The filename that stdout should be saved to
 * @param stderrFilename The filename that stderr should be saved to
 * @param tailLength The length of the tail to be saved.
 * @return the command line as a String
 * @throws IOException
 */
static String buildCommandLine(List<String> setup, List<String> cmd, 
                                    File stdoutFilename,
                                    File stderrFilename,
                                    long tailLength, 
                                    boolean useSetsid)
                              throws IOException {
  
  String stdout = FileUtil.makeShellPath(stdoutFilename);
  String stderr = FileUtil.makeShellPath(stderrFilename);    
  StringBuffer mergedCmd = new StringBuffer();
  
  // Export the pid of taskJvm to env variable JVM_PID.
  // Currently pid is not used on Windows
  if (!Shell.WINDOWS) {
    mergedCmd.append(" export JVM_PID=`echo $$` ; ");
  }

  if (setup != null && setup.size() > 0) {
    mergedCmd.append(addCommand(setup, false));
    mergedCmd.append(";");
  }
  if (tailLength > 0) {
    mergedCmd.append("(");
  } else if(ProcessTree.isSetsidAvailable && useSetsid &&
      !Shell.WINDOWS) {
    mergedCmd.append("exec setsid ");
  } else {
    mergedCmd.append("exec ");
  }
  mergedCmd.append(addCommand(cmd, true));
  mergedCmd.append(" < /dev/null ");
  if (tailLength > 0) {
    mergedCmd.append(" | ");
    mergedCmd.append(tailCommand);
    mergedCmd.append(" -c ");
    mergedCmd.append(tailLength);
    mergedCmd.append(" >> ");
    mergedCmd.append(stdout);
    mergedCmd.append(" ; exit $PIPESTATUS ) 2>&1 | ");
    mergedCmd.append(tailCommand);
    mergedCmd.append(" -c ");
    mergedCmd.append(tailLength);
    mergedCmd.append(" >> ");
    mergedCmd.append(stderr);
    mergedCmd.append(" ; exit $PIPESTATUS");
  } else {
    mergedCmd.append(" 1>> ");
    mergedCmd.append(stdout);
    mergedCmd.append(" 2>> ");
    mergedCmd.append(stderr);
  }
  return mergedCmd.toString();
}
 
Example 5
Source File: TaskLog.java    From RDFS with Apache License 2.0 4 votes vote down vote up
static String buildCommandLine(List<String> setup,
    List<String> cmd, 
    File stdoutFilename,
    File stderrFilename,
    long tailLength,
    boolean useSetSid) throws IOException {
  
  String stdout = FileUtil.makeShellPath(stdoutFilename);
  String stderr = FileUtil.makeShellPath(stderrFilename);
  StringBuffer mergedCmd = new StringBuffer();
  
  if (!Shell.WINDOWS) {
    mergedCmd.append(" export JVM_PID=`echo $$` ; ");
  }

  if (setup != null && setup.size() > 0) {
    mergedCmd.append(addCommand(setup, false));
    mergedCmd.append(";");
  }
  if (tailLength > 0) {
    mergedCmd.append("(");
  } else if (ProcessTree.isSetsidAvailable && useSetSid 
      && !Shell.WINDOWS) {
    mergedCmd.append("exec setsid ");
  } else {
    mergedCmd.append("exec ");
  }
  mergedCmd.append(addCommand(cmd, true));
  mergedCmd.append(" < /dev/null ");
  if (tailLength > 0) {
    mergedCmd.append(" | ");
    mergedCmd.append(tailCommand);
    mergedCmd.append(" -c ");
    mergedCmd.append(tailLength);
    mergedCmd.append(" >> ");
    mergedCmd.append(stdout);
    mergedCmd.append(" ; exit $PIPESTATUS ) 2>&1 | ");
    mergedCmd.append(tailCommand);
    mergedCmd.append(" -c ");
    mergedCmd.append(tailLength);
    mergedCmd.append(" >> ");
    mergedCmd.append(stderr);
    mergedCmd.append(" ; exit $PIPESTATUS");
  } else {
    mergedCmd.append(" 1>> ");
    mergedCmd.append(stdout);
    mergedCmd.append(" 2>> ");
    mergedCmd.append(stderr);
  }
  return mergedCmd.toString();
}
 
Example 6
Source File: TaskLog.java    From hadoop-gpu with Apache License 2.0 4 votes vote down vote up
/**
 * Wrap a command in a shell to capture stdout and stderr to files.
 * Setup commands such as setting memory limit can be passed which 
 * will be executed before exec.
 * If the tailLength is 0, the entire output will be saved.
 * @param setup The setup commands for the execed process.
 * @param cmd The command and the arguments that should be run
 * @param stdoutFilename The filename that stdout should be saved to
 * @param stderrFilename The filename that stderr should be saved to
 * @param tailLength The length of the tail to be saved.
 * @param pidFileName The name of the pid-file
 * @return the modified command that should be run
 */
public static List<String> captureOutAndError(List<String> setup,
                                              List<String> cmd, 
                                              File stdoutFilename,
                                              File stderrFilename,
                                              long tailLength,
                                              String pidFileName
                                             ) throws IOException {
  String stdout = FileUtil.makeShellPath(stdoutFilename);
  String stderr = FileUtil.makeShellPath(stderrFilename);
  List<String> result = new ArrayList<String>(3);
  result.add(bashCommand);
  result.add("-c");
  StringBuffer mergedCmd = new StringBuffer();
  
  // Spit out the pid to pidFileName
  if (pidFileName != null) {
    mergedCmd.append("echo $$ > ");
    mergedCmd.append(pidFileName);
    mergedCmd.append(" ;");
  }

  if (setup != null && setup.size() > 0) {
    mergedCmd.append(addCommand(setup, false));
    mergedCmd.append(";");
  }
  if (tailLength > 0) {
    mergedCmd.append("(");
  } else {
    mergedCmd.append("exec ");
  }
  mergedCmd.append(addCommand(cmd, true));
  mergedCmd.append(" < /dev/null ");
  if (tailLength > 0) {
    mergedCmd.append(" | ");
    mergedCmd.append(tailCommand);
    mergedCmd.append(" -c ");
    mergedCmd.append(tailLength);
    mergedCmd.append(" >> ");
    mergedCmd.append(stdout);
    mergedCmd.append(" ; exit $PIPESTATUS ) 2>&1 | ");
    mergedCmd.append(tailCommand);
    mergedCmd.append(" -c ");
    mergedCmd.append(tailLength);
    mergedCmd.append(" >> ");
    mergedCmd.append(stderr);
    mergedCmd.append(" ; exit $PIPESTATUS");
  } else {
    mergedCmd.append(" 1>> ");
    mergedCmd.append(stdout);
    mergedCmd.append(" 2>> ");
    mergedCmd.append(stderr);
  }
  result.add(mergedCmd.toString());
  return result;
}
 
Example 7
Source File: TaskLog.java    From RDFS with Apache License 2.0 2 votes vote down vote up
/**
 * Get the real task-log file-path
 * 
 * @param location Location of the log-file. This should point to an
 *          attempt-directory.
 * @param filter
 * @return
 * @throws IOException
 */
static String getRealTaskLogFilePath(String location, LogName filter)
    throws IOException {
  return FileUtil.makeShellPath(new File(getBaseDir(location),
      filter.toString()));
}