Linux 中有很多可以查看系统信息如处理器信息、生产商名字、序列号等的命令。你可能需要执行多个命令来收集这些信息。同时,记住所有的命令和他们的选项也是有难度。
你可以写一个 shell 脚本 基于你的需求来自定义显示的信息。
以前我们出于不同的目的需要写很多个 bash 脚本 。
现在我们写一个新的 shell 脚本,在每次登录到 shell 时显示需要的系统信息。
这个脚本有 6 部分,细节如下:
通用系统信息
CPU/内存当前使用情况
硬盘使用率超过 80%
列出系统 WWN 详情
Oracle DB 实例
可更新的包
我们已经基于我们的需求把可能需要到的信息加到了每个部分。之后你可以基于自己的意愿修改这个脚本。
这个j脚本需要用到很多工具,其中大部分我们之前已经涉及到了。
你可以参照以前文章,了解工具详情。
如果你想为这个脚本增加其他的信息,请在评论去留下你的需求,以便我们帮助你。
Bash 脚本实现每次登录到 Shell 时可以查看 Linux 系统信息 这个脚本会在你每次登录 shell 时把系统信息打印到 terminal。
1 # vi /opt /scripts/system -info.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 #!/ bin/ bash echo - e "-------------------------------System Information----------------------------" echo - e "Hostname:\t \t " `hostname` echo - e "uptime:\t \t \t " `uptime | awk '{print $3 ,$4 }' | sed 's/,/ / '` echo - e "Manufacturer:\t \t " `cat /sys/ class /dmi/ id/ chassis_vendor` echo - e "Product Name:\t \t " `cat /sys/ class /dmi/ id/ product_name` echo - e "Version:\t \t " `cat /sys/ class /dmi/ id/ product_version` echo - e "Serial Number:\t \t " `cat /sys/ class /dmi/ id/ product_serial` echo - e "Machine Type:\t \t " `vserver= $(lscpu | grep Hypervisor | wc - l); if [ $vserver - gt 0 ]; then echo "VM" ; else echo "Physical" ; fi` echo - e "Operating System:\t " `hostnamectl | grep "Operating System" | cut - d ' ' - f5- ` echo - e "Kernel:\t \t \t " `uname - r` echo - e "Architecture:\t \t " `arch` echo - e "Processor Name:\t \t " `awk - F ':' '/^model name/ {print $2 }' /proc/ cpuinfo | uniq | sed - e 's/^[ \t]*/ / '` echo - e "Active User:\t \t " `w | cut - d ' ' - f1 | grep - v USER | xargs - n1` echo - e "System Main IP:\t \t " `hostname - I ` echo "" echo - e "-------------------------------CPU/Memory Usage------------------------------" echo - e "Memory Usage:\t " `free | awk '/Mem/ {printf("%.2f%" ), $3 / $2 * 100 }'` echo - e "Swap Usage:\t " `free | awk '/Swap/ {printf("%.2f%" ), $3 / $2 * 100 }'` echo - e "CPU Usage:\t " `cat /proc/ stat | awk '/cpu/ {printf("%.2f%\n " ), ($2 + $4 )* 100 / ($2 + $4 + $5 )}' | awk '{print $0 }' | head - 1 ` echo "" echo - e "-------------------------------Disk Usage >80%-------------------------------" df - Ph | sed s/%/ / g | awk '{ if ($5 > 80 ) print $0 ;}' echo "" echo - e "-------------------------------For WWN Details-------------------------------" vserver= $(lscpu | grep Hypervisor | wc - l)if [ $vserver - gt 0 ] then echo "$(hostname) is a VM" else cat /sys/ class /fc_host/ host?/ port_name fi echo "" echo - e "-------------------------------Oracle DB Instances---------------------------" if id oracle >/ dev/ null 2 >& 1 ; then/bin/ ps - ef| grep pmon thenelse echo "oracle user does not exist on $(hostname)" fi echo "" if (( $(cat /etc/ *- release | grep - w "Oracle|Red Hat|CentOS|Fedora" | wc - l) > 0 )) then echo - e "-------------------------------Package Updates-------------------------------" yum updateinfo summary | grep 'Security | Bugfix | Enhancement ' echo - e "-----------------------------------------------------------------------------" else echo - e "-------------------------------Package Updates-------------------------------" cat /var/ lib/update-notifier/ updates- available echo - e "-----------------------------------------------------------------------------" fi
把上面脚本内容保存到一个文件 system-info.sh,之后添加可执行权限:
1 # chmod +x ~root/system-info.sh
当脚本准备好后,把脚本文件的路径加到 .bash_profile 文件末尾(红帽系列的系统:CentOS、Oracle Linux 和 Fedora):
1 # echo "/root/system-info.sh" >> ~root/.bash_profile
执行以下命令,来让修改的内容生效:
1 # source ~root/.bash_profile
对于 Debian 系统的系统,你可能需要把文件路径加到 .profile 文件中:
1 # echo "/root/system-info.sh" >> ~root/.profile
运行以下命令使修改生效:
你以前运行上面 source 命令时可能见过类似下面的输出。从下次开始,你在每次登录 shell 时会看到这些信息。当然,如果有必要你也可以随时手动执行这个脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 Hostname: daygeek-Y700 uptime: 1 :20 1 Manufacturer: LENOVO Product Name : 80 NVVersion : Lenovo ideapad Y700-15 ISKSerial Number: AA0CMRN1 Machine Type : Physical Operating System : Manjaro Linux Kernel: 4.19 .80 -1 -MANJARO Architecture: x86_64 Processor Name : Intel(R) Core(TM) i7-6700 HQ CPU @ 2.60 GHz Active User : daygeek renu thanuSystem Main IP: 192.168 .1 .6 192.168 .122 .1 Memory Usage : 37.28 % Swap Usage : 0.00 % CPU Usage : 15.43 % Filesystem Size Used Avail Use Mounted on /dev/nvme0n1p1 217 G 202 G 4.6 G 98 / /dev/loop0 109 M 109 M 0 100 /var/lib/snapd/snap/odrive-unofficial/2 /dev/loop1 91 M 91 M 0 100 /var/lib/snapd/snap/core/6405 /dev/loop2 90 M 90 M 0 100 /var/lib/snapd/snap/core/7713 CentOS8.2 daygeek.com is a VM oracle user does not exist on CentOS8.2 daygeek.com 13 Security notice (s) 9 Important Security notice (s) 3 Moderate Security notice (s) 1 Low Security notice (s) 35 Bugfix notice (s) 1 Enhancement notice (s)
via: https://www.2daygeek.com/bash-shell-script-view-linux-system-information/
作者:Magesh Maruthamuthu 选题:lujun9972 译者:lxbwolf 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出