Package org.apache.zookeeper
Class Shell
- java.lang.Object
-
- org.apache.zookeeper.Shell
-
- Direct Known Subclasses:
Shell.ShellCommandExecutor
public abstract class Shell extends java.lang.Object
A base class for running a Unix command.Shell
can be used to run unix commands likedu
ordf
. It also offers facilities to gate commands by time-intervals.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Shell.ExitCodeException
This is an IOException with exit code added.static class
Shell.ShellCommandExecutor
A simple shell command executor.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
SET_GROUP_COMMAND
static java.lang.String
SET_OWNER_COMMAND
a Unix command to set ownerstatic java.lang.String
SET_PERMISSION_COMMAND
a Unix command to set permissionstatic java.lang.String
ULIMIT_COMMAND
a Unix command to get ulimit of a process.static java.lang.String
USER_NAME_COMMAND
a Unix command to get the current user's namestatic boolean
WINDOWS
Set to true on Windows platforms
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static java.lang.String
execCommand(java.lang.String... cmd)
Static method to execute a shell command.static java.lang.String
execCommand(java.util.Map<java.lang.String,java.lang.String> env, java.lang.String... cmd)
Static method to execute a shell command.static java.lang.String
execCommand(java.util.Map<java.lang.String,java.lang.String> env, java.lang.String[] cmd, long timeout)
Static method to execute a shell command.int
getExitCode()
get the exit codestatic java.lang.String[]
getGET_PERMISSION_COMMAND()
Return a Unix command to get permission information.static java.lang.String[]
getGroupsCommand()
a Unix command to get the current user's groups liststatic java.lang.String[]
getGroupsForUserCommand(java.lang.String user)
a Unix command to get a given user's groups listjava.lang.Process
getProcess()
get the current sub-process executing the given commandstatic java.lang.String[]
getUlimitMemoryCommand(int memoryLimit)
Get the Unix command for setting the maximum virtual memory available to a given child process.boolean
isTimedOut()
To check if the passed script to shell command executor timed out or not.
-
-
-
Field Detail
-
USER_NAME_COMMAND
public static final java.lang.String USER_NAME_COMMAND
a Unix command to get the current user's name- See Also:
- Constant Field Values
-
SET_PERMISSION_COMMAND
public static final java.lang.String SET_PERMISSION_COMMAND
a Unix command to set permission- See Also:
- Constant Field Values
-
SET_OWNER_COMMAND
public static final java.lang.String SET_OWNER_COMMAND
a Unix command to set owner- See Also:
- Constant Field Values
-
SET_GROUP_COMMAND
public static final java.lang.String SET_GROUP_COMMAND
- See Also:
- Constant Field Values
-
ULIMIT_COMMAND
public static final java.lang.String ULIMIT_COMMAND
a Unix command to get ulimit of a process.- See Also:
- Constant Field Values
-
WINDOWS
public static final boolean WINDOWS
Set to true on Windows platforms
-
-
Method Detail
-
getGroupsCommand
public static java.lang.String[] getGroupsCommand()
a Unix command to get the current user's groups list
-
getGroupsForUserCommand
public static java.lang.String[] getGroupsForUserCommand(java.lang.String user)
a Unix command to get a given user's groups list
-
getGET_PERMISSION_COMMAND
public static java.lang.String[] getGET_PERMISSION_COMMAND()
Return a Unix command to get permission information.
-
getUlimitMemoryCommand
public static java.lang.String[] getUlimitMemoryCommand(int memoryLimit)
Get the Unix command for setting the maximum virtual memory available to a given child process. This is only relevant when we are forking a process from within the Mapper or the Reducer implementations. Also see Hadoop Pipes and Hadoop Streaming. It also checks to ensure that we are running on a *nix platform else (e.g. in Cygwin/Windows) it returnsnull
.- Parameters:
memoryLimit
- virtual memory limit- Returns:
- a
String[]
with the ulimit command arguments ornull
if we are running on a non *nix platform or if the limit is unspecified.
-
getProcess
public java.lang.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 java.lang.String execCommand(java.lang.String... cmd) throws java.io.IOException
Static method to execute a shell command. Covers most of the simple cases without requiring the user to implement theShell
interface.- Parameters:
cmd
- shell command to execute.- Returns:
- the output of the executed command.
- Throws:
java.io.IOException
-
execCommand
public static java.lang.String execCommand(java.util.Map<java.lang.String,java.lang.String> env, java.lang.String[] cmd, long timeout) throws java.io.IOException
Static method to execute a shell command. Covers most of the simple cases without requiring the user to implement theShell
interface.- Parameters:
env
- the map of environment key=valuecmd
- shell command to execute.timeout
- time in milliseconds after which script should be marked timeout- Returns:
- the output of the executed command.o
- Throws:
java.io.IOException
-
execCommand
public static java.lang.String execCommand(java.util.Map<java.lang.String,java.lang.String> env, java.lang.String... cmd) throws java.io.IOException
Static method to execute a shell command. Covers most of the simple cases without requiring the user to implement theShell
interface.- Parameters:
env
- the map of environment key=valuecmd
- shell command to execute.- Returns:
- the output of the executed command.
- Throws:
java.io.IOException
-
-