The MIDAS odbedit utility is primarily an Online Database (ODB) Editor. It also acts as a run control and has limited run monitoring features, so is an alternative to the web-based run control program mhttpd. On the other hand, mhttpd has limited editing capability, and does not support all of the features of odbedit.
The features of odbedit include
- create the ODB of the desired size
- save all or part of the ODB onto disk and reload from a saved file
- list/create/rename/re-order/delete ODB keys
- edit contents of ODB keys
- create (soft)links to ODB keys
- start/stop runs
- list and shutdown active clients
- create a c-structure from the ODB
- change a key's access mode (e.g. read-only)
- execute a list of commands from a file
- connect to corrupted ODB
odbedit treats the hierarchical online database very much like a file system. Most commands are similar to UNIX file commands, e.g. ls, cd, chmod, ln etc. The help command displays a short description of all commands.
The odbedit commands and mode of operation are described fully in the following sections.
Starting odbedit utility
- [ -h hostname ]
- [ -e exptname ]
- [-c command ] :Perform a single command
- [-c @commandFile ] :Perform commands in sequence found in the commandFile. Can be used to perform operations in script files. See examples.
- [-s size ] : size in bytes (for ODB creation). Specify the size of the ODB file to be created when no shared file is present in the experiment directory (default 128KB).
- [-d ODB Subtree] :Specify the initial entry ODB path to go to.
- [-g] debug
- [-C ] connect to corrupted ODB
ODBedit has a simple command line interface with command line editing similar to the UNIX tcsh shell. The following edit keys are implemented:
- [Backspace] Erase the character left from cursor
- [Delete/Ctrl-D] Erase the character under cursor
- [Ctrl-W/Ctrl-U] Erase the current line
- [Ctrl-K] Erase the line from cursor to end
- [Left arrow/Ctrl-B] Move cursor left
- [Right arrow/Ctrl-F] Move cursor right
- [Home/Ctrl-A] Move cursor to beginning of line
- [End/Ctrl-E] Move cursor to end of line
- [Up arrow/Ctrl-P] Recall previous command
- [Down arrow/Ctrl-N] Recall next command
- [Ctrl-F] Find most recent command which starts with current line
- [Tab/Ctrl-I] Complete directory. The command ls /Sy <tab> yields to ls /System.
- When odbedit is started for the first time, if there is no existing ODB for the experiment (given by the environment variable
MIDAS_EXPT_NAME or overruled by the -e argument), the ODB will be created with the default size of 1183808 blocks.
odbedit command list
Running odbedit and issuing the command "help" displays the list of commands:
$ odbedit [local:pol:S]/>help
Database commands ( are options, <> are placeholders):
alarm - reset all alarms cd <dir> - change current directory chat - enter chat mode chmod <mode> <key> - change access mode of a key 1=read | 2=write | 4=delete cleanup [client] [-f] - delete hanging clients [force] copy <src> <dest> - copy a subtree to a new location create <type> <key> - create a key of a certain type create <type> <key>[n] - create an array of size [n] del/rm [-l] [-f] <key> - delete a key and its subkeys -l follow links -f force deletion without asking exec <key>/<cmd> - execute shell command (stored in key) on server export <key> <filename> - export key into ASCII file find <pattern> - find a key with wildcard pattern help/? [command] - print this help [for a specific command] hi [analyzer] [id] - tell analyzer to clear histos import <filename> [key] - import ASCII file into string key n <source> <linkname> - create a link to <source> key load <file> - load database from .ODB file at current position ls/dir [-lhvrp] [<pat>] - show database entries which match pattern -l detailed info -h hex format -v only value -r show database entries recursively -p pause between screens make [analyzer name] - create experim.h mem [-v] - show memeory usage [verbose] mkdir <subdir> - make new <subdir> move <key> [top/bottom/[n]] - move key to position in keylist msg [type] [user] <msg> - compose user message old [n] - display old n messages passwd - change MIDAS password pause - pause current run pwd - show current directory resume - resume current run rename <old> <new> - rename key rewind [channel] - rewind tapes in logger save [-c -s -x -cs] <file> - save database at current position in ASCII format -c as a C structure -s as a #define'd string -x as a XML file set <key> <value> - set the value of a key set <key>[i] <value> - set the value of index i set <key>[*] <value> - set the value of all indices of a key set <key>[i..j] <value> - set the value of all indices i..j scl [-w] - show all active clients [with watchdog info] shutdown <client>/all - shutdown individual or all clients sor - show open records in current subtree start [number][now][-v] - start a run [with a specific number], [now] w/o asking parameters, [-v] debug output trunc <key> <index> - truncate key to [index] values ver - show MIDAS library version webpasswd - change WWW password for mhttpd wait <key> - wait for key to be modified quit/exit - exit
Using the external command ( -c argument)
In the simplest case, a single odbedit command can be entered on the command line using the -c argument, e.g.
[pol@isdaq01 src]$ odbedit -c start Starting run #401 Run #401 started [pol@isdaq01 src]$ odbedit -c stop Run #401 stopped
External command using a file ( -c &commandFile)
Perform commands in sequence found in the specified commandFile e.g.
[pol@isdaq01 pol]$ odbedit -d /Equipment/TDC/Settings/ -c @testfile.com
where the file "testfile.com" contains odbedit commands, such as
set testval 4 ls testval start
This external command feature allows for sophisticated shell scripts to be created that can manipulate the odb. Such scripts can for example
- check ODB parameters prior to beginning of run
- send run parameters to the electronic logbook
Scripts using the external command feature are often used at begin and end of run, see also /Programs/execute on start run
Specifying the initial entry path (the -d argument)
The odbedit -d argument is used in conjunction with the -c argument to specify the initial path, e.g.
[pol@isdaq01 pol]$ odbedit -d /test -c "set testval 3" [pol@isdaq01 pol]$ odb [local:pol:S]/>ls test testval