public abstract class ShellUtils extends Object
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.
|
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 and Description |
---|
ShellUtils() |
ShellUtils(long interval) |
ShellUtils(long interval,
boolean redirectErrorStream)
Creates a new shell utils instance.
|
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.
|
public static final org.slf4j.Logger LOG
public static final ShellUtils.OSType osType
public static final boolean WINDOWS
public static final boolean SOLARIS
public static final boolean MAC
public static final boolean FREEBSD
public static final boolean LINUX
public static final boolean OTHER
public static final com.codahale.metrics.Meter numShellExceptions
public static final String TOKEN_SEPARATOR_REGEX
Token separator regex used to parse Shell tool outputs.
protected long timeOutInterval
Time after which the executing script would be timed out.
public ShellUtils()
public ShellUtils(long interval)
public ShellUtils(long interval, boolean redirectErrorStream)
Creates a new shell utils instance.
interval
- the minimum duration to wait before re-executing the commandpublic static String[] getGroupsCommand()
a Unix command to get the current user’s groups list.
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.
public static ShellLogHandler getLogHandler(Map<String,Object> topoConf)
public int getExitCode()
get the exit code.
protected void setEnvironment(Map<String,String> env)
set the environment for the command.
env
- Mapping of environment variablesprotected void setWorkingDirectory(File dir)
set the working directory.
dir
- The directory where the command would be executedprotected void run() throws IOException
check to see if a command needs to be executed and execute if needed.
IOException
protected abstract String[] getExecString()
return an array containing the command name & its parameters.
protected abstract void parseExecResult(BufferedReader lines) throws IOException
Parse the execution result.
IOException
public Process getProcess()
get the current sub-process executing the given command.
public boolean isTimedOut()
To check if the passed script to shell command executor timed out or not.
Copyright © 2020 The Apache Software Foundation. All rights reserved.