Loosing STDOUT after file rotation

Dag-ErlingSmørgrav des at des.no
Fri Apr 2 07:19:50 PST 2004

James Housley <jim at thehousleys.net> writes:
> I have a program that I have the is supposed to run forever.  I log
> any output to a log file.  It is run in a startup script like thie:
> program_name >> $err_log 2>&1
> The problem is that after newsyslog rotates the $err_log file, no more
> data is written to the file.  I can not stop and restart the program.
> I can accept a signal.  But what do I need to do in "program_name" to
> allow the data to be written after the "rotation" of the file.

There is not much you can do unless you modify your program to write
directly to the log file instead of stdout (in which case you just
need to re-open the log file when you get a SIGHUP), or use something
like Apache's logrotate instead of newsyslog (pipe the program's
output to logrotate, which takes care of the rest)

Dag-Erling Smørgrav - des at des.no

More information about the freebsd-hackers mailing list