diff options
author | Sage Weil <sage@newdream.net> | 2011-09-21 16:28:43 -0700 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2011-09-22 15:08:25 -0700 |
commit | 6f8f140350c91f4d823f7c7cc856d78abb57b22c (patch) | |
tree | 6349d318688a41254a633bd233a97ff5f8a693ca /src/ceph-debugpack.in | |
parent | 97aa1aab7b56ecec8f2bdb4f996428c4d82929d5 (diff) | |
download | ceph-6f8f140350c91f4d823f7c7cc856d78abb57b22c.tar.gz |
c* -> ceph-*
Hopefully I didn't miss too much...
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'src/ceph-debugpack.in')
-rw-r--r-- | src/ceph-debugpack.in | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/src/ceph-debugpack.in b/src/ceph-debugpack.in new file mode 100644 index 00000000000..d0eae867478 --- /dev/null +++ b/src/ceph-debugpack.in @@ -0,0 +1,130 @@ +#!/bin/sh + + + +# if we start up as ./init-ceph, assume everything else is in the +# current directory too. +if [ `dirname $0` = "." ] && [ $PWD != "/etc/init.d" ]; then + BINDIR=. + LIBDIR=. + ETCDIR=. +else + BINDIR=@bindir@ + LIBDIR=@libdir@/ceph + ETCDIR=@sysconfdir@/ceph +fi + +BINDBGDIR="/usr/lib/debug/usr/bin" + +usage_exit() { + echo "usage: $0 [-c ceph.conf] <filename.tar.gz>" + exit +} + +wait_pid_exit() { + pid=$1 + + for i in {1..10}; do + [ -e /proc/$pid ] || return + sleep 1 + done + if [ -e /proc/$pid ]; then + echo Killing pid $pid + kill $pid + fi +} + + +. $LIBDIR/ceph_common.sh + +dest_tar="" + +while [ $# -ge 1 ]; do +case $1 in + --conf | -c) + [ -z "$2" ] && usage_exit + shift + conf=$1 + ;; + *) + if [ "$dest_tar" != "" ]; then + echo unrecognized option \'$1\' + usage_exit + fi + dest_tar=$1 + ;; +esac +shift +done + +[ "$dest_tar" = "" ] && usage_exit + +# get absolute path for dest_tar +[ `echo $dest_tar | cut -c 1` != "/" ] && dest_tar="`pwd`/$dest_tar" + +bins="ceph-mon ceph-mds ceph-osd" +core_paths="/ $BINDIR $BINDBGDIR" +[ "$conf" = "" ] && conf=$ETCDIR/ceph.conf +log_path=`$CCONF -c $conf "log dir"` + +[ -z "$conf" ] && usage_exit + + +tmp_path=`mktemp -d /tmp/cdebugpack.XXXXXXXXXX` +tmp_path_bin=$tmp_path/bin +tmp_path_bin_dbg=$tmp_path/bin.dbg +tmp_path_log=$tmp_path/out +tmp_path_core=$tmp_path/core +tmp_path_etc=$tmp_path/etc + +echo tmp_path=$tmp_path + +mkdir -p $tmp_path_bin +mkdir -p $tmp_path_bin_dbg +mkdir -p $tmp_path_log +mkdir -p $tmp_path_core +mkdir -p $tmp_path_etc + + +#copy the binaries + +for name in $bins; do + [ -e $BINDIR/$name ] && cp $BINDIR/$name $tmp_path_bin + [ -e $BINDBGDIR/$name ] && cp $BINDBGDIR/$name $tmp_path_bin_dbg +done + + +# copy the logs +cp -rp $log_path/* $tmp_path_log + +# copy cores (if exist) + +for path in $core_paths; do + files="`find $path -maxdepth 1 -name 'core*'`" + if [ "$files" != "" ]; then + for core_file in `ls $path/core*`; do + tmp_core=`mktemp $tmp_path_core/core.XXXX` + cp $core_file $tmp_core + done + fi +done + +# copy config +cp $conf $tmp_path_etc + +# other output +$BINDIR/ceph -s > $tmp_path_log/ceph-s & +wait_pid_exit $! +$BINDIR/ceph osd dump -o $tmp_path_log/ceph-osd-dump & +wait_pid_exit $! +$BINDIR/ceph mds dump -o $tmp_path_log/ceph-mds-dump & +wait_pid_exit $! +$BINDIR/ceph pg dump -o $tmp_path_log/ceph-pg-dump & +wait_pid_exit $! + + +# now create a tarball +tmp_path_dir=`echo $tmp_path | cut -d / -f 3` +tar cvfz $dest_tar -C /tmp $tmp_path_dir +rm -fR $tmp_path + |