Package oshi.software.common
Class AbstractOperatingSystem
java.lang.Object
oshi.software.common.AbstractOperatingSystem
- All Implemented Interfaces:
OperatingSystem
- Direct Known Subclasses:
AixOperatingSystem
,FreeBsdOperatingSystem
,LinuxOperatingSystem
,MacOperatingSystem
,OpenBsdOperatingSystem
,SolarisOperatingSystem
,WindowsOperatingSystem
Common methods for OperatingSystem implementations
-
Nested Class Summary
Nested classes/interfaces inherited from interface oshi.software.os.OperatingSystem
OperatingSystem.OSVersionInfo, OperatingSystem.ProcessFiltering, OperatingSystem.ProcessSorting
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
Gets the bitness (32 or 64) of the operating system.getChildProcesses
(int parentPid, Predicate<OSProcess> filter, Comparator<OSProcess> sort, int limit) Gets currently running child processes of provided parent PID, optionally filtering, sorting, and limited to the top "N".getChildrenOrDescendants
(Collection<OSProcess> allProcs, int parentPid, boolean allDescendants) Utility method for subclasses to take a full process list as input and return the children or descendants of a particular process.getChildrenOrDescendants
(Map<Integer, Integer> parentPidMap, int parentPid, boolean allDescendants) Utility method for subclasses to take a map of pid to parent as input and return the children or descendants of a particular process.getDescendantProcesses
(int parentPid, Predicate<OSProcess> filter, Comparator<OSProcess> sort, int limit) Gets currently running processes of provided parent PID's descendants, including their children, the children's children, etc., optionally filtering, sorting, and limited to the top "N".Get the Operating System family.Get the Operating System manufacturer.getProcesses
(Predicate<OSProcess> filter, Comparator<OSProcess> sort, int limit) Gets currently running processes, optionally filtering, sorting, and limited to the top "N".Get Operating System version information.protected abstract int
queryBitness
(int jvmBitness) Backup OS-specific query to determine bitness if previous checks failqueryChildProcesses
(int parentPid) queryDescendantProcesses
(int parentPid) protected abstract Pair<String,
OperatingSystem.OSVersionInfo> protected abstract String
toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface oshi.software.os.OperatingSystem
getCurrentProcess, getCurrentThread, getDesktopWindows, getFileSystem, getInternetProtocolStats, getNetworkParams, getProcess, getProcessCount, getProcesses, getProcesses, getProcessId, getServices, getSessions, getSystemBootTime, getSystemUptime, getThreadCount, getThreadId, isElevated
-
Field Details
-
USE_WHO_COMMAND
protected static final boolean USE_WHO_COMMAND
-
-
Constructor Details
-
AbstractOperatingSystem
public AbstractOperatingSystem()
-
-
Method Details
-
getManufacturer
Description copied from interface:OperatingSystem
Get the Operating System manufacturer.- Specified by:
getManufacturer
in interfaceOperatingSystem
- Returns:
- the manufacturer
-
queryManufacturer
-
getFamily
Description copied from interface:OperatingSystem
Get the Operating System family.- Specified by:
getFamily
in interfaceOperatingSystem
- Returns:
- the family
-
getVersionInfo
Description copied from interface:OperatingSystem
Get Operating System version information.- Specified by:
getVersionInfo
in interfaceOperatingSystem
- Returns:
- version information
-
queryFamilyVersionInfo
-
getBitness
public int getBitness()Description copied from interface:OperatingSystem
Gets the bitness (32 or 64) of the operating system.- Specified by:
getBitness
in interfaceOperatingSystem
- Returns:
- The number of bits supported by the operating system.
-
queryBitness
protected abstract int queryBitness(int jvmBitness) Backup OS-specific query to determine bitness if previous checks fail- Parameters:
jvmBitness
- The bitness of the JVM- Returns:
- The operating system bitness
-
getProcesses
public List<OSProcess> getProcesses(Predicate<OSProcess> filter, Comparator<OSProcess> sort, int limit) Description copied from interface:OperatingSystem
Gets currently running processes, optionally filtering, sorting, and limited to the top "N".- Specified by:
getProcesses
in interfaceOperatingSystem
- Parameters:
filter
- An optionalPredicate
limiting the results to the specified filter. Some common predicates are available inOperatingSystem.ProcessSorting
. May benull
for no filtering.sort
- An optionalComparator
specifying the sorting order. Some common comparators are available inOperatingSystem.ProcessSorting
. May benull
for no sorting.limit
- Max number of results to return, or 0 to return all results- Returns:
- A list of
OSProcess
objects, optionally filtered, sorted, and limited to the specified number.The list may contain processes with a state of
OSProcess.State.INVALID
if a process terminates during iteration.
-
queryAllProcesses
-
getChildProcesses
public List<OSProcess> getChildProcesses(int parentPid, Predicate<OSProcess> filter, Comparator<OSProcess> sort, int limit) Description copied from interface:OperatingSystem
Gets currently running child processes of provided parent PID, optionally filtering, sorting, and limited to the top "N".- Specified by:
getChildProcesses
in interfaceOperatingSystem
- Parameters:
parentPid
- The Process ID whose children to list.filter
- An optionalPredicate
limiting the results to the specified filter. Some common predicates are available inOperatingSystem.ProcessSorting
. May benull
for no filtering.sort
- An optionalComparator
specifying the sorting order. Some common comparators are available inOperatingSystem.ProcessSorting
. May benull
for no sorting.limit
- Max number of results to return, or 0 to return all results- Returns:
- A list of
OSProcess
objects representing the currently running child processes of the provided PID, optionally filtered, sorted, and limited to the specified number.The list may contain processes with a state of
OSProcess.State.INVALID
if a process terminates during iteration.
-
queryChildProcesses
-
getDescendantProcesses
public List<OSProcess> getDescendantProcesses(int parentPid, Predicate<OSProcess> filter, Comparator<OSProcess> sort, int limit) Description copied from interface:OperatingSystem
Gets currently running processes of provided parent PID's descendants, including their children, the children's children, etc., optionally filtering, sorting, and limited to the top "N".- Specified by:
getDescendantProcesses
in interfaceOperatingSystem
- Parameters:
parentPid
- The Process ID whose children to list.filter
- An optionalPredicate
limiting the results to the specified filter. Some common predicates are available inOperatingSystem.ProcessSorting
. May benull
for no filtering.sort
- An optionalComparator
specifying the sorting order. Some common comparators are available inOperatingSystem.ProcessSorting
. May benull
for no sorting.limit
- Max number of results to return, or 0 to return all results- Returns:
- A list of
OSProcess
objects representing the currently running descendant processes of the provided PID, optionally filtered, sorted, and limited to the specified number.The list may contain processes with a state of
OSProcess.State.INVALID
if a process terminates during iteration.
-
queryDescendantProcesses
-
getChildrenOrDescendants
protected static Set<Integer> getChildrenOrDescendants(Collection<OSProcess> allProcs, int parentPid, boolean allDescendants) Utility method for subclasses to take a full process list as input and return the children or descendants of a particular process. The process itself is also returned to more efficiently extract its start time for filtering- Parameters:
allProcs
- A collection of all processesparentPid
- The process ID whose children or descendants to returnallDescendants
- If false, only gets immediate children of this process. If true, gets all descendants.- Returns:
- Set of children or descendants of parentPid
-
getChildrenOrDescendants
protected static Set<Integer> getChildrenOrDescendants(Map<Integer, Integer> parentPidMap, int parentPid, boolean allDescendants) Utility method for subclasses to take a map of pid to parent as input and return the children or descendants of a particular process.- Parameters:
parentPidMap
- a map of all processes with processID as key and parentProcessID as valueparentPid
- The process ID whose children or descendants to returnallDescendants
- If false, only gets immediate children of this process. If true, gets all descendants.- Returns:
- Set of children or descendants of parentPid, including the parent
-
toString
-