From MidasWiki
Revision as of 15:30, 19 August 2013 by Suz (talk | contribs)
Jump to navigation Jump to search


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

odbedit command list

Running odbedit and issuing the command "help" displays the list of commands:

$ odbedit
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

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