zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Linux登录时自动显示CPU硬盘内存使用信息(彩色进度条)

2023-02-19 12:28:49 时间

Linux登录时自动显示CPU硬盘内存使用信息(彩色进度条)

写了一个linux命令行(不依赖任何三方库,兼容所有主流Linux发行版),在ssh登录时自动显示当前机器的CPU内存硬盘的使用情况,还有彩色进度条的效果,非常直观。

这是运行效果图:

通过Shell登录后会分别显示内存使用进度条、硬盘使用进度条、CPU负载信息。

黄色内存部分表示已经正在使用的内存;蓝色内存部分表示buffer/cache内存;绿色部分表示空闲内存。

黄色硬盘部分表示已经使用的硬盘空间;绿色硬盘部分表示空闲的硬盘空间。

唯一有点遗憾的就是CPU负载有3个值,分别代表1min内的负载,5min内的负载,15min以内的负载,不太好用进度条来表示。


下面是具体的代码,分为3部分(内存、硬盘、处理器)每个部分都是一个独立的linux命令,直接复制到终端里然后按回车,就能立即看到效果

大概是思路是使用free -kdfupdate等指令输出硬件资源使用情况,然后使用awk指令来处理输出的文本。

命令行主要是awk指令占了一多半,awk是Linux上用来处理文本的指令(非常强大),可以使用专门的awk脚本(语法很像c语言)来处理输入的文本信息


设置为登录信息的方法:(下面的命令请使用root权限操作)

  1. 创建文件/etc/update-motd.d/11-hardware-usage-summary,然后编辑(文件名其实可以随便取)
  2. 将下方你喜欢的代码块粘贴到这个shell脚本里(如果你愿意,可以将3块代码都粘贴进去)
  3. 添加执行权限:chmod +x 11-hardware-usage-summary
  4. 退出shell重新登陆即可看到效果

  1. 内存使用情况
free -k | awk '
function draw_bar(percnet, total, fill, color)
{
    for(i=0;i<percnet * total;i++)
        printf(color fill color_reset)
}
{
    color_black = "\033[30m"
    color_white = "\033[37m"
    color_green = "\033[32m"
    color_darkgreen = "\033[36m"
    color_blue = "\033[34m"
    color_yellow = "\033[33m"
    color_purple = "\033[35m"
    color_reset = color_white
    fill_char = "#"
    bar_len = 30

    if(NR==2)
    {
        mem_total = $2
        mem_shard = $5
        mem_used = $3 + mem_shard
        mem_buffcache = $6
        mem_free = $4
        # mem_available = $7

        printf("Memory: %.1f / %.1f Gb [", mem_used / 1024 / 1024, mem_total / 1024 / 1024)

        draw_bar(mem_used / mem_total, bar_len, fill_char, color_yellow)
        draw_bar(mem_buffcache / mem_total, bar_len, fill_char, color_darkgreen)
        draw_bar(mem_free / mem_total, bar_len, fill_char, color_green)

        printf(" %.1f%%]\n", mem_used * 100 / mem_total)
    }
}'
  1. 硬盘使用情况
df | awk '
function draw_bar(percnet, total, fill, color)
{
    for(i=0;i<percnet * total;i++)
        printf(color fill color_reset)
}
{
    color_black = "\033[30m"
    color_white = "\033[37m"
    color_green = "\033[32m"
    color_blue = "\033[34m"
    color_yellow = "\033[33m"
    color_purple = "\033[35m"
    color_reset = color_white
    fill_char = "#"
    bar_len = 30

    if($NF=="/")
    {
        disk_total = $2
        disk_used = $3
        disk_available = $4
        disk_used_progress = $5

        printf("Disk: %.1f / %.1f Gb [", disk_used / 1024 / 1024, disk_total / 1024 / 1024)

        draw_bar(disk_used / disk_total, bar_len, fill_char, color_yellow)
        draw_bar(disk_available / disk_total, bar_len, fill_char, color_green)

        printf(" %s]\n", disk_used_progress)
    }
}'
  1. 处理器负载情况
uptime | awk -F "[ ,]" '{printf("CPU Load: %.2f  %.2f  %.2f\n", $(NF-2), $(NF-1), $(NF))}'

?本文标题: Linux登录时自动显示CPU硬盘内存使用信息(彩色进度条)

?本文链接: https://1han.wiki/Linuxloginloading/index.html