Table of Contents

Name

dirscan - starts and monitors a collection of processes managing entries in a directory

Synopsis

dirscan [-m] [-d directory] [-D directory] [-I includestring] [-X excludestring] path/to/command [arg(s)]

Description

dirscan starts one path/to/command process for each file, dir or other dir entries of the current directory, up to a limit of 20 processes. It does this by executing path/to/command [arg(s)] FILE for each dir entry FILE. dirscan skips directory entries starting with dots.

Every two seconds, dirscan checks for dir entries again. If it sees new entries, it starts a new path/to/command process for the next entry in aphabetical order. If it sees a dir entry where a process has exited, it restarts the process.

dirscan is designed to run forever. If it has trouble on vfork() or running path/to/command it prints a message to stderr; it will try again five seconds later.

dirscan does not need a configuration file or resource config. The usage of Dan Bernstein’s daemontools is strongly recommended.

dirscan has a small memory footprint and uses low resources. Compiled with dietlibc and sstripped its size is below 3 KB. Unlike other tools which are 20 times as big as dirscan it does not use faulty threaded code.

Options

-m
use modification time order instead of alphabetical order, files with equal mtime will be

ordered alphabetically

-d directory
change to directory before reading

dir entries

-D directory
change to directory before exec’uting child. Do not execute child if changing dir failed.

-I includestring
only process

dir entries with filenames containing includestring

-X excludestring
only

process dir entries with filenames not containing excludestring

See Also

svscan(8) , supervise(8)

http://cr.yp.to/daemontools.html

Examples

This example shows the substitution of NPCD in bulk mode of pnp4nagios:

$ dirscan -m -d var/perfspool /usr/bin/perl process_perfdata.pl

Automatically compress all files moved into a directory:

$ dirscan -d zipped -X .gz /bin/gzip -9

Caveats

Ordering by modification time can only be done up to a resolution of one second due to "time_t st_mtime" of struct stat.
dirscan should be run under supervise(8) control of the daemontools (http://cr.yp.to/daemontools.html) because of reliability and security reasons like dropping rights when using supervise and daemontools.

Author

Frank Bergmann, http://www.tuxad.com


Table of Contents