Class Shell

java.lang.Object
org.apache.bookkeeper.util.Shell
Direct Known Subclasses:
Shell.ShellCommandExecutor

public abstract class Shell extends Object
A base class for running a Unix command. Shell can be used to run unix commands like du or df. It also offers facilities to gate commands by time-intervals.
  • Field Details

    • LOG

      public static final org.apache.commons.logging.Log LOG
    • timeOutInterval

      protected long timeOutInterval
    • WINDOWS

      public static final boolean WINDOWS
      Set to true on Windows platforms.
  • Constructor Details

    • Shell

      public Shell()
    • Shell

      public Shell(long interval)
      Parameters:
      interval - the minimum duration to wait before re-executing the command.
  • Method Details

    • 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
    • getExitCode

      public int getExitCode()
      Get the exit code.
      Returns:
      the exit code of the process
    • isTimedOut

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

      public static String execCommand(String... cmd) throws IOException
      Static method to execute a shell command. Covers most of the simple cases without requiring the user to implement the Shell interface.
      Parameters:
      cmd - shell command to execute.
      Returns:
      the output of the executed command.
      Throws:
      IOException
    • execCommand

      public static String execCommand(Map<String,String> env, String[] cmd, long timeout) throws IOException
      Static method to execute a shell command. Covers most of the simple cases without requiring the user to implement the Shell interface.
      Parameters:
      env - the map of environment key=value
      cmd - shell command to execute.
      timeout - time in milliseconds after which script should be marked timeout
      Returns:
      the output of the executed command.o
      Throws:
      IOException
    • execCommand

      public static String execCommand(Map<String,String> env, String... cmd) throws IOException
      Static method to execute a shell command. Covers most of the simple cases without requiring the user to implement the Shell interface.
      Parameters:
      env - the map of environment key=value
      cmd - shell command to execute.
      Returns:
      the output of the executed command.
      Throws:
      IOException