【Linux】运维小脚本:登录即自动显示系统信息

2024-06-12 13:12

本文主要是介绍【Linux】运维小脚本:登录即自动显示系统信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作为Linux运维工程师,我们经常需要快速掌握系统的状态,包括内存使用、CPU负载等关键信息。手动检查这些信息不仅繁琐,而且效率低下。今天,我要给大家介绍一个实用的小技巧,通过一个简单的脚本,每次登录Linux终端时,系统信息就能自动显示出来,大大提高了我们的工作效率。

脚本原理

这个脚本的核心原理是利用Linux的/etc/profile.d/目录。在该目录下的脚本会在每次用户登录时自动执行。因此,我们只需要将编写好的脚本放入此目录,并确保其具有可执行权限。

脚本内容

脚本内容可以根据系统管理员的需求进行定制,但基本的框架通常包括以下几个部分:

  1. 系统基本信息:包括系统版本、内核版本、运行时间、IP地址、主机名等。
  2. 硬件信息:如CPU型号、内存总量及使用情况、交换分区使用情况。
  3. 系统负载:显示CPU在1分钟、5分钟和10分钟的平均负载。
  4. 磁盘使用情况:列出各分区的使用率。

以下是一个脚本的示例框架:

#!/bin/bash# System status check script written by Knight Yang# Define the log file path
LOGFILE="$HOME/system_status_check.log"# Function to log messages with a timestamp
log() {echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOGFILE"
}# Check if the log file directory is writable
if [ ! -w "$(dirname "$LOGFILE")" ]; thenlog "Error: Unable to write to log file."exit 1
fi# Check for the existence of required commands
required_commands=("hostname" "awk" "free" "df" "uptime" "lscpu" "uname" "who" "cat")
for cmd in "${required_commands[@]}"; doif ! command -v "$cmd" &> /dev/null; thenlog "Error: Command '$cmd' is required but not found."exit 1fi
done# Function to display system information
display_system_info() {# Get IP address and hostnameIP_ADDR=$(hostname -I | cut -d' ' -f1)HOSTNAME=$(hostname)# Get CPU model name and remove leading spaces and tabsCPU_MODEL=$(lscpu | awk -F': ' '/^Model name:/ {sub(/^[ \t]+/, ""); print $2}')# Trim any remaining leading spaces, just in caseCPU_MODEL=$(echo "$CPU_MODEL" | sed 's/^[ \t]*//')# Log and display basic system informationlog "Starting basic system information check."echoecho -e "\tBasic System Information:"echo -e "\t------------------------------------------------"echo -e "\tCurrent Time : $(date)"echo -e "\tVersion      : $(cat /etc/os-release | grep -w "PRETTY_NAME" | cut -d= -f2 | tr -d '"')"echo -e "\tKernel       : $(uname -r)"echo -e "\tUptime       : $(uptime -p)"echo -e "\tIP addr      : $IP_ADDR"echo -e "\tHostname     : $HOSTNAME"echo -e "\tCPU          : $CPU_MODEL"echo -e "\tMemory       : $(free -h | awk '/^Mem:/ { print $3 "/" $2 }')"echo -e "\tSWAP         : $(free -h | awk '/^Swap:/ { print $3 "/" $2 }')"echo -e "\tUsers Logged : $(who | wc -l) users"echolog "Completed basic system information check."
}# Function to display CPU load information
display_cpu_load() {log "Starting CPU load information check."echo -e "\tCPU Load Information:"echo -e "\t------------------------------------------------"echo -e "\tCPU load in 1 min is   : $(awk '{printf "%15s", $1}' /proc/loadavg)"echo -e "\tCPU load in 5 mins is  : $(awk '{printf "%15s", $2}' /proc/loadavg)"echo -e "\tCPU load in 15 mins is : $(awk '{printf "%15s", $3}' /proc/loadavg)"echolog "Completed CPU load information check."
}# Function to display memory information
display_memory_info() {log "Starting memory information check."echo -e "\tMemory Usage Information:"echo -e "\t------------------------------------------------"echo -e "\tTotal Memory  : $(free -h | awk '/Mem/{print $2}')"echo -e "\tFree Memory   : $(free -h | awk '/Mem/{print $4}')"echo -e "\tCached Memory : $(free -h | awk '/Mem/{print $6}')"echolog "Completed memory information check."
}# Function to rank disk usage
rank_disk_usage() {log "Starting disk usage ranking check."echo -e "\tDisk Usage Ranking:"echo -e "\t------------------------------------------------"df -h -x tmpfs -x devtmpfs | sort -nr -k 5 | awk '/dev/{printf "\t%-39s %5s\n", $1, $5}'echolog "Completed disk usage ranking check."
}# Main execution logic
log "Script execution started."
display_system_info
display_cpu_load
display_memory_info
rank_disk_usage
log "Script execution completed."

脚本部署

要部署这个脚本,您需要执行以下步骤:

  1. 将脚本保存为systeminfo.sh
  2. 将脚本复制到/etc/profile.d/目录下:
    sudo cp systeminfo.sh /etc/profile.d/
    
  3. 给予脚本可执行权限:
    sudo chmod +x /etc/profile.d/systeminfo.sh
    

在这里插入图片描述

结语

通过这个简单的脚本,我们不仅能够让每次登录Linux系统时自动显示关键的系统信息,还能够根据需要轻松地扩展或修改显示的内容。这不仅提升了运维工作的效率,也增加了工作的科技感。希望这个小技巧能够帮助到每一位Linux运维工程师。

这篇关于【Linux】运维小脚本:登录即自动显示系统信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054310

相关文章

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服