HP3000-L Archives

April 2000, Week 2

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Melvin R Rees <[log in to unmask]>
Reply To:
Date:
Thu, 13 Apr 2000 07:22:10 GMT
Content-Type:
text/plain
Parts/Attachments:
text/plain (170 lines)
Hello John,

How about if they are accmulating CPU Seconds...

I have a customer with the same problems as you are reporting.  Here
is what we learned.

There is atleast one version of MPE iX 5.5 which will create
"UNAVAILABLE" ldevs when using VT that will not go away until you
abortio against the ldev.  This went away when we upgraded to
Powerpatch 5.

They needed a way to abort users who were idle for a period of time,
so we created a script that polled the computer ever x seconds, issued
a showproc, accumulated the seconds, and aborted anyone idle for for y
period of time.  It also uses a file to identify users that are never
aborted.  Here are the scripts needed:

These are a series of scripts we use for a variety of uses so their
are probably more efficient ways to do this, but it did not require
additional programs.

Main Script EMSIDLE loops every 300 seconds, if someone is idle for
2700 seconds they are aborted

:print emsidle
PARM INTERVAL=300,MAXTIME=2700
DELETEVAR EMSJB@
SETVAR EMSDONE 0
WHILE EMSDONE = 0
  SHOWPROC JOB=@S >EMSIDLEF
  EMSRECTL :,8 <EMSIDLEF
  SHOWVAR EMSJB@_NEW >EMSIDLEF
  SHOWJOB JOB=@S
  EMSRECCK !INTERVAL,!MAXTIME <EMSIDLEF
  ECHO PAUSE !INTERVAL
  PAUSE !INTERVAL
ENDWHILE

This script accumulates data from the SHOPROC command and stores the
info in session variables.

:print emsrectl
PARM VAL,COL
SETVAR EMSRECCNT 0
SETVAR CIERROR 0
CONTINUE
INPUT EMSREC  >$NULL
WHILE CIERROR=0 DO
  IF (LEN(EMSREC) > !COL+LEN("!VAL")) THEN
  IF ("!VAL"=STR ('!EMSREC',!COL,LEN("!VAL"))) THEN
    SETVAR EMSRECCNT EMSRECCNT+1
    SETVAR EMSSESS RTRIM("EMSJB_![STR (EMSREC,24,6)]")
    IF NOT BOUND (![EMSSESS]_OLD) THEN
      SETVAR ![EMSSESS]_OLD 0
      SETVAR ![EMSSESS]_TIME 0
    ENDIF
    IF NOT BOUND (![EMSSESS]_NEW) THEN
      SETVAR ![EMSSESS]_NEW 0
    ENDIF
    SETVAR ![EMSSESS]_NEW ![EMSSESS]_NEW + &
           ![STR(EMSREC,9,2)]![STR(EMSREC,12,3)]
  ENDIF
  ENDIF
  SETVAR EMSREC "  "
  CONTINUE
  INPUT EMSREC  >$NULL
ENDWHILE
DELETEVAR EMSREC

This script checks the session variables and a searchs a file called
EMSXLIST.CMT.SYS for DO NOT ABORT exceptions in the format
        sessname,user.acct
It then aborts the sessions and displays messages as to what it did.

:print emsrecck
PARM INTERVAL=600,MAXTIME=2700
SETVAR CIERROR 0
CONTINUE
INPUT EMSREC  >$NULL
WHILE CIERROR=0 DO
    SETVAR EMSSESS "![STR (EMSREC,1,POS("=",EMSREC)-6)]"
    IF ![EMSSESS+"_NEW"] <> ![EMSSESS+"_OLD"] THEN
      SETVAR ![EMSSESS]_OLD ![EMSSESS]_NEW
      SETVAR ![EMSSESS]_TIME 0
    ELSE
      SETVAR ![EMSSESS]_TIME ![EMSSESS]_TIME + !INTERVAL
    ENDIF
    DELETEVAR ![EMSSESS]_NEW
    IF ![EMSSESS]_TIME > !MAXTIME THEN
      SHOWJOB ![STR (EMSSESS,POS("_",EMSSESS)+1,6)] >EMSTMP1
      EMSRECFD #,1,EMSNAME,46,30 <EMSTMP1
      EMSRECFD "!EMSNAME",1,EMSNAME,1,30 <EMSXLIST.CMT.SYS
      IF EMSNAME="NOTFOUND"
        ECHO ABORTJOB ![STR (EMSSESS,POS("_",EMSSESS)+1,6)]
        TELLOP Idle Job Aborted ![STR (EMSSESS,POS("_",EMSSESS)+1,6)]
        CONTINUE
        ABORTJOB  #![STR (EMSSESS,POS("_",EMSSESS)+1,6)]
      ELSE
        ECHO NO ABORT FOR  ![STR (EMSSESS,POS("_",EMSSESS)+1,6)]
EMSNAME
      ENDIF
    ENDIF
  SETVAR EMSREC "  "
  SETJCW CIERROR = 0
  CONTINUE
  INPUT EMSREC  >$NULL
ENDWHILE
DELETEVAR EMSREC
DELETEVAR EMSNAME

This script searchs a file for matching values.

:print emsrecfd
PARM VAL,COL,VAR,COL1,LEN
SETVAR CIERROR 0
CONTINUE
INPUT EMSREC  >$NULL
WHILE (CIERROR=0) AND ("!VAL"<>"![STR ("!EMSREC",!COL,LEN("!VAL"))]")
DO
  SETVAR EMSREC "  "
  CONTINUE
  INPUT EMSREC  >$NULL
ENDWHILE
IF (CIERROR=0) THEN
  SETVAR !VAR "![STR ("!EMSREC",!COL1,!LEN)]"
ELSE
  SETVAR !VAR "NOTFOUND"
ENDIF
DELETEVAR EMSREC
:

I hope this helps.  As the old saying goes, "MPE scripts? I got a
million of them!"

Rgds
Mel Rees

On Wed, 12 Apr 2000 04:54:53 -0400, John Dunlop
<[log in to unmask]> wrote:

>Very many thank yous to all who contributed to this thread, particularly
>Mike Hornsby, Jeff Vance, David Gale, Chris Bartram, Ed Stouder and
>Roger Smith among others.
>
>Roger Smith contributed a document from HP which is also mainly included
>in the FAQ at www.3k.com.
>
>So...if I understand correctly, the console doesn't count, TCP/IP
>sessions don't count, DSCOPY and FTP sessions don't count and SAMBA
>mappings don't count. However, sessions that have pressed return and may
>be at the password prompt do count.
>
>Also, this thread has evolved a nifty command file courtesy of Ed
>Stouder and Jeff Vance, which will be very handy.
>
>However, I received no information on how to tell when a session last
>did some IO. I guess it's not possible from the CI.
>
>Thanks again.
>
>Cheers,
>
>John Dunlop
>
>E-mail : [log in to unmask]       "If at first you don't succeed...
>Web : http://www.hp3000links.com       Don't take up sky-diving !"
>"All your HP3000 resources on the Net"
>

ATOM RSS1 RSS2