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 and Description
    --- | ---
    `static class` | `ShellUtils.ExitCodeException` This is an IOException with exit code added.
    `static class` | `ShellUtils.OSType` OSType detection.
    `static class` | `ShellUtils.ShellCommandExecutor` A simple shell command executor.

  - ### Field Summary

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

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract String[]` | `getExecString()` return an array containing the command name & its parameters.
    `int` | `getExitCode()` get the exit code.
    `static String[]` | `getGroupsCommand()` a Unix command to get the current user’s groups list.
    `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 Detail

    - #### 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 Detail

    - #### 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 Detail

    - #### getGroupsCommand

          public static String[] getGroupsCommand()

      a Unix command to get the current user’s groups list.

    - #### getGroupsForUserCommand

          public static String[] getGroupsForUserCommand(String user)

      a Unix command to get a given user’s groups list. If the OS is not WINDOWS, the command will get the user’s primary group first and finally get the groups list which includes the primary group. i.e. the user’s primary group will be included twice.

    - #### 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.

Copyright © 2019 The Apache Software Foundation. All rights reserved.