| #!/bin/sh |
| |
| # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # This script should be called daily to clean up log files. |
| |
| CLEANUP_PAUSED_FILE="/var/lib/cleanup_logs_paused" |
| NUM_DAYS_TO_PRESERVE=7 |
| |
| remove_old_dated_files() { |
| find "$1" -name "$2" -mtime +${NUM_DAYS_TO_PRESERVE} -exec rm '{}' ';' |
| } |
| |
| rotate_file() { |
| local file="$1" |
| if [ ! -f "${file}" ]; then |
| # Avoid creating an empty file if it does not exist to begin with |
| return |
| fi |
| local basename="${file%%.*}" |
| local extension="${file#*.}" |
| if [ "${basename}" = "${extension}" ]; then |
| extension="" |
| else |
| extension=".${extension}" |
| fi |
| echo Rotating "${file}" |
| for i in $(seq ${NUM_DAYS_TO_PRESERVE} -1 2); do |
| mv -f "${basename}.$((i - 1))${extension}" "${basename}.$i${extension}" |
| done |
| mv -f "${basename}${extension}" "${basename}.1${extension}" |
| touch "${basename}${extension}" |
| } |
| |
| rotate_logs() { |
| echo Rotating rsyslogd logs |
| for x in messages secure net.log faillog session_manager; do |
| rotate_file "/var/log/${x}" |
| done |
| chown syslog /var/log/messages /var/log/secure /var/log/net.log |
| sudo pkill -HUP rsyslogd |
| } |
| |
| if [ -r "${CLEANUP_PAUSED_FILE}" ]; then |
| echo "Exiting early because ${CLEANUP_PAUSED_FILE} exists." |
| exit 1 |
| fi |
| |
| # Remove old window manager logs (not logged in) |
| remove_old_dated_files /var/log/window_manager "chromeos-wm.*-*" |
| |
| # Remove old window manager logs (logged in) |
| remove_old_dated_files /home/chronos/user/log "chromeos-wm.*-*" |
| |
| # Remove old chrome logs (not logged in) |
| remove_old_dated_files /var/log/chrome "chrome_*-*" |
| |
| # Remove old chrome logs (logged in) |
| remove_old_dated_files /home/chronos/user/log "chrome_*-*" |
| |
| # Remove old screen locker logs |
| remove_old_dated_files /home/chronos/user/log "screen-locker.*-*" |
| |
| # Remove old miscellaneous UI logs |
| remove_old_dated_files /var/log/ui "ui.*-*" |
| |
| # Remove old update engine logs |
| remove_old_dated_files /var/log/update_engine "update_engine.*-*" |
| |
| # Remove old power manager logs |
| remove_old_dated_files /var/log/power_manager "power*" |
| |
| # Rotate other logs |
| rotate_logs |
| |
| # Report disk usage statistics |
| METRICS_ARGS="0 1073741824 50" |
| metrics_client Platform.DiskUsageVar \ |
| $(du -sxk /var/ | awk '{print $1}') $METRICS_ARGS |
| metrics_client Platform.DiskUsageChronos \ |
| $(du -sxk /home/chronos | awk '{print $1}') $METRICS_ARGS |