Package org.apache.storm.utils

# Class ShellUtils

java.lang.Object
org.apache.storm.utils.ShellUtils

Direct Known Subclasses:
  `ShellUtils.ShellCommandExecutor`

public abstract class ShellUtils extends Object

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `ShellUtils.ExitCodeException`
  This is an IOException with exit code added.
  `static enum`
  `ShellUtils.OSType`
  OSType detection.
  `static class`
  `ShellUtils.ShellCommandExecutor`
  A simple shell command executor.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final boolean`
  `FREEBSD`
  `static final boolean`
  `LINUX`
  `static final org.slf4j.Logger`
  `LOG`
  `static final boolean`
  `MAC`
  `static final com.codahale.metrics.Meter`
  `numShellExceptions`
  `static final ShellUtils.OSType`
  `osType`
  `static final boolean`
  `OTHER`
  `static final boolean`
  `SOLARIS`
  `protected long`
  `timeOutInterval`
  Time after which the executing script would be timed out.
  `static final String`
  `TOKEN_SEPARATOR_REGEX`
  Token separator regex used to parse Shell tool outputs.
  `static final boolean`
  `WINDOWS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ShellUtils()`
  `ShellUtils(long interval)`
  `ShellUtils(long interval, boolean redirectErrorStream)`
  Creates a new shell utils instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected abstract String[]`
  `getExecString()`
  return an array containing the command name & its parameters.
  `int`
  `getExitCode()`
  get the exit code.
  `static String[]`
  `getGroupsForUserCommand(String user)`
  a Unix command to get a given user's groups list.
  `static ShellLogHandler`
  `getLogHandler(Map<String,Object> topoConf)`
  `Process`
  `getProcess()`
  get the current sub-process executing the given command.
  `boolean`
  `isTimedOut()`
  To check if the passed script to shell command executor timed out or not.
  `protected abstract void`
  `parseExecResult(BufferedReader lines)`
  Parse the execution result.
  `protected void`
  `run()`
  check to see if a command needs to be executed and execute if needed.
  `protected void`
  `setEnvironment(Map<String,String> env)`
  set the environment for the command.
  `protected void`
  `setWorkingDirectory(File dir)`
  set the working directory.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### LOG

    public static final org.slf4j.Logger LOG

  - ### osType

    public static final ShellUtils.OSType osType

  - ### WINDOWS

    public static final boolean WINDOWS

  - ### SOLARIS

    public static final boolean SOLARIS

  - ### MAC

    public static final boolean MAC

  - ### FREEBSD

    public static final boolean FREEBSD

  - ### LINUX

    public static final boolean LINUX

  - ### OTHER

    public static final boolean OTHER

  - ### numShellExceptions

    public static final com.codahale.metrics.Meter numShellExceptions

  - ### TOKEN_SEPARATOR_REGEX

    public static final String TOKEN_SEPARATOR_REGEX
    Token separator regex used to parse Shell tool outputs.

  - ### timeOutInterval

    protected long timeOutInterval
    Time after which the executing script would be timed out.

- ## Constructor Details

  - ### ShellUtils

    public ShellUtils()

  - ### ShellUtils

    public ShellUtils(long interval)

  - ### ShellUtils

    public ShellUtils(long interval, boolean redirectErrorStream)
    Creates a new shell utils instance.
    Parameters:
      `interval` - the minimum duration to wait before re-executing the command

- ## Method Details

  - ### getGroupsForUserCommand

    public static String[] getGroupsForUserCommand(String user)
    a Unix command to get a given user's groups list. Windows is not supported.

  - ### getLogHandler

    public static ShellLogHandler getLogHandler(Map<String,Object> topoConf)

  - ### getExitCode

    public int getExitCode()
    get the exit code.
    Returns:
      the exit code of the process

  - ### setEnvironment

    protected void setEnvironment(Map<String,String> env)
    set the environment for the command.
    Parameters:
      `env` - Mapping of environment variables

  - ### setWorkingDirectory

    protected void setWorkingDirectory(File dir)
    set the working directory.
    Parameters:
      `dir` - The directory where the command would be executed

  - ### run

    protected void run() throws IOException
    check to see if a command needs to be executed and execute if needed.
    Throws:
      `IOException`

  - ### getExecString

    protected abstract String[] getExecString()
    return an array containing the command name & its parameters.

  - ### parseExecResult

    protected abstract void parseExecResult(BufferedReader lines) throws IOException
    Parse the execution result.
    Throws:
      `IOException`

  - ### getProcess

    public Process getProcess()
    get the current sub-process executing the given command.
    Returns:
      process executing the command

  - ### isTimedOut

    public boolean isTimedOut()
    To check if the passed script to shell command executor timed out or not.
    Returns:
      if the script timed out.