NAME¶
md-mx-ctrl - Control mimedefang-multiplexor
SYNOPSIS¶
md-mx-ctrl [options] command
DESCRIPTION¶
md-mx-ctrl is a command-line tool for communicating with
mimedefang-multiplexor(8).
OPTIONS¶
- -h
- Displays usage information.
- -s path
- Specifies the path to the mimedefang-multiplexor socket. If not
specified, defaults to /var/spool/MIMEDefang/mimedefang-multiplexor.sock.
- -i
- This flag causes md-mx-ctrl to sit in a loop, reading commands on
standard input and printing results to standard output. It is intended for
use by a monitoring program such as watch-mimedefang.
COMMANDS¶
The following commands are available:
- status
- Prints the status of all slave Perl processes in human-readable format.
- rawstatus
- Prints the status of all slave Perl processes in a format easy to parse by
computer. The result is a single line with six words on it. The words are
separated by a single space character.
Each character in the first word corresponds to a slave, and is
"I" for an idle slave, "B" for a busy slave,
"S" for a slave which is not running, and "K" for a
slave which has been killed, but has not yet exited. A slave is
"idle" if there is a running Perl process waiting to do work.
"Busy" means the Perl process is currently filtering a message.
"S" means there is no associated Perl process with the slave,
but one can be started if the load warrants. Finally, "K" means
the slave Perl process has been killed, but has yet to terminate.
The second word is the total number of messages processed since the
multiplexor started up. The third word is the total number of slaves which
have been activated since the multiplexor started up. (That is, it's a
count of the number of times the multiplexor has forked and exec'd the
Perl filter.)
The fourth word is the size of the queue for request queuing, and the fifth
word is the actual number of requests in the queue. The sixth word is the
number of seconds elapsed since the multiplexor was started.
- barstatus
- Prints the status of busy slaves and queued requests in a nice "bar
chart" format. This lets you keep an eye on things with a script like
this:
while true ; do
md-mx-ctrl barstatus
sleep 1
done
- histo
- Prints a histogram showing the number of slaves that were busy each time a
request was processed. A single line is printed for the numbers from 1 up
to the maximum number of slaves. Each line contains the count of busy
slaves (1, 2, 3 up to MX_MAXIMUM), a space, and the number of times that
many slaves were busy when a request was processed.
- load
- Prints a table showing "load averages" for the last 10 seconds,
1 minute, 5 minutes and 10 minutes.
Each row in the table corresponds to a time interval, displayed in the first
column. The remaining columns in the table are:
Msgs: The number of messages scanned within the row's time interval.
Msgs/Sec: The average number of messages scanned per second within
the row's time interval.
Avg Busy Slaves: The average number of busy slaves whenever a
message was scanned. (If you are processing any mail at all, this number
will be at least 1, because there is always 1 busy slave when a message is
scanned.)
If you have the watch(1) command on your system, you can keep an eye
on the load with this command:
watch -n 10 md-mx-ctrl load
If you do not have watch, the following shell script is a less fancy
equivalent:
#!/bin/sh
while true; do
clear
date
md-mx-ctrl load
sleep 10
done
- rawload
-
Prints the load averages in computer-readable format. The format consists of
twenty-nine space-separated numbers:
The first four are integers representing the number of messages scanned in
the last 10 seconds, 1 minute, 5 minutes and 10 minutes.
The second four are floating-point numbers representing the average number
of busy slaves in the last 10 seconds, 1 minute, 5 minutes and 10 minutes.
The third four are floating-point numbers representing the average time per
scan in milliseconds over the last 10 seconds, 1 minute, 5 minutes and 10
minutes.
The fourth four are the number of slave activations (new slaves started)
over the last 10 seconds, 1 minute, 5 minutes and 10 minutes.
The fifth four are the number of slaves reaped (slaves that have exited)
over the last 10 seconds, 1 minute, 5 minutes and 10 minutes.
The sixth four are the number of busy, idle, stopped and killed slaves.
The seventh four are the number of messages processed, the number of slave
activations, the size of the request queue, and the number of requests
actually on the queue.
The final number is the number of seconds since the multiplexor was started.
- load-relayok
- Similar to load, but shows timings for filter_relay calls.
- load-senderok
- Similar to load, but shows timings for filter_sender calls.
- load-recipok
- Similar to load, but shows timings for filter_recipient
calls.
- rawload-relayok
- Similar to rawload, but shows timings for filter_relay
calls. Note that the slave activation and reap statistics are present, but
always 0. They are only valid in a rawload command.
- rawload-senderok
- Similar to rawload, but shows timings for filter_sender
calls. Note that the slave activation and reap statistics are present, but
always 0. They are only valid in a rawload command.
- rawload-recipok
- Similar to rawload, but shows timings for filter_recipient
calls. Note that the slave activation and reap statistics are present, but
always 0. They are only valid in a rawload command.
- load1 nsecs
- The load1 command displays the load for various commands over the
last nsecs seconds, where nsecs is an integer from 10 to
600. The load1 command combines the output of load,
load-relayok, load-senderokf and load-recipok into
one display.
You might use the command like this:
watch -n 10 md-mx-ctrl load1 60
- rawload1 nsecs
- Returns the load1 data in human-readable format. The result is a
line containing twenty-six space-separated numbers:
The first three numbers are the number of scans performed in the last
nsecs seconds, the average number of busy slaves when a scan was
initiated and the average number of milliseconds per scan.
The second three are the same measurements for filter_relay calls.
The third three are the same measurements for filter_sender calls.
The fourth three are the same measurements for filter_relay calls.
The thirteenth through sixteenth numbers are the number of busy, idle,
stopped and killed slaves, respectively.
The seventeenth number is the number of scans since
mimedefang-multiplexor was started.
The eighteenth number is the number of times a new slave has been activated
since program startup.
The nineteenth number is the size of the request queue and the twentieth
number is the actual number of queued requests.
The twenty-first number is the time since program startup and the
twenty-second number is a copy of nsecs for convenience.
The twenty-third through twenty-sixth numbers are the number of slaves
currently executing a scan, relayok, senderok and recipok command
respectively.
- slaves
- Displays a list of slaves and their process IDs. Each line of output
consists of a slave number, a status (I, B, K, or S), and for idle or busy
slaves, the process-ID of the slave. For busy slaves, the line may contain
additional information about what the slave is doing.
- busyslaves
- Similar to slaves, but only outputs a line for each busy slave.
- slaveinfo n
- Displays information about slave number n.
- reread
- Forces mimedefang-multiplexor to kill all idle slaves, and
terminate and restart busy slaves when they become idle. This forces a
reread of filter rules.
- msgs
- Prints the total number of messages scanned since the multiplexor started.
ADDITIONAL COMMANDS¶
You can supply any other command and arguments to
md-mx-ctrl. It
percent-encodes each command-line argument, glues the encoded arguments
together with a single space between each, and sends the result to the
multiplexor as a command. This allows you to send arbitrary commands to your
Perl slaves. See the section "EXTENDING MIMEDEFANG" in
mimedefang-filter(5) for additional details.
PERMISSIONS¶
md-mx-ctrl uses the multiplexor's socket; therefore, it probably needs to
be run as
root or the same user as
mimedefang-multiplexor.
AUTHOR¶
md-mx-ctrl was written by David F. Skoll <dfs@roaringpenguin.com>.
The
mimedefang home page is
http://www.mimedefang.org/.
SEE ALSO¶
mimedefang.pl(8),
mimedefang-filter(5),
mimedefang(8),
mimedefang-protocol(7),
watch-mimedefang(8)