| 添加到收藏夹 | 返回目录页 | 上一篇:INZTAP的参数问题 |
AS/400开发经验点滴(四)--如何在程序中获取系统状态信息
AS/400开发经验点滴(四)
七.如何在程序中获取系统ASP使用率等系统状态信息
AS/400系统管理员都对系统ASP空间增长情况很关心,当系统ASP空间涨满了以后将会引起系统DOWN机等安全问题。系统ASP空间与硬盘空间并不完全等同,如果系统只配置了一个ASP分区,那么系统ASP空间与硬盘空间是等同的,如果系统配置了多个ASP分区,则系统ASP只是ASP 1的分区。用WRKSYSSTS命令查看到的% system ASP used就是表示系统ASP空间的使用率。
与系统ASP空间使用率有关的系统值有两个:QSTGLOWLMT和QSTGLOWACN。QSTGLOWLMT系统值设定了最小硬盘空间警告线百分比,比如设定为5,即表示系统ASP使用率达到95%,即引起安全动作,安全动作由系统值QSTGLOWACN设定。
能不能在程序中自动获取系统ASP使用率,这样当硬盘空间达到危险值时,由程序提前报警呢?或者在程序中自动执行一些安全动作,比如自动清理一些过时的文件,或停止某些程序运行,以降低系统ASP使用率?
OS/400系统提供了一个叫QWCRSSTS的API函数,该函数功能就可以提取用WRKSYSSTS命令看到的系统状态信息,还可以提取更多的用WRKSTSSTS命令看不到的一些其他系统信息。可以在RPG、C、CL等程序里调用该API以获取系统信息。该函数的详细使用说明可以参看《System API Reference》这本书。
下面我用一个实际获取系统ASP使用率的CL程序做例子,来看看如何使用QWCRSSTS。
QWCRSSTS共有五个入口参数,第一个参数是接受返回系统状态信息的输出参数,存放的是返回系统状态信息块。该系统状态信息块是按照一定结构来存放各种系统状态信息的。第二个参数是输入参数,指定第一个接受系统状态信息块变量的长度,类型为Binary。第三个参数是指定第一个参数系统状态信息块中的系统信息存放结构名,共有三种不同的结构可选,分别是:SSTS0100、SSTS0200、SSTS0300。第四个参数是表示是否重新设置状态统计,通常我们选*YES。第五个参数是错误码。
在本示例CL程序中,指定使用SSTS0200系统状态信息结构。该结构中53-57位存放的就是% system ASP used。该值除上10000,就是正常百分比。在程序中先是提取QSTGLOWLMT系统值,指定100-QSTGLOWLMT-2为程序警告线,比如QSTGLOWLMT如果设为5,那么当系统ASP到93%的时候,程序会向用户发出一个消息。同时把ASP状态返回值设为1,以供其他程序调用,当调用程序判断ASP状态返回值为1的时候,就知道系统ASP空间利用率到了警告线,需要执行一些安全动作了。
[code:1:1ced1f3fa8]/*===================================================================*/
/* */
/*-----------------------------------------------------------------------------------------------------------------*/
/* PROGRAM NAME : MONASP */
/* CREATED BY : BLOG LIOU */
/* CREATED DATE : 2003.11.11 */
/* DESCRIPTION : Monitor ASP Used */
/* MonASPPer: (100-STGLOWLMT)-2 */
/*===================================================================*/
PGM PARM(&ASPFLAG)
DCL VAR(&ASPFLAG) TYPE(*CHAR) LEN(1)
DCL VAR(&FORMAT) TYPE(*CHAR) LEN(8) +
VALUE(SSTS0200)
DCL VAR(&LENFLD) TYPE(*CHAR) LEN(4) +
VALUE(X00000044)
DCL VAR(&SYSNAM) TYPE(*CHAR) LEN(8)
DCL VAR(&SYSUSEC) TYPE(*CHAR) LEN(4)
DCL VAR(&SYSUSE) TYPE(*DEC) LEN(9 2)
DCL VAR(&SYSINFO) TYPE(*CHAR) LEN(68)
DCL VAR(&ERRCODE) TYPE(*CHAR) LEN(8) +
VALUE(X0000000000000000)
DCL VAR(&RESETSY) TYPE(*CHAR) LEN(10) VALUE(*YES)
DCL VAR(&QMNPER) TYPE(*DEC) LEN(9 2) VALUE(1000000)
DCL VAR(&QALARM) TYPE(*DEC) LEN(9 2) VALUE(20000)
DCL VAR(&STGLOWLMT) TYPE(*DEC) LEN(9 2)
DCL VAR(&SNDMSG) TYPE(*CHAR) LEN(10)
CHGVAR VAR(&ASPFLAG) VALUE(0)
RTVSYSVAL SYSVAL(QSTGLOWLMT) RTNVAR(&STGLOWLMT)
CHGVAR VAR(&STGLOWLMT) VALUE(&STGLOWLMT * 10000)
CHGVAR VAR(&QMNPER) VALUE(&QMNPER - &STGLOWLMT)
CHGVAR VAR(&QMNPER) VALUE(&QMNPER - &QALARM)
CALL PGM(QWCRSSTS) PARM(&SYSINFO &LENFLD &FORMAT +
&RESETSY &ERRCODE)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERREND))
CHGVAR VAR(&SYSUSEC) VALUE(%SST(&SYSINFO 53 4))
CHGVAR VAR(&SYSUSE) VALUE(%BINARY(&SYSUSEC))
CHGVAR VAR(&SYSNAM) VALUE(%SST(&SYSINFO 17 8))
IF COND(&SYSUSE > &QMNPER) THEN(DO)
CHGVAR VAR(&SNDMSG) VALUE(&SYSUSE)
SNDPGMMSG MSG(&SYSNAM *BCAT - (ASP USED +
PERCENT)*10000 = *BCAT &SNDMSG) +
TOMSGQ(MYUSER)
SNDPGMMSG MSG(*****SYSTEM OVER MonASP !!! ) +
TOMSGQ(MYUSER) MSGTYPE(*INFO)
CHGVAR VAR(&ASPFLAG) VALUE(1)
ENDDO
GOTO CMDLBL(END)
ERREND: SNDPGMMSG MSG( ERROR ON QWCRSSTS CALL) +
TOMSGQ(MYUSER) MSGTYPE(*INFO)
END: ENDPGM
[/code:1:1ced1f3fa8]
该程序也可以与某些报警程序连起来使用,比如当系统ASP空间达到警告线后,程序调用某些拨号程序,就可以给系统管理员手机发短信息等。
如果再设计一个显示文件,把QWCRSSTS获取到的系统状态信息,比如系统ASP使用率、CPU使用率、系统出现Message进程数,都显示出来,我们就实现了一个系统状态信息的监视工具。
| blogliou 回复于:2003-12-25 17:05:58 |
| 为什么一个8加一个)就变成了笑脸?晕啊! |
| qingzhou 回复于:2003-12-25 17:12:56 |
| blogliou兄弟:你这些资料有没有现成的Word或者Pdf文件?干脆上传出来给大伙共享。
如果是书,请告诉我书名,可以吗? |
| yj2yq 回复于:2003-12-25 17:16:16 |
| 代码用code方式输入啊! |
| blogliou 回复于:2003-12-25 17:29:22 |
| [quote:428e46bf9c="qingzhou"]blogliou兄弟:你这些资料有没有现成的Word或者Pdf文件?干脆上传出来给大伙共享。
如果是书,请告诉我书名,可以吗?[/quote:428e46bf9c] <System API Reference>可以在网上找找,或者到IBM红皮书网站找找. 本系列文是根据本人实际工作经验再结合IBM 400红皮书总结写成。 |
| qingzhou 回复于:2003-12-25 17:58:23 |
| :em22: 我是说《AS/400开发经验点滴》! |
| blogliou 回复于:2003-12-25 18:07:54 |
| [quote:e0738267c9="qingzhou"]:em22: 我是说《AS/400开发经验点滴》![/quote:e0738267c9]
《AS/400开发经验点滴》是我自己原创,目前已写1-4,还有一些没写出。只要一写出,我就会在第一时间发到本论坛上。 |
| qingzhou 回复于:2003-12-25 18:12:42 |
| 哦!
不错~~~~ 看来阁下是位老IBM Engineer,谢谢你提供了这么好的经验给我们参考! 我先顶着~~~ 期待更多更好的出炉ing...... |
| wildfish 回复于:2003-12-26 17:25:20 |
| 呵呵,顶,我最喜欢这些了。 |
| stephenxie2003 回复于:2003-12-29 10:15:53 |
| 这位大哥真是有心人啊!
支持! :) |
| fairyboy 回复于:2004-12-01 08:06:47 |
| 真牛B!不佩服还不行呢 |
| Red_Crow 回复于:2004-12-01 08:53:51 |
| 支持,加油! |
| thursday 回复于:2004-12-01 09:49:31 |
| 收藏,帮顶! |
最热门文章推荐:
>· voip组网
>· 腾讯rtx
>· 家庭无线局域网
>· 什么是无线局域网
>· 无线局域网的标准
>· 无线宽带局域网
>· 信息安全论坛
>· 信息安全标准
下一篇:异常IPL的原因归纳
↓相关文章:
- · 异常IPL的原因归纳
- · 关于文件的 ShareODP 和 USROPN
- · 请教各位:如何查看是谁删除了Library?
- · 除去字符串中任何不需要的东东的思路,仅供参考!!!!!
- · 查看as400下全部USER的几种方法:
- · Fun With Dates In RPGLE
- · as400 I/O 错误小结
- · 我想用ORACLE取AS400的数据,有没有与这个类似的培训!
- · 400中显示在线用户操作记录的方法(用User Space API 实现)
- · 在rpg 里如何对开关进行重命名?
- · AS400 上部署 J2EE 的另一选择-- JBOSS !
- · 问个关于系统MSG的问题?
- · The OS400 Command interface is EXCELLENT, but coukd be impro
- · 帮忙解释安全文档里的一句话
- · 定时启用禁用用户登陆系统的方法
- · 如何更改logon on screen?
- · 跟踪IPL全程、并将产生的spoolfile转成PC上的文本文件,一气呵成.
- · AS400上的FTP可以限制那些用户不能登陆吗?
- · 如何從 AS/400 啟動 PC 程序或 從 PC 啟動 AS/400 程序?
- · 得到4位表示 年份 的新方法?
- · V5R3 CL Programming
- · 原创:建立QINTER外可用于交互式访问的独立子系统
- · hanyu看过来,24小时交易的AS/400如何备份?
- · 磁带放进去就弹不出来三个指示灯一会全亮着
- · 【探讨】如何使用Notes与其它关系数据库进行信息交互?
- · 【探讨】如何限制Notes用户邮箱大小?
- · Some info on AS/400 V5R3
- · iSeries课程学习导航图,给您指引学习或者培训方向。
- · 很菜的问题
- · 关于数据库文件的UC控制的问题
- · 转 Commit/Rollback概念
- · 有倒序排列的KEY值时的SETLL和SETGT
- · 大家帮忙来找茬(到底RPG程序错在哪?)
- · 讨论:关于创建obj时的参数--share
- · 帮忙看看这段程序的问题出在哪里?
- · 《最后100天的AS400学习心情笔记》
- · 在一个PF中加一字段,用来表示记录的序号!
- · SLR60磁带机可以做200GB系统的全系统备份,何故?
- · 讨论系统设备的异动监控
- · 求助:存储过程的查找和COPY
- · 【步骤】使用SQL DTS功能实现从DB/2向SQL Server传输数据.
- · 请教:如何修改PF文件的CCSID值?
- · 关于触发器的初级问题,请用过的大虾指教
- · 如何使用FTP在PC和AS/400之间传输包含中文的文件
- · 各位前辈,小女子是400初学之初学
- · (原)在as400上更换硬盘
- · pcom各种版本的问题总结
- · (如何在iSeries(AS/400)將资料加密(ZT)
- · 急等 如何更改as/400 V4R5 如何更改IP地址
- · 通过Navigator配置实现PC端拨号登陆远程AS/400.
- · 高版本安全数据向低版本系统迁移问题
- · as400与windows如何互相传送文件
- · 【分享】如何实现直接从AS/400发送信息到指定的邮箱.
- · rpg的小问题谁能解决一下,先谢了!(新手)
- · CA连接不上,PCOMM正常使用,授权及网络正常。什么问题?
- · exfmt与write的区别
- · 在TCPIP基础上建立APPC连接
- · 硬盘利用率的问题
- · 如何利用RPG,CL和ACCESS制作一个条形码标签的打印程序?
- · domino的邮件问题 急! (居士快进)
- · 请教400上的文件问题
- · 如何用PC超级终端对RS6000完成控制及安装(希望是我的精品)
- · (原创) 7133-T40阵列故障解决实例
- · 又来临时抱佛脚了,请教s7a电源问题
- · 经验交流<如何在AIX下面更改before login banner>
- · 刚完成的一个hacmp 5.1 +db2 udb 8.1 ese环境下的HA配置!
- · [原创]SNORT&ACID install on AIX 5.2
- · 一光纤卡的问题的解决,有类似问题的可以参考
- · 使用SFU实现Windows和AIX文件共享-请求加精
- · ORACLE/RAC安装完全攻略
- · Step bye Step for Install the Domino server 7 on aix 5L 5.2
- · 199学习笔记(chap11)
- · 在cp时的怪问题
- · 一个系统频繁宕机(888 102 300 0C0)的案例分析与解决!!!
- · 个人总结-理解和使用aix的日志系统
- · VIO配置1
- · IY19375补丁打不上。-_-!!!
- · 老的文章不一定就没有用处了:)
- · 任何在aix下面看你的系统是32位还是64位的
- · 吃了一个“螃蟹”

