cQCD ;Check several things ;cQCD;
date ;date
N %H,%J,%R S %H=1+$H,%J=%H\1461,%R=%H#1461,DJ=%J*4+1841+(%R\365),DD=%R#365,DM=1 I %R=1460 S DD=365,DJ=DJ-1
F %J=31,(%R>1154)+28,31,30,31,30,31,31,30,31,30 Q:%J'
I) D
.. S R($O(R(""),-1)+1)=$J(N,8)_TAB_$P(^MAIL(0,"MAIL",N,0),"\",9)_" "_$P(^MAIL(0,"MAIL",N,0),"\",10)
.. I $G(^cLOG($ZU(5),"MAIL","Auto-Resend"))=1 D
... S $P(^MAIL(0,"MAIL",N,0),"\",12)=1
... S $P(^MAIL(0,"MAIL",N,0),"\",15)=""
... S $P(^MAIL(0,"MAIL",N,0),"\",16)=0
I $D(R) D
. S R(.1)="Check ^MAIL(0,""MAIL"",xxx)",R(.2)=""
. S R(.3)="Mail # "_TAB_"Created "
. S R(.4)="--------"_TAB_"----------------"
. I $G(^cLOG($ZU(5),"MAIL","Auto-Resend"))=1 D
.. S R($O(R(""),-1)+1)=""
.. S R($O(R(""),-1)+1)="Mail has been resent automatically."
. D M^cQ14("Unsent e-mail in namespace "_$ZU(5),.R,$G(^cLOG($ZU(5),"MAIL","Auto-Resend"))=1)
L -^cLOGL($ZU(5),"CTK0","Mail")
MAILZ Q
;
SYSTEM(debug) ;Check System
N A,E,N,S S N=0 K A
L +^cLOGL($ZU(5),"CTK0","System"):1 E Q ;Check already running
F S N=$O(^cLOG($ZU(5),"SYSTEM",N)) Q:N="" S S=^(N) I $L(S),S'=$ZCVT($ZU(110),"U") S A(S)=""
F S N=$O(A(N)) Q:N="" S E=$$SYS("\\"_N_"\c$",N,$G(debug))
L -^cLOGL($ZU(5),"CTK0","System")
SYSTEMZ Q
;
SYS(X,S,debug) ;Is system S reachable?
N E,R S X=$G(X),S=$G(S),E=0 I '$L(X) Q 1
L +^cLOGL($ZU(5),"CTK0","Sys"):1 E Q 0 ;Check already running
I ($$TST^cQFILE(X_"\WINNT\"))&($$TST^cQFILE(X_"\WINDOWS\")) D
. S E=1,R($O(R(""),-1)+1)="System "_S_" may be down."
. D M^cQ14(" Does not find "_S,.R)
L -^cLOGL($ZU(5),"CTK0","Sys")
I $G(debug) W ! ZW R
SYSZ Q E
;
CACHE(debug) ;Is Caché running?
N A,E,N,S S N="" K A
L +^cLOGL($ZU(5),"CTK0","Cache"):1 E Q ;Check already running
F S N=$O(^cLOG($ZU(5),"SYSTEM",N)) Q:N="" S S=^(N) I $L(S),S'=$ZCVT($ZU(110),"U") S A(S)=""
F S N=$O(A(N)) Q:N="" S E=$$SYS("\\"_N_"\c$",N),E=$$CRUN("\\"_N_"\c$","\\"_N_"\d$",N,$G(debug))
L -^cLOGL($ZU(5),"CTK0","Cache")
CACHEZ Q
;
CRUN(X,Y,S,debug) ;check if Caché is up
N A,B,C,E,H,I,J,K S E=0,X=$G(X),Y=$G(Y),S=$G(S) I '$L(X)!'$L(Y) Q 1
S C=$H-1,H=0 K A,B,R
F I=X,Y D
. S CA=$$INFO^cQ14,CA=I_"\"_$P(CA,"\",2,$L(CA,"\")-1)_"\Cache_Alive.txt"
. S E=$$FMD^cQFILE(CA,.K) I 'E S B(+$P(K,","),+$P(K,",",2))=CA
S C=$O(B(""),-1) I $L(C) S H=$O(B(C,""),-1)
I +$H-C*24*3600+$P($H,",",2)-H>3600 D
. S R($O(R(""),-1)+1)="Caché on system "_S_" may be down."
. I $L(C) D
.. S R($O(R(""),-1)+1)="",R($O(R(""),-1)+1)="File "_$G(B(+C,+H))
.. S R($O(R(""),-1)+1)="was last modified on "_$$HD^cAFD1(C)_" "_$$HT^cAFD1(","_H)
. S A=$G(^cLOG($ZU(5),"ALERT","CRUN"))
. S R=$ZCVT($ZU(110),"U")_" thinks that Caché is down on "_S D AL^cQ14($T(+0),.R,,1)
I $G(debug) W ! ZW R
CRUNZ Q E
;
REM(S) ;Check remote system
N E S S=$G(S) I '$L(S) Q
L +^cLOGL($ZU(5),"CTK0","Remote"):1 E Q ;Check already running
S E=$$MAP^cQMAP("x:","\\"_S_"\c$","wabcomdp","ter_beke\msmadm")
S E=$$SYS("x:",S)
S E=$$MAP^cQMAP("y:","\\"_S_"\d$","wabcomdp","ter_beke\msmadm")
S E=$$CRUN("x:","y:",S)
S E=$$JW^cQFILE("net use x: /delete")
S E=$$JW^cQFILE("net use y: /delete")
L -^cLOGL($ZU(5),"CTK0","Remote")
REMZ Q
;
SUSP(debug) ;Check for suspended jobs
N I,J,R,maxpid
L +^cLOGL($ZU(5),"CTK0","Suspend"):1 E Q ;Check already running
D JOBS^cQSYS S I=""
F S I=$O(JOB(0,I)) Q:I="" S J=JOB(0,I) I (+$P($$JP^cQJOB(J,"state"),"^")=18)!($P($$JP^cQJOB(J,"state"),"^")="SUSPW") D
. K R S R(1)="Job "_J_" is suspended." D M^cQ14(R(1),.R)
L -^cLOGL($ZU(5),"CTK0","Suspend")
I $G(debug) W ! ZW R
SUSPZ Q
;
SHDW(debug) ;Check shadowing
N A,B,C,I,J,JJ,JOB,K,L,R,SW,VAR,maxpid
I +$P($H,",",2)<900 Q ;do not check between 0:00 and 0:15
L +^cLOGL($ZU(5),"CTK0","Shadow"):1 E Q ;Check already running
K ^TEMP($J+.01,"VAR")
D JOBS^cQSYS S I="",SW=0
F S I=$O(JOB(0,I)) Q:I="" S J=JOB(0,I) S C=$$JP^cQJOB(J,"routine") D
. I (C="SHDWSREC")!(C="SHDWCREC")!(C="SHDWSBLK")!(C="SHDWCBLK") D
.. S B=$E(C,1,5),VAR(B,J,0)="" D V^cQ14(J,"S")
.. S A="addr\caughtup\cli\fd\ip\jrnf\sentaddr\val",K="" F L=1:1:$L(A,"\") S A(L)=$P(A,"\",L)
.. F S K=$O(^TEMP($J+.01,"VAR",J,K)) Q:K="" F L=1:1:$L(A,"\") I ^(K)=A(L) S VAR(B,J,A(L))=^(K+.01)
I $ZCVT($ZU(110),"U")=$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U")) D
. I $S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))'=$S($L($G(^cLOG($ZU(5),"SYSTEM","SLAVE"))):$G(^cLOG($ZU(5),"SYSTEM","SLAVE")),1:$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))) D
.. I $D(VAR("SHDWS")) S J="",SW=0 D I SW=1 Q
... F S J=$O(VAR("SHDWS",J)) Q:J="" D I SW Q
.... I $ZCONVERT($G(VAR("SHDWS",J,"cli")),"U")=$S($L($G(^cLOG($ZU(5),"SYSTEM","SLAVE"))):$G(^cLOG($ZU(5),"SYSTEM","SLAVE")),1:$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))) S SW=1
.... I 'SW,$P($ZU(54,13,$G(VAR("SHDWS",J,"cli"))),",")=$P($ZU(54,13,$S($L($G(^cLOG($ZU(5),"SYSTEM","SLAVE"))):$G(^cLOG($ZU(5),"SYSTEM","SLAVE")),1:$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U")))),",") S SW=1
.... I 'SW,$D(^cLOG($ZU(5),"SYSTEM","SLAVE","IP")),("\"_^("IP")_"\")[("\"_$P($ZU(54,13,$G(VAR("SHDWS",J,"cli"))),",")_"\") S SW=1
.... I SW D
..... ;I $G(VAR("SHDWS",J,"caughtup"))=1 Q
..... S JJ=$G(VAR("SHDWS",J,"fd"),$ZD(+$H,8)) I JJ'[$ZD(+$H,8) S SW=2 Q
..... S JJ=$G(VAR("SHDWS",J,"jrnf"),$ZD(+$H,8)) I JJ'[$ZD(+$H,8) S SW=2 Q
..... I $FN($G(VAR("SHDWS",J,"addr"))-$G(VAR("SHDWS",J,"sentaddr")),"-")>5000000 S SW=3 Q
.. S R($O(R(""),-1)+1)="This system "_$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))_" is Master for system "_$S($L($G(^cLOG($ZU(5),"SYSTEM","SLAVE"))):$G(^cLOG($ZU(5),"SYSTEM","SLAVE")),1:$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U")))_"."
.. I 'SW S R($O(R(""),-1)+1)="But there is no Shadow Server Job running for that system!"
.. I SW=2 S R($O(R(""),-1)+1)="Shadowing from journalfile"_$G(JJ)_" which is not from today."
.. I SW=3 S R($O(R(""),-1)+1)="Shadowing is lagging behind: "_$$MGB($G(VAR("SHDWS",J,"addr"))-$G(VAR("SHDWS",J,"sentaddr"))/1024/1024)_"."
.. S R($O(R(""),-1)+1)=""
I $ZCVT($ZU(110),"U")=$S($L($G(^cLOG($ZU(5),"SYSTEM","SLAVE"))):$G(^cLOG($ZU(5),"SYSTEM","SLAVE")),1:$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))),$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))'=$S($L($G(^cLOG($ZU(5),"SYSTEM","SLAVE"))):$G(^cLOG($ZU(5),"SYSTEM","SLAVE")),1:$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))) D
. I $D(VAR("SHDWC")) S J="",SW=0 D I SW=1 Q
.. F S J=$O(VAR("SHDWC",J)) Q:J="" D I SW Q
... I $ZCONVERT($G(VAR("SHDWC",J,"ip")),"U")=$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U")) S SW=1
... I 'SW,$P($ZU(54,13,$G(VAR("SHDWC",J,"ip"))),",")=$P($ZU(54,13,$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))),",") S SW=1
... I 'SW,$D(^cLOG($ZU(5),"SYSTEM","MASTER","IP")),("\"_^("IP")_"\")[("\"_$P($ZU(54,13,$G(VAR("SHDWC",J,"ip"))),",")_"\") S SW=1
... I SW D
.... S JJ=$G(^["%SYS"]SYS("shdwcli",$G(VAR("SHDWC",J,"cli"),1),"remjrn"),$ZD(+$H,8)) I JJ'[$ZD(+$H,8) S SW=2 Q
. S R($O(R(""),-1)+1)="This system "_$S($L($G(^cLOG($ZU(5),"SYSTEM","SLAVE"))):$G(^cLOG($ZU(5),"SYSTEM","SLAVE")),1:$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U")))_" is Shadow for system "_$S($L($G(^cLOG($ZU(5),"SYSTEM","MASTER"))):$G(^cLOG($ZU(5),"SYSTEM","MASTER")),1:$ZCVT($ZU(110),"U"))_"."
. I 'SW S R($O(R(""),-1)+1)="But there is no Shadow Client Job running for that system!"
. I SW=2 S R($O(R(""),-1)+1)="Shadowing from journalfile "_$G(JJ)_" which is not from today."
I $D(R) D M^cQ14("Problem with Shadowing.",.R)
K ^TEMP($J+.01,"VAR")
L -^cLOGL($ZU(5),"CTK0","Shadow")
I $G(debug) W ! ZW R
SHDWZ Q
;
JJOB() ;Get job number of Journal Daemon
N I,J,JOB D JOBS^cQSYS S I="",J=0
F S I=$O(JOB(0,I)) Q:I="" I $$JP^cQJOB(JOB(0,I),"jobtype")=$S(($P($P($ZV,")",2),"(",1)[" 2008")!($P($P($ZV,")",2),"(",1)[" 2010"):7,1:16) S J=JOB(0,I) Q
JJOBZ Q J
;
JRNL(debug) ;Check journaling
N A,B,C,BH,C,DIR,I,J,K,JC,JD,JF,JFH,JRNL,R,SWJD,SWSE,SWSS,X,i,maxpid
I +$P($H,",",2)<900 Q ;do not check between 0:00 and 0:15
L +^cLOGL($ZU(5),"CTK0","Journal"):1 E Q ;Check already running
S SWJD=0,JRNL=$$JJOB()
I 'JRNL S R($O(R(""),-1)+1)="Journaling is not active!"
I JRNL K A,B,C,X D
. S JC=$$JCUR,JF=$P($P(JC,"\",$L(JC,"\")),"."),JFH=$S(JF?8N:$ZDATEH(JF,8),1:0)
. K DIR F J="CURDIR","ALTDIR" S DIR=$G(^%SYS("JOURNAL",J)) I $L(DIR) S DIR(DIR)=""
. S DIR="" K K
. F S DIR=$O(DIR(DIR)) Q:DIR="" D DIR^cQDIR(DIR,.K) S I="" D K K
.. F S I=$O(K(I)) Q:I="" M A($O(A(""),-1)+1)=K(I) S B=$P($P(A(I,0),"\",$L(A(I,0),"\")),".") I B?8N S X(B)=$G(X(B))+1
. S JMAX=+$G(^cLOG($ZCVT($ZU(110),"U"),"JOURNAL","MAX")) I 'JMAX S JMAX=5
. I $G(X(JF))>JMAX S R($O(R(""),-1)+1)="Current journalfile is "_JC_".",R($O(R(""),-1)+1)="Too many Journalfiles for "_JF_"! Check it out!"
. I JF'=$ZD(+$H,8) S R($O(R(""),-1)+1)="Current journalfile "_JC_" is not from today!"
. S JD=$P($G(^%SYS("JOURNAL","LIFESPAN","FILE"),7),",")
. S I="" F S I=$O(A(I)) Q:I="" D
.. S C(0)=$G(C(0))+1,C(1)=$G(C(1))+$G(A(I,2)),B=$P($P(A(I,0),"\",$L(A(I,0),"\")),".")
.. ; If journalfile check modification date
.. I B?8N,(JFH-A(I,4))>(JD+1) D
... I 'SWJD S R($O(R(""),-1)+1)="There are journalfiles older than "_JD_" days.",SWJD=1
... S R($O(R(""),-1)+1)=A(I,0),X=$G(X)+1,X(X)=A(I,0)
.. I B=JF S C(2)=$G(C(2))+$G(A(I,2))
. ; If journalfiles not purged, do it now or delete them if purge failed.
. I SWJD D
.. S NSPC=$ZU(5) ZN "%SYS"
.. S (SWSE,SWSS)=0,R($O(R(""),-1)+1)=""
.. S i="" F S i=$O(^SYS("shdwcli",i)) Q:i="" I $G(^SYS("shdwcli",i),1) S x=$$STOP1^SHDWCLI(i),SWSE=1
.. I SWSE S R($O(R(""),-1)+1)="Shadowing has been stopped."
.. H 3 D PURGE^JRNUTIL H 3
.. S R($O(R(""),-1)+1)="Journalfiles have been purged."
.. S i="" F S i=$O(X(i)) Q:i="" S ER=$ZU(140,5,X(i))
.. S i="" F S i=$O(^SYS("shdwcli",i)) Q:i="" I $G(^SYS("shdwcli",i),1) S x=$$START1^SHDWCLI(i),SWSS=1
.. I SWSS S R($O(R(""),-1)+1)="Shadowing has been started."
.. S R($O(R(""),-1)+1)=""
.. ZN NSPC
. I $D(R),$D(C) D
.. S R($O(R(""),-1)+1)="There are "_$G(C(0),0)_" Journalfiles."
.. I $D(C(1)) S R($O(R(""),-1)+1)="For a total (7 days) of "_$$MGB(C(1)\1024\1024)_"."
.. I $D(C(2)) S R($O(R(""),-1)+1)="Last series of journalfiles (1 day) : "_$$MGB(C(2)\1024\1024)_"."
I $D(R) D M^cQ14("Problem with Journaling.",.R)
L -^cLOGL($ZU(5),"CTK0","Journal")
I $G(debug) W ! ZW R
JRNLZ Q
;
JRNLD(X,debug) ;Check journal-directory
N I,J,JC,JOB,JRNL,R,maxpid
I +$P($H,",",2)<900 Q ;do not check between 0:00 and 0:15
L +^cLOGL($ZU(5),"CTK0","JournalDirectory"):1 E Q ;Check already running
S X=$G(X) I '$L(X) S X="C"
S JRNL=$$JJOB()
I 'JRNL S R($O(R(""),-1)+1)="Journaling is not active!"
I JRNL K A,B,C D
. S JC=$$JCUR
. I $ZCONVERT($E(JC),"U")'=$ZCONVERT(X,"U") D
.. S R($O(R(""),-1)+1)="Current Journalfile is "_JC_"."
.. S R($O(R(""),-1)+1)="Drive "_$E(JC)_" is not the expected one "_X_"! Check it out!"
I $D(R) D M^cQ14("Problem with Journaling.",.R)
L -^cLOGL($ZU(5),"CTK0","JournalDirectory")
I $G(debug) W ! ZW R
JRNLDZ Q
;
JCUR() ;return current Journalfile
N %nspc,K
S %nspc=$ZU(5) zn "%SYS"
S K=$$curfile^JRNSTART
I K="" S K=$G(^%SYS("JOURNAL","CURRENT")) I +K S K=$P(K,"^",2)
ZN %nspc
JCURZ Q K
;
FS(X,L,debug) ;Check for free space on disks
N A,I,R
L +^cLOGL($ZU(5),"CTK0","FreeSpace"):1 E Q ;Check already running
S X=$G(X,""),L=$G(L,256) D SP^cQ14(X,.A)
I $D(A) S I="" D
. F S I=$O(A(I)) Q:I="" D
.. I A(I)?.N S A=A(I)\1024\1024 I A "_CA)
L -^cLOGL($ZU(5),"CTK0","SetAlive")
I $G(debug) W ! ZW CA
SALZ Q
;
MGB(K) Q $S(K>1024:$TR($FN(K/1024,",T",2),".,",",.")_"GB",1:$TR($FN(K,",T",0),".,",",.")_"MB")
;
GB(K) Q $TR($FN(K,",T",2),".,",",.")_"GB"
;
MB(K) Q $TR($FN(K,",T",2),".,",",.")_"MB"
;
KB(K) Q $TR($FN(K,",T",0),".,",",.")_"KB"
;
ZZ ; 17.01.2012 - 15:58 * Cache-r6.4.9