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