HP OpenVMS Systemsask the wizard |
The Question is: How can I get how many interactive session a username has ? I looked the lexical functions and I didn't find anything. Thanks, Ginette C. Fournier (450) 928-5125 x 5255 The Answer is : This depends on what you mean by "Interactive". The DCL command SHOW USERS <username> will give you a count of all processes in INTERACTIVE mode, as defined by OpenVMS. However, this will include some processes which may not conform with all definitions of "interactive", for example, DECwindows sessions and subprocesses of interactive sessions. To be more specific, use the F$CONTEXT and F$PID lexical functions to select the processes you want. For example, the following will count all processes that are logged into a terminal: $ IF p1.EQS."" THEN INQUIRE p1 "Username" $ ctx = "" $ temp = F$CONTEXT ("PROCESS", ctx, "USERNAME", p1,"EQL") $ temp = F$CONTEXT ("PROCESS", ctx, "MODE","INTERACTIVE","EQL") $ temp = F$CONTEXT ("PROCESS", ctx, "TERMINAL",- "FT*,LT*,OP*,RT*,TN*,TT*,TX*,VT*","EQL") $ count=-1 $ loop: count=count+1 $ IF F$PID(ctx).NES."" THEN GOTO loop $ WRITE SYS$OUTPUT "Username ''p1' has ''count' interactive sessions" $ EXIT (note the list of terminal names is not exhaustive, but includes the common terminal types). Additional calls to F$CONTEXT can be used to precisely specify the processes that you wish to count. See HELP LEX F$CONTEXT for more information.
|