Лог lighttpd

Это лог непрерывно наращивается и просматривать его через некоторое время становится неудобно. Достаточно добавить ротацию в S50lighttpd.

1) Добавить после определения LOG_D имя файла лога, типа такого (или как-то иначе, по вкусу, как настроен лог)[code]LOG_F=$MOUNT/var/log/$BIN.log[/code]

2) после

    ppp_down)
    ;;

добавить

    rotate)
    echo "Rotate logfile of lighttpd"
    mkdir -p $LOG_D/`date +%Y`/`date +%m`
    mv $LOG_F $LOG_D/`date +%Y`/`date +%m`/`date +%d`.log
    kill -HUP `cat $PID_F`
    ;;

3) заменить строку Usage на

    echo "Usage: $0 {start|stop|restart|status|link_up|link_down|ppp_up|ppp_down|rotate}"

4) теперь остаётся только добавить задание cron запускать «S50lighttpd rotate», например, каждые сутки в 00:00, и в результате получаем красивое разбиение лога по датам:

# lighttpd.log rotate (move to dir /var/log/lighttpd)
0 0 * * * /media/DISK_A1/system/etc/init.d/S50lighttpd rotate

Разумеется, это давным-давно известное решение, но для ротации логов некоторые по привычке ищут logrotate.

См. ниже измененный файл полностью:

#!/bin/sh
# Copyright (C) 2006 OpenWrt.org

MOUNT="/media/DISK_A1/system"
export PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
export LD_LIBRARY_PATH=$MOUNT/lib:$MOUNT/usr/lib:/lib:/usr/lib

BIN=lighttpd
DEFAULT=$MOUNT/etc/default/$BIN
LOG_D=$MOUNT/var/log/$BIN
LOG_F=$MOUNT/var/log/$BIN.log
RUN_D=$MOUNT/var/run
PID_F=$RUN_D/$BIN.pid
#PORT_F=81
PORT_F=80

daemon_status ()
{
	[ -f $PID_F ] && [ -d /proc/`cat $PID_F` ]
}
 
start_daemon() {
	mkdir -p $LOG_D
	mkdir -p $RUN_D
	$BIN -f $MOUNT/etc/$BIN/$BIN.conf -m $MOUNT/usr/lib/$BIN
	counter=5
	while [ $counter -gt 0 ]
	do
		daemon_status && break
		let counter=counter-1
		sleep 1
	done
	iptables -A INPUT -p tcp --dport $PORT_F -j ACCEPT
}

stop_daemon() {
	kill `cat $PID_F`
	counter=10
	while [ $counter -gt 0 ] 
	do
		daemon_status || break
		let counter=counter-1
		sleep 1
	done
	iptables -D INPUT -p tcp --dport $PORT_F -j ACCEPT 2> /dev/null 
}

case $1 in
	start)
	if daemon_status
	then
		logger -t S50lighttpd "Start - already running"
		echo lighttpd daemon already running
	else
		logger -t S50lighttpd "Start"
		echo Starting lighttpd daemon...
		start_daemon
	fi
	;;
	stop)
	logger -t S50lighttpd "Stop"
	echo Stopping lighttpd daemon...
	stop_daemon
	;;
	restart)
	logger -t S50lighttpd "Restart"
	stop_daemon
	start_daemon
	;;
	status)
	if daemon_status
	then
		echo Running
	else
		echo Not running
	fi
	;;
	link_up)
	;;
	ppp_up)
	;;
	link_down)
	;;
	ppp_down)
	;;
	rotate)
	echo "Rotate logfile of lighttpd"
	mkdir -p $LOG_D/`date +%Y`/`date +%m`
	mv $LOG_F $LOG_D/`date +%Y`/`date +%m`/`date +%d`.log
	kill -HUP `cat $PID_F`
	;;
	*)
	echo "Usage: $0 {start|stop|restart|status|link_up|link_down|ppp_up|ppp_down|rotate}"
	;;
esac