Something that I'd like to share with you!

Wednesday, July 28, 2010

Using rotatelogs to rotate nohup.out

No comments :
Extending my focus on rotatelogs, I was thinking of to use them with other software. This might help me to on how to rotate nohup.out without using cronjob. First, I need something to throw STDOUT. Something simple as below;

#!/bin/sh
while [ 1 ]
do
echo `date`
sleep 2
done

Script above will run in infinite loop and echo date output to STDOUT every 2 secs. Next is to test it with nohup so it could survive logout.

username@myserver:/mydir $ nohup ./test.sh
nohup: appending output to `nohup.out'

Let it run for a couple of seconds and kill it by CTRL-C. Then verify that the nohup.out contains couple lines of date in it. Next step is to pipe it with rotatelogs and observe what happen

username@myserver:/mydir $ nohup ./test.sh | ./rotatelogs nohup.out.%S 10 &
[1] 24828

Command line above will pipe the STDOUT from the simple test.sh and send them to rotatelogs to be rotated accordingly. nohup.out.%S will cause the nohup.out filename to rotate as below (%S: 2-digit second from rotatelogs)

-rw-r--r-- 1 username usergrp 1479 2010-07-28 10:32 nohup.out.40
-rw-r--r-- 1 username usergrp 1595 2010-07-28 10:32 nohup.out.50
-rw-r--r-- 1 username usergrp 1711 2010-07-28 10:33 nohup.out.00
-rw-r--r-- 1 username usergrp 1682 2010-07-28 10:33 nohup.out.10
-rw-r--r-- 1 username usergrp 1653 2010-07-28 10:33 nohup.out.20
-rw-r--r-- 1 username usergrp 1566 2010-07-28 10:33 nohup.out.30

Oops! Now I relize that the output file will never be replaced. It keep on appending to an old file. Meaning that it will grow and need to be manually archive. :-(

Looking forward to try logrotate and it will be my next post, soon.

No comments :