The following discussion deals with using MUMPS on FreeBSD. For linux and any other O/S, the principles need to be followed but the files and directories may be different.
To start up MUMPS on system start, add a shell script like:#!/bin/sh # Start the MUMPS environemnt /usr/local/bin/mumps -j40 -g32 /mumpspath/mumpsdb sleep 2 /usr/local/bin/mumps -x 'J ^startup H' /mumpspath/mumpsdbinto /usr/local/etc/rc.d/ and set it executable.
The following line needs to be inserted in /etc/rc.shutdown after the line: # Insert shutdown procedures here
/usr/local/bin/mumps -x 'K ^$J' /mumpspath/mumpsdbTo use journaling, set it up by going into single user mode:
1. Shutdown MUMPS if it is running 2. mumps -j1 mumpsdb 3. mumps mumpsdb then, SET ^$SYSTEM("VOL",1,"JOURNAL_FILE")="/path/journal_file" and SET ^$SYSTEM("VOL",1,"JOURNAL_REQUESTED")=1 then KILL ^$J to exit MUMPS and re-start normally.Note that the journal_file must not exist at this stage but must be read/writable by the group attached to the mumps executable.
Journalling on each individual global (including ^$ROUTINE) is turned on with: SET ^$GLOBAL("global","JOURNAL")=1 eg. SET ^$GLOBAL("$ROUTINE","JOURNAL")=1 to journal all routine changes.When a global is created, it takes it's JOURNAL value from ^$GLOBAL("$GLOBAL","JOURNAL"). Set this to 1 to journal all new globals.
To examine the current journal status:
WRITE ^$SYSTEM("VOL",1,"JOURNAL_AVAILABLE") for 1/0 = on/off WRITE ^$SYSTEM("VOL",1,"JOURNAL_SIZE") for the current size of the journal file in bytes.To zero the current journal file, SET ^$SYSTEM("VOL",1,"JOURNAL_SIZE")=0.
#!/bin/sh # /usr/local/bin/mumps -x 'S ^$S("VOL",1,"WRITELOCK")=1' /one/onedb sleep 5 mt rew dump -0uaf /dev/nrsa0 / sleep 10 mt fsf dump -0uaf /dev/nrsa0 /usr sleep 30 /usr/local/bin/mumps -x 'S ^$S("VOL",1,"JOURNAL_SIZE")=0' /one/onedb /usr/local/bin/mumps -x 'S ^$S("VOL",1,"WRITELOCK")=0' /one/onedb mt offlineObviously, leave out the journal line if journalling is not in use.