使用jt400获取AS400作业的CPU利用率百分比
使用jt400获取AS400作业的CPU利用率百分比
看起来你在使用JT400工具获取AS400活跃作业的CPU利用率时,遇到了所有作业返回0%的问题,我来帮你排查下可能的原因和解决办法:
1. 缺少要检索的CPU百分比属性
你的代码里只添加了Job.CPU_TIME_USED_LARGE等属性,但没有明确指定要检索Job.ELAPSED_CPU_PERCENT_USED——JT400要求必须显式声明需要获取的作业属性,否则无法正确返回对应的值。
你需要在属性检索列表中添加这一项:
list.addJobAttributeToRetrieve(Job.ELAPSED_CPU_PERCENT_USED);
2. 确认权限配置
如果添加属性后还是返回0,要检查你连接AS400使用的账号是否具备足够的权限:该账号需要拥有查看作业统计信息的权限(比如*JOBCTL权限,或者针对目标作业的查看权限),权限不足时系统可能会返回默认的0值。
3. 验证作业是否有CPU消耗
另外可以测试下:找一个正在运行且确实有CPU负载的作业来验证,避免测试的作业本身就是空闲状态(空闲作业的CPU利用率自然是0)。
修改后的完整代码示例
JobList list = new JobList(as400); list.clearJobSelectionCriteria(); list.addJobSelectionCriteria(JobList.SELECTION_PRIMARY_JOB_STATUS_ACTIVE, Boolean.TRUE); list.addJobSelectionCriteria(JobList.SELECTION_PRIMARY_JOB_STATUS_JOBQ, Boolean.FALSE); list.addJobSelectionCriteria(JobList.SELECTION_PRIMARY_JOB_STATUS_OUTQ, Boolean.FALSE); // 添加需要检索的CPU百分比属性 list.addJobAttributeToRetrieve(Job.CPU_TIME_USED_LARGE); list.addJobAttributeToRetrieve(Job.JOB_NAME); list.addJobAttributeToRetrieve(Job.USER_NAME); list.addJobAttributeToRetrieve(Job.ELAPSED_CPU_PERCENT_USED); Enumeration jobs = list.getJobs(); while (jobs.hasMoreElements()) { Job job = (Job) jobs.nextElement(); job.loadStatistics(); String user = job.getUser(); int cpuPercent = (Integer) job.getValue(Job.ELAPSED_CPU_PERCENT_USED); System.out.println("Percent CPU: " + cpuPercent); }
备注:内容来源于stack exchange,提问作者Poojan Shah
相关产品推荐
相关产品推荐

