Wie kann ich zusätzliche OpenVMS-Terminalsitzungen identifizieren und diese dann beenden?

696
C.W.Holeman II

Der Befehl OpenVMS DCL zeigt an, dass drei Sitzungen aktiv sind.

$ show users OpenVMS User Processes at 12-OCT-2014 20:44:29.57 Total number of users = 3, number of processes = 6  Username Node Interactive Subprocess Batch CWHII ROSIE 3 EFRICHA ROSIE 1 HEINER ROSIE 2 

Wie identifiziere ich die beiden alten und beende sie dann?

2

2 Antworten auf die Frage

1
Hein

Hmmm, normalerweise verwende ich ^ T (control-T), um zu sehen, wer ich bin und $ SHOW US CWHII / FULL. Dann schießen Sie nach Bedarf zu töten.

Wenn wir von "alt" ausgehen und NICHT die aktuelle Sitzung meinen, dann schreiben Sie das wie folgt:

$ type CLEAN_ME_UP.COM $ ctx = "" $ this = F$GETJPI( "", "PRCNAM" ) $ user = F$GETJPI( "", "USERNAME" ) $ node = F$GETJPI( "", "NODENAME" ) $ temp = F$CONTEXT( "PROCESS", ctx, "USERNAME", user, "EQL" ) $ temp = F$CONTEXT ("PROCESS", ctx, "NODENAME", node, "EQL") $! IF F$TYPE( ctx ) .NES. "PROCESS_CONTEXT" THEN EXIT $loop: $ pid = F$PID( ctx ) $ IF pid .EQS. "" THEN EXIT $ that = F$GETJPI( pid, "PRCNAM" ) $ IF this.EQS.that $ THEN $ WRITE SYS$OUTPUT pid, " new" $ ELSE $ WRITE SYS$OUTPUT pid, " old" $ ENDIF $ GOTO loop 
  • Natürlich möchten Sie den WRITE SYS $ OUTPUT mit STOP / ID ersetzen, wenn Sie zufrieden sind.
  • Entfernen Sie den NODE-Kontext, wenn Sie dies für alle älteren Prozesse auf jedem Knoten tun möchten.
  • Betrachten Sie F $ GETJPI ("", "LOGINTIM"), wenn Sie wirklich "älter" verwenden möchten (in Fuß schießen?).

Prost, Hein

neu formatiert:

$ ctx = "" $ this = F$GETJPI( "", "PRCNAM" ) $ temp = F$CONTEXT( "PROCESS", ctx, "USERNAME", F$GETJPI("","USERNAME"), "EQL" ) $ temp = F$CONTEXT ("PROCESS", ctx, "NODENAME", F$GETJPI("","NODENAME"), "EQL") $! IF F$TYPE( ctx ) .NES. "PROCESS_CONTEXT" THEN EXIT $loop: $ pid = F$PID( ctx ) $ IF pid .EQS. "" THEN EXIT $ IF F$GETJPI( pid, "PRCNAM" ).NES.F$GETJPI("", "PRCNAM") THEN WRITE SYS$OUTPUT "STOP ",pid $ GOTO loop 
1
C.W.Holeman II

Identifizieren Sie alle Prozesse, die Sie ausführen.

$ SHOW USER CWHII/FULL OpenVMS User Processes at 13-OCT-2014 16:13:46.49 Total number of users = 1, number of processes = 3  Username Node Process Name PID Terminal CWHII ROSIE CWHII 20200117 TZA44: (108.225.238.117) CWHII ROSIE _TZA18: 202000B4 TZA18: (108.225.238.117) CWHII ROSIE _TZA33: 202000C9 TZA33: (108.225.238.117) 

Identifizieren Sie den Prozessnamen des aktuellen Benutzers, indem Sie einen DCL-Interrupt- und Statusbericht anfordern, indem Sie ein Control-T ausführen.

$ ^T ROSIE::CWHII 16:13:49 (DCL) CPU=00:02:48.66 PF=15943 IO=9693 MEM=245 

Töte die beiden, die diesen Prozessnamen nicht haben.

$ STOP/IDENTIFICATION=202000B4 $ STOP/IDENTIFICATION=202000C9 

Die niedrigeren PIDs der beiden bestätigen, dass es sich um ältere Prozesse handelt.

Dies sind Informationen für eine interaktive Referenzmethode ohne Verwendung eines Skripts basierend auf den Informationen in Heins Antwort.