Skip to content

Instantly share code, notes, and snippets.

@himanshub16
Created August 10, 2019 15:56
Show Gist options
  • Select an option

  • Save himanshub16/f7a9ad9c83c8083647f926124b8255ad to your computer and use it in GitHub Desktop.

Select an option

Save himanshub16/f7a9ad9c83c8083647f926124b8255ad to your computer and use it in GitHub Desktop.
Get CPU percent of a process using sigar (java)
/*
* Copyright (c) 2006 Hyperic, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.hyperic.sigar.*;
/*
Example to show the process state for a given pid.
Compile the example:
% javac -classpath sigar-bin/lib/sigar.jar ProcessState.java
State of the java process running the example:
% java -classpath sigar-bin/lib/sigar.jar:. ProcessState
java: Running
State of the bash shell when invoking the example is running:
% java -classpath sigar-bin/lib/sigar.jar:. ProcessState $$
bash: Sleeping
State of emacs editor used to write the example:
% java -classpath sigar-bin/lib/sigar.jar:. ProcessState 2673
emacs: Suspended
See also: examples/Ps.java, examples/Top.java
*/
public class ProcessState {
private static String getStateString(char state) {
switch (state) {
case ProcState.SLEEP:
return "Sleeping";
case ProcState.RUN:
return "Running";
case ProcState.STOP:
return "Suspended";
case ProcState.ZOMBIE:
return "Zombie";
case ProcState.IDLE:
return "Idle";
default:
return String.valueOf(state);
}
}
public static void main(String[] args)
throws SigarException {
String pid;
if (args.length == 0) {
pid = "$$"; //default to this process
}
else {
pid = args[0];
}
Sigar sigar = new Sigar();
ProcState procState = sigar.getProcState(pid);
String state;
System.out.println(procState.getName() + ": " +
getStateString(procState.getState()));
ProcExe exe = sigar.getProcExe(pid);
System.out.println(exe.getName() + " " + exe.getCwd());
System.out.println(sigar.getProcCpu(pid).getPercent());
sigar.close();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment