Table of Contents


svscan - starts and monitors a collection of services


svscan [ directory ] [ log-service ]


svscan starts one supervise(8) process for each subdirectory of the current directory, up to a limit of 1000 subdirectories. svscan skips subdirectory names starting with dots. supervise(8) must be in svscan’s path.

svscan optionally starts a pair of supervise(8) processes, one for a subdirectory s, one for s/log, with a pipe between them. It does this if the name s is at most 255 bytes long and s/log exists and is a directory. (In versions 0.70 and below, it does this if s is sticky.) svscan needs two free descriptors for each pipe.

If log-service is specified and the named subdirectory exists, svscan starts the service found there and redirects its output through it. This service is started before any other.

Every five seconds, svscan checks for subdirectories again. If it sees a new subdirectory, it starts a new supervise(8) process. If it sees an old subdirectory where a supervise(8) process has exited, it restarts the supervise(8) process. In the log case it reuses the same pipe so that no data is lost.

svscan is designed to run forever. If it has trouble creating a pipe or running supervise(8) , it prints a message to stderr; it will try again five seconds later.

If svscan is given a command-line argument directory, it switches to that directory when it starts.

If svscan receives a TERM signal, it sends TERM signals to all non-log child supervise(8) processes and the five second service scan is reduced to one second. New services are ignored and if a running supervise(8) stops, it is not restarted. As each existing supervise(8) exits, svscan sends a TERM signal to the corresponding log supervise(8) , if one exists. After all child processes exit, svscan exits.

See Also

envdir(8) , envini(8) , envuidgid(8) , fghack(8) , multilog(8) , pgrphack(8) , readproctitle(8) , setlock(8) , setuidgid(8) , setuser(8) , softlimit(8) , supervise(8) , svc(8) , svok(8) , svscanboot(8) , svstat(8) , tai64n(8) , tai64nlocal(8)

Table of Contents