# logrotate - rotate Upstart job log files to conserve disk space. # # Currently runs automatically 1 minute after session starts (to give # jobs a chance to settle). However, can be run manually any time using # 'start logrotate' to force logs to be rotated in low-disk space # scenarios. description "Rotate job log files" start on startup or :sys:rotate-logs task pre-start script logrotate=$(command -v logrotate 2>/dev/null || :) # logrotate is not installed [ -z "$logrotate" ] && exit 0 # started by event, so run logrotate normally [ -n "$UPSTART_EVENTS" ] && exit 0 # started manually, so force a rotation initctl set-env FORCE=--force end script script # started by event, so allow time for main jobs to settle [ -n "$UPSTART_EVENTS" ] && [ "$UPSTART_EVENTS" = startup ] && sleep 60 statedir=${XDG_CACHE_HOME:-$HOME/.cache}/logrotate statefile="$statedir/status" logdir=${XDG_CACHE_HOME:-$HOME/.cache}/upstart mkdir -p "$statedir" || : mkdir -p "$logdir" || : conf=$(mktemp) cat <$conf "$logdir/*.log" { hourly missingok rotate 7 compress notifempty nocreate } EOF logrotate $FORCE -s "$statefile" "$conf" || : rm -f "$conf" end script