如何识别额外的 OpenVMS 终端会话然后终止它们?

如何识别额外的 OpenVMS 终端会话然后终止它们?

开放的VMS 直流电流命令显示我有三个活动会话。

$ 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

我该如何识别这两个旧的,然后终止它们?

答案1

嗯,我通常使用 ^T (control-T) 查看“我是谁”和 $ SHOW US CWHII/FULL。然后根据需要开枪杀人。

如果我们假设“旧”意味着不是当前会话,那么您可以按如下方式编写脚本:

$ 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
  • 当然,一旦满意,您就想用 STOP/ID 替换 WRITE SYS$OUTPUT。
  • 如果您想对每个节点上的所有旧进程执行此操作,请删除 NODE 上下文。
  • 如果您真的想使用“较旧”(射脚?),请考虑 F$GETJPI(“”, “LOGINTIM”)

干杯,海因

重新格式化:

$ 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

答案2

识别您正在运行的所有进程。

$ 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)

通过执行 Control-T 请求 DCL 中断和状态报告来识别当前的进程名称。

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

杀死两个没有该进程名称的进程。

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

两者的较低 PID 确认它们是较旧的进程。

这是基于以下信息的交互式方法的参考信息,无需使用脚本海因的回答。

相关内容