#!/usr/bin/env bash
#指定结果文件
echo -ne "继续选择 y 放弃选择 n:"
#read result
result=`echo $result | tr -d " "`
#echo y|
if [[ $? -ne 0 ]]
then
print -u2 "failed."
exit 1
fi
echo "#############"
echo $result
echo "#############"
# send stderr to /dev/null gloabally
exec 2>/tmp/sa.err
# colors
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
reset=$(tput sgr0)
getHardwareData() {
cpuModel=$(awk -F: '/^model name/ {print $2; exit}' /proc/cpuinfo)
cpuCount=$(awk -F: '/^physical id/ { print $2 }' /proc/cpuinfo |sort -u |wc -l)
cpuCoreCount=$(lscpu |grep "^CPU(s):" |xargs |cut -d" " -f2)
cpuCoreList=$(lscpu |grep "^On-line CPU(s) list:" |xargs)
cpuData="$cpuCount x $cpuModel ($cpuCoreList)"
numaNodes=$(lscpu |grep -w "^NUMA node" |awk '{print $3}')
memTotal=$(awk '/^MemTotal/ {printf "%.2f GiB", $2 / 1024 / 1024}' /proc/meminfo |xargs echo)
swapTotal=$(awk '/^SwapTotal/ {printf "%.2f GiB", $2 / 1024 / 1024}' /proc/meminfo |xargs echo)
memData="physical memory: $memTotal; swap: $swapTotal"
for disk in $(grep -Ewo '(s|h|v|xv)d[a-z]|c[0-9]d[0-9]' /proc/partitions |sort -r |xargs echo); do
size=$(echo $(($(cat /sys/dev/block/$(grep -w $disk /proc/partitions |awk '{print $1":"$2}')/size) * 512 / 1024 / 1024 / 1024)))
diskData="$disk size ${size} GiB, $diskData"
done
diskData=$(echo $diskData |sed -e 's/,$//')
}
getOsData() {
hostname=$(hostname)
full_hostname=$(hostname -f)
arch=$(uname --machine)
os=$(find /etc -maxdepth 1 -name '*release' -type f | xargs cat |grep -E '^(PRETTY_NAME|DISTRIB_DESCRIPTION)'|head -n 1 |cut -d= -f2 |tr -d \")
kernel=$(uname -sr)
ip=$(ip address list |grep -oE "inet [0-9]{1,3}(\.[0-9]{1,3}){3}" |awk '{ print $2 }' |xargs echo)
[[ $(lsblk -n -o type |grep -c lvm) > 0 ]] && isLvmUsed=true || isLvmUsed=false
[[ $(lsblk -n -o type |grep -c raid) > 0 ]] && isMdraidUsed=true || isMdraidUsed=false
sKernSchedMigCost=$(sysctl -n -e kernel.sched_migration_cost_ns kernel.sched_migration_cost)
sKernSchedAG=$(sysctl -n -e kernel.sched_autogroup_enabled)
sVmDBytes=$(sysctl -n -e vm.dirty_bytes)
sVmDBgBytes=$(sysctl -n -e vm.dirty_background_bytes)
sVmDRatio=$(sysctl -n -e vm.dirty_ratio)
sVmDBgRatio=$(sysctl -n -e vm.dirty_background_ratio)
sVmDExpCSec=$(sysctl -n -e vm.dirty_expire_centisecs)
sVmOverMem=$(sysctl -n -e vm.overcommit_memory)
sVmOverRatio=$(sysctl -n -e vm.overcommit_ratio)
sVmSwap=$(sysctl -n -e vm.swappiness)
sVmMinFreeKb=$(sysctl -n -e vm.min_free_kbytes)
sVmZoneReclaim=$(sysctl -n -e vm.zone_reclaim_mode)
sKernNumaBal=$(sysctl -n -e kernel.numa_balancing)
sVmNrHP=$(sysctl -n -e vm.nr_hugepages)
sVmNrOverHP=$(sysctl -n -e vm.nr_overcommit_hugepages)
hpSizeMbCmd=$(awk '/^Hugepagesize:/ {print $2 / 1024}' /proc/meminfo)
hpSizeMb=${hpSizeMbCmd:-0}
hpTotalAllocCmd=$(awk '/^HugePages_Total:/ {print $2}' /proc/meminfo)
hpTotalAlloc=${hpTotalAllocCmd:-0}
hpTotalAllocGb=$(( $hpTotalAlloc * $hpSizeMb / 1024))
thpTotalAllocGb=$(awk '/^AnonHugePages:/ {printf "%.2f GiB", $2 / 1024 / 1024}' /proc/meminfo)
thpState=$(cat /sys/kernel/mm/transparent_hugepage/enabled |grep -oE '\[[a-z]+\]' |tr -d \[\])
thpDefrag=$(cat /sys/kernel/mm/transparent_hugepage/defrag |grep -oE '\[[a-z]+\]' |tr -d \[\])
sVmLaptop=$(sysctl -n -e vm.laptop_mode)
blkMqMod=$(find /sys/module -name use_blk_mq |cut -d/ -f4 |xargs echo)
hostList=$(ls -1 /sys/class/scsi_host/ |grep -owE 'host[0-9]+')
useBlkMq=$(cat /sys/class/scsi_host/host*/use_blk_mq |uniq -c)
}
echo -n "${yellow}Do an audit of the particular database? [y/n]: ${reset}"
main() {
getHardwareData
getOsData
getPkgInfo
getPostgresCommonData
[[ $pgcheck_success == 0 ]] && echo "WARNING: can't connect to postgres, skip postgres checks."
printSummary
doDbAudit
echo "${green}Finished.${reset}"
}
#main
check() {
getHardwareData
getOsData
getPkgInfo
getPostgresCommonData
[[ $pgcheck_success == 0 ]] && echo "WARNING: can't connect to postgres, skip postgres checks."
printSummary
doDbAudit
echo "${green}Finished.${reset}"
}
echo -n "${yellow}Do an audit of the particular database? [y/n]: ${reset}"
check
echo "
VERSION=$VERSION
${UPDATES}
GetConfig is specifically designed to be non-intrusive.
It will not impact system performance as even on slow systems it only take between 1 & 10 minutes to run.
It will only take longer if you have large HSSM, HTnM or HDvM logs.
##################################################################
GETCONFIG INSTRUCTIONS
##################################################################
# SILENT (NO OPTION) MODE
##################################################################
# ./getcfg <casenumber> -s <output destination>
*note:
<casenumber> is the HDS case number including prefix
-s is for silent mode
<output destination> is optional. If not specified /tmp is used.
In silent Mode, ALL defaults are accepted
##################################################################
# SILENT (NO OPTION) VERBOSE MODE
##################################################################
# ./getcfg <casenumber> -s -v <output destination> >/tmp/output.txt 2>&1 &
*note:
<casenumber> is the HDS case number including prefix
-s is for silent mode
-v is for verbose mode
<output destination> is the destination directory
You may use any combination (-sv) or (-vs)
It is strongly advised to add the >/tmp/output.txt 2>&1 & to capture
the output and run the script in the background when running it with the
verbose option.
You may also leave out the mode flags to specify only an output
destination
For example:
# ./getcfg <casenumber> <output destination>
This way you may run
# tail -f /tmp/output.txt
to view the results real-time while the getconfig completes.
##################################################################
# DEFAULT OPTION MODE
# *note: [] means accept the default option. Press <enter>
##################################################################
/tmp> #./getcfg
##################################################################
GSC GetConfig Data Collection Script version 7.15
##################################################################
Display README? [n]:
Enter your case number including HDS SD or EUC prefix : HDS00003640
Specify path to save getconfig data [/tmp]:
Display additional options? [n]:
##################################################################
Gathering standard system files .........
Gathering process information .....
Gathering additional system information ......
Gathering Platform Information and Control Library info ....
Gathering list of /usr/lib & /usr/local/lib files ...
Gathering error logs .......
Gathering dmesg log ...
...
##################################################################
# ADDITIONAL OPTIONS
# *note: [] means accept the default option. Press <enter>
##################################################################
/tmp> #./getcfg
##################################################################
GetConfig Data Collection Script version 7.15
##################################################################
Display README? [n]:
Enter your case number including HDS SD or EUC prefix : HDS00003640
Specify path to save getconfig data [/tmp]:
Display additional options? [n]: y
>Verbose mode? (*note: output is sent to screen) [n]: y
>Display Excludes? [n]: y
>>Exclude hdvm from getconfig? [n]:
>>Exclude htnm from getconfig? [n]:
>>Exclude hssm from getconfig? [n]:
>>Exclude hdlm from getconfig? [n]:
>>Exclude veritas from getconfig? [n]:
>>Exclude hitrack from getconfig? [n]:
>>Exclude horcm from getconfig? [n]:
>>Exclude rapidx from getconfig? [n]:
##################################################################
Gathering standard system files .........
Gathering process information .....
Gathering additional system information ......
Gathering Platform Information and Control Library info ....
Gathering list of /usr/lib & /usr/local/lib files ...
Gathering error logs .......
Gathering dmesg log ...
...
##################################################################
: LEGAL STUFF
This HDS Data Collection Tool ("GetConfig") is provided AS IS, with no warranty of any kind. Neither Hitachi Data Systems (HD
S) nor Hitachi, Ltd. warrants or represents the content of this tool. HDS and Hitachi, Ltd. disclaim all express and implied
warranties , including the implied warranties of merchantability, fitness for a particular purpose and non-infringement. You
are wholly responsible for your use of this tool and the results of such use. Neither HDS nor Hitachi, Ltd. shall be liable f
or any damages, direct, indirect, incidental, special, consequential or otherwise for the information, your use of the inform
ation or the result of such use.
##################################################################
"|more;
system_info
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 应用运行报错,运行报错: java.lang.UnsatisfiedLinkError: dalvik.syste...
- 解决方式 建立 ~/.huskyrc 文件,往里面塞入 引用 https://github.com/typicod...
- 不想听我bb的可以直接跳到后面我的解决方案 刚才用电脑的时候遇到一个问题,首先我是三个系统,本来是默认直接进入wi...
- 编译xcode项目,出现Build service could not start build operation...