Package org.apache.zookeeper
Class Shell
- java.lang.Object
- 
- org.apache.zookeeper.Shell
 
- 
- Direct Known Subclasses:
- Shell.ShellCommandExecutor
 
 public abstract class Shell extends Object A base class for running a Unix command.Shellcan be used to run unix commands likeduordf. It also offers facilities to gate commands by time-intervals.
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description static classShell.ExitCodeExceptionThis is an IOException with exit code added.static classShell.ShellCommandExecutorA simple shell command executor.
 - 
Field SummaryFields Modifier and Type Field Description static StringSET_GROUP_COMMANDstatic StringSET_OWNER_COMMANDa Unix command to set ownerstatic StringSET_PERMISSION_COMMANDa Unix command to set permissionprotected longtimeOutIntervalTime after which the executing script would be timedoutstatic StringULIMIT_COMMANDa Unix command to get ulimit of a process.static StringUSER_NAME_COMMANDa Unix command to get the current user's namestatic booleanWINDOWSSet to true on Windows platforms
 - 
Method SummaryAll Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static StringexecCommand(String... cmd)Static method to execute a shell command.static StringexecCommand(Map<String,String> env, String... cmd)Static method to execute a shell command.static StringexecCommand(Map<String,String> env, String[] cmd, long timeout)Static method to execute a shell command.protected abstract String[]getExecString()return an array containing the command name and its parametersintgetExitCode()get the exit codestatic String[]getGET_PERMISSION_COMMAND()Return a Unix command to get permission information.static String[]getGroupsCommand()a Unix command to get the current user's groups liststatic String[]getGroupsForUserCommand(String user)a Unix command to get a given user's groups listProcessgetProcess()get the current sub-process executing the given commandstatic String[]getUlimitMemoryCommand(int memoryLimit)Get the Unix command for setting the maximum virtual memory available to a given child process.booleanisTimedOut()To check if the passed script to shell command executor timed out or not.protected abstract voidparseExecResult(BufferedReader lines)Parse the execution resultprotected voidrun()check to see if a command needs to be executed and execute if neededprotected voidsetEnvironment(Map<String,String> env)set the environment for the commandprotected voidsetWorkingDirectory(File dir)set the working directory
 
- 
- 
- 
Field Detail- 
USER_NAME_COMMANDpublic static final String USER_NAME_COMMAND a Unix command to get the current user's name- See Also:
- Constant Field Values
 
 - 
SET_PERMISSION_COMMANDpublic static final String SET_PERMISSION_COMMAND a Unix command to set permission- See Also:
- Constant Field Values
 
 - 
SET_OWNER_COMMANDpublic static final String SET_OWNER_COMMAND a Unix command to set owner- See Also:
- Constant Field Values
 
 - 
SET_GROUP_COMMANDpublic static final String SET_GROUP_COMMAND - See Also:
- Constant Field Values
 
 - 
timeOutIntervalprotected long timeOutInterval Time after which the executing script would be timedout
 - 
ULIMIT_COMMANDpublic static final String ULIMIT_COMMAND a Unix command to get ulimit of a process.- See Also:
- Constant Field Values
 
 - 
WINDOWSpublic static final boolean WINDOWS Set to true on Windows platforms
 
- 
 - 
Method Detail- 
getGroupsCommandpublic static String[] getGroupsCommand() a Unix command to get the current user's groups list
 - 
getGroupsForUserCommandpublic static String[] getGroupsForUserCommand(String user) a Unix command to get a given user's groups list
 - 
getGET_PERMISSION_COMMANDpublic static String[] getGET_PERMISSION_COMMAND() Return a Unix command to get permission information.
 - 
getUlimitMemoryCommandpublic static 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 ornullif we are running on a non *nix platform or if the limit is unspecified.
 
 - 
setEnvironmentprotected void setEnvironment(Map<String,String> env) set the environment for the command- Parameters:
- env- Mapping of environment variables
 
 - 
setWorkingDirectoryprotected void setWorkingDirectory(File dir) set the working directory- Parameters:
- dir- The directory where the command would be executed
 
 - 
runprotected void run() throws IOExceptioncheck to see if a command needs to be executed and execute if needed- Throws:
- IOException
 
 - 
getExecStringprotected abstract String[] getExecString() return an array containing the command name and its parameters
 - 
parseExecResultprotected abstract void parseExecResult(BufferedReader lines) throws IOException Parse the execution result- Throws:
- IOException
 
 - 
getProcesspublic Process getProcess() get the current sub-process executing the given command- Returns:
- process executing the command
 
 - 
getExitCodepublic int getExitCode() get the exit code- Returns:
- the exit code of the process
 
 - 
isTimedOutpublic boolean isTimedOut() To check if the passed script to shell command executor timed out or not.- Returns:
- if the script timed out.
 
 - 
execCommandpublic 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 theShellinterface.- Parameters:
- cmd- shell command to execute.
- Returns:
- the output of the executed command.
- Throws:
- IOException
 
 - 
execCommandpublic 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 theShellinterface.- 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
 
 - 
execCommandpublic 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 theShellinterface.- Parameters:
- env- the map of environment key=value
- cmd- shell command to execute.
- Returns:
- the output of the executed command.
- Throws:
- IOException
 
 
- 
 
-