有时候外地的机器有问题,没有外网,工程师不在现场,想备份分析系统当前状态,这个脚本最好不过了。获取传统的log之外,获取当前的进程,内存等信息。
如果有外网能ssh就更好了,除此之外还可以gdb attach有问题的进程,进行一些其他实验尝试。
#!/bin/sh
#作用:收集问题机信息
#使用方法:测试前拷贝到测试机上,出现问题后切入终端或者远程进入运行该脚本,得到log信息。
#$sudo sh get-log.sh
echo ""
echo "请问,这是未破坏现场的本机终端里吗? [y/n]\c"
read answer
if [ "y" = "$answer" ]
then
#运行时间和平均负载
uptime > uptime.txt
#内存信息
free > free.txt
#进程信息
pstree > pstree.txt
ps -aux > ps.txt
{
sleep 2
pkill top
} &
top > top.txt
sudo tar -czvf log.tar.gz free.txt uptime.txt ps.txt pstree.txt top.txt /var
sudo rm free.txt uptime.txt ps.txt pstree.txt top.txt
#生成md5
md5sum log.tar.gz > log.tar.gz.md5
echo "备份成功"
echo "备份结果:log.tar.gz log.tar.gz.md5"
elif [ "n" = "$answer" ]
then
sudo tar -czvf log.tar.gz /var
md5sum log.tar.gz > log.tar.gz.md5
echo "备份成功"
echo "备份结果:log.tar.gz log.tar.gz.md5"
fi