blob: 6e6d6e84e80625bc9a8f1af1231e9eb1048a9695 [file] [log] [blame]
#!/bin/sh
#
# Copyright (c) 2010 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.
#
# Copies all logs, screen-shots, crash dumps to Downloads folder.
# Help information about script usage.
. /usr/lib/shflags
DEFINE_boolean delete $FLAGS_FALSE \
"To collect data and clear up folders"
DEFINE_boolean screenshots $FLAGS_FALSE \
"To also collect saved screenshots"
FLAGS_HELP="USAGE: To collect logs and crash dumps: sh $0 [flags] \
\nCollected data is zipped to tar.bz2 file with timestamp in Downloads \
folder."
# Parse command line
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"
echo "Collecting logs for user"
home_dir=/home/chronos
# Creating folder to copy logs, screenshots and dumps.
if [ -z "$(ls -A /home/chronos/user)" ]; then
log_dir=${home_dir}/diagnostic_logs
tar_path=${home_dir}
else
log_dir=${home_dir}/user/Downloads/diagnostic_logs
tar_path=${home_dir}/user/Downloads
fi
mkdir -p ${log_dir}
sudo rm -rf ${log_dir}/*
echo "Created log folder in Downloads"
# Copying file with current timestamp and date.
date > ${log_dir}/timestamp.txt
echo "Copied current timestamp"
# Copying lsb-release file.
sudo cp /etc/lsb-release ${log_dir}/lsb_release.txt && \
echo "Copied lsb-release file with version information"
# Copying Consent To Send Stats file for client id.
sudo cp "${home_dir}/Consent To Send Stats" \
${log_dir}/consent_to_send_stats.txt && \
echo "Copied Consent To Send Stats file with client id"
mkdir -p ${log_dir}/system_level_logs ${log_dir}/user_level_logs \
${log_dir}/crashdumps
# Copying all logs under /var/log/.
sudo cp -r /var/log/* ${log_dir}/system_level_logs && \
echo "Copied all system level logs from /var/log/"
sudo cp -r ${home_dir}/user/log/* ${log_dir}/user_level_logs && \
echo "Copied relevant user level logs"
# Handling the change in chrome log file name in different builds.
if [ -d /var/log/chrome_old_logs ]; then
chrome_log_path=chrome_log_*
else
chrome_log_path=chrome_*
fi
# Copying chrome logs.
sudo cp -r ${home_dir}/${chrome_log_path} ${log_dir}/system_level_logs && \
echo "Copied system level chrome logs"
sudo cp -r ${home_dir}/user/${chrome_log_path} ${log_dir}/user_level_logs && \
echo "Copied user level chrome logs"
# Adding extension .txt to all copied log files.
log_array="${log_dir}/system_level_logs/* ${log_dir}/user_level_logs/*"
for log_file in ${log_array}; do sudo mv "${log_file}" "${log_file}.txt"; done
# Copying crash dumps.
sudo cp -rf "${home_dir}/user/.config/google-chrome/Crash Reports/" \
${log_dir}/crashdumps/
crash_array="\
/var/spool/crash/* \
${home_dir}/user/crash/* "
sudo cp -rf ${crash_array} ${log_dir}/crashdumps/ && echo "Copied crash dumps"
# Copying screen-shots if flag --screenshots is specified.
if [ ${FLAGS_screenshots} -eq ${FLAGS_TRUE} ]; then
cp -rf ${home_dir}/user/Downloads/Screenshots ${log_dir}/screenshots && \
echo "Copied screen-shots"
fi
# Compressing the log folder with all collected files.
currentdate=$(date +%m%d%y-%H%M%S)
sudo tar cjfP ${tar_path}/log-${currentdate}.tar.bz2 ${log_dir}/
sudo rm -rf ${log_dir}/
echo "Log files zipped to folder under ${tar_path}: log-${currentdate}.tar.bz2"
# Deleting logs, dumps, screenshots from original location with flag --delete.
if [ ${FLAGS_delete} -eq ${FLAGS_TRUE} ]; then
echo "Deleting all logs"
sudo rm -rf /var/log/* ${home_dir}/${chrome_log_path}
sudo rm -rf ${home_dir}/user/log/* ${home_dir}/user/${chrome_log_path}
echo "Deleting crash dumps"
sudo rm -rf "${home_dir}/user/.config/google-chrome/Crash Reports/"
sudo rm -rf ${crash_array}
# Deleting screenshots with both --delete and --screenshots flags.
if [ ${FLAGS_screenshots} -eq ${FLAGS_TRUE} ]; then
echo "Deleting screen-shots"
sudo rm -rf ${home_dir}/user/Downloads/Screenshots/*
fi
# Reboot after deleting all files.
echo "Rebooting system after clean up in 1 minute"
sudo shutdown -r 1
else
echo "Logs and dumps are copied but not deleted."
echo "To clear all logs, run the script with --delete flag."
echo "For all flag options, run the script with --help or -h flag."
fi