Хммм, я обычно использую ^ 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
- Конечно, вы захотите заменить WRITE SYS $ OUTPUT на STOP/ID, как только будете выполнены.
- Удалите контекст 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