tracker release 1.1

(lightweight software usage monitoring)

Written by Russ Allbery <>

Copyright 1999, 2003, 2009 Board of Trustees, Leland Stanford Jr. University. This software is distributed under a BSD-style license. Please see the file LICENSE in the distribution for more information.


tracker is a system for lightweight usage tracking of binaries. It consists of a wrapper client that sends a UDP packet before running the real binary and a server that receives those UDP packets and logs them. It does no authentication and can handle a very high volume of tracking.


tracker is a system for doing lightweight usage tracking of binaries. It is not designed to be foolproof and is trivial to bypass, and therefore is not a good substitute for any sort of license server. It is instead designed to answer questions like "is anyone using this any more?" or "about how many people run this program a day?", questions where the user has no reason to try to bypass the tracking system.

This package consists of two programs, a client and a daemon. The daemon runs on a central host and accepts a single UDP packet from the client each time a tracked program is run. The client is installed by replacing the tracked program with a symlink to the tracker client and renaming the actual program to a different name. The tracker client sends a UDP packet to the server and then runs the actual program.

The trackerd daemon runs in the foreground and prints one line to standard output for each packet it receives. It's designed to run well under supervise and multilog, from Dan Bernstein's daemontools package.


The tracker client and server are both written in portable C and should compile on any UNIX-like system. Neither require anything outside of normal C libraries.

If you change the Automake files and need to regenerate, you will need Automake 1.10 or later. If you change and need to regenerate configure or, you will need Autoconf 2.63 or later.


To build and install this package, just run:

    make install

The last step will probably have to be done as root. This will install tracker in /usr/local/bin and trackerd in /usr/local/sbin. To change the installation location, you can pass --prefix to ./configure to set a different prefix, or use other options to change the individual directories. See ./configure --help for more information.

By default, tracker sets its packets to the host named "track" in the local domain. If you want to use a different host for your trackerd server, pass --with-server to ./configure. For example, to use as the server, run:


You can also use an IP address if you want (which will avoid a DNS lookup in tracker for each invocation).

Once tracker has been installed, you have to set up each program that you want to track. The tracker binary must be installed in the same directory as the program to track, and then the program should be renamed by appending ".t%" to the beginning of the name and then the original name should be symlinked to tracker.

For example, suppose tracker is installed in /usr/local/bin/tracker and you have a binary named fvwm-old that you want to monitor the usage of (so that you can tell when you can safely delete it). You would set this up by running the following commands:

    cd /usr/local/bin
    mv fvwm-old .t%fvwm-old
    ln -s tracker fvwm-old

Now, each time someone runs /usr/local/bin/fvwm-old, tracker will first send a UDP packet to your logging server and then run the actual binary.


The tracker web page at:

will always have the current version of this package, the current documentation, and pointers to any additional resources.

tracker is maintained using Git. You can access the current source by cloning the repository at:


or view the repository via the web at:
Converted to XHTML by faq2html version 1.33