服务器流量监控工具vnStat的简单使用以及关于Linux的软中断信号(signal)的一点内容

news2024/12/23 5:26:48

一、服务器流量监控工具vnStat的简单使用

    vnStat是为Linux和BSD设计的基于控制台的网络流量监控工具,通过它可以非常方便在命令行查看流量统计情况。它可以保留某个或多个所选择的网络接口的网络流量日志。为了生成日志,vnStat使用内核提供的信息。换句话说,它不会嗅探网络流量,确保尽量少用系统资源。

    安装起来也很简单,直接yum安装即可。安装启动命令如下:

[root@007 ~]# yum -y install vnstat
useradd: failed to reset the lastlog entry of UID 497: Is a directory
  Installing : vnstat-1.11-1.el6.x86_64                                                                                                                                                                       1/1 
  Verifying  : vnstat-1.11-1.el6.x86_64                                                                                                                                                                       1/1 
Installed:
  vnstat.x86_64 0:1.11-1.el6                                                                                                                                                                                      
Complete!
[root@007 ~]# vnstat --help
 vnStat 1.11 by Teemu Toivola <tst at iki dot fi>

         -q,  --query          query database
         -h,  --hours          show hours
         -d,  --days           show days
         -m,  --months         show months
         -w,  --weeks          show weeks
         -t,  --top10          show top10
         -s,  --short          use short output
         -u,  --update         update database
         -i,  --iface          select interface (default: eth0)
         -?,  --help           short help
         -v,  --version        show version
         -tr, --traffic        calculate traffic
         -ru, --rateunit       swap configured rate unit
         -l,  --live           show transfer rate in real time
See also "--longhelp" for complete options list and "man vnstat".
[root@007 ~]# vnstat -u -i eth1
Error: Unable to read database "/var/lib/vnstat/eth1".
Info: -> A new database has been created.
[root@007 ~]# /etc/init.d/vnstat status
vnstatd is stopped
[root@007 ~]# /etc/init.d/vnstat start
Starting vnstatd:                     

vnstat常用的命令选项如下:下图是安装后在服务器查看的数据

vnstat -h #显示最近24小时的流量情况 
vnstat -d #显示最近30天的流量情况 
vnstat -m #显示最近12个月的流量情况 
vnstat -l #显示实时的流量情况 
vnstat -t #显示所有记录中,流量使用最多的10天

        除此外,网上也有一些以图示方法显示流量数据的工具,比如:vnstat PHP frontend。官网地址:vnStat PHP frontend

        下载下来移至PHP运行目录,修改一下配置文件config.php.如下:

[root@007 ~]# wget http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz
...
Length: 57460 (56K) [application/x-gzip]
Saving to: “vnstat_php_frontend-1.5.1.tar.gz”
[root@007 ~]# sudo tar zxvf vnstat_php_frontend-1.5.1.tar.gz 

#修改config.php配置文件 
$iface_title['eth1'] = 'PublicNet';

然后在流星器里访问即可实现图表查看流量数据:

二、关于Linux的软中断信号(signal)的一点内容

    signal信号全称软中断信号,是用来通知进程发生了异步事件。是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制。

    UNIX定义了许多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变信号;SIGKILL表示终止程序运行的信号等等。Linux信号机制基本上是从Unix系统中继承过来的。早期Unix系统中的信号机制比较简单和原始,只有信号值小于SIGRTMIN的信号(即1-31)。在Linux中对信号在保留原有信号的基础上进行了扩充,Linux中的信号可以通过 kill -l查看,列表如下:

#Linux中的信号可以通过 kill -l查看,也可以通过/usr/include/sys/signal.h中查看
[root@04007 shell]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

    从两个不同的角度分类,信号可以分为:可靠信号与不可靠信号(可靠性角度);实时信号与非实时信号(与时间的关系角度)。不过实际可以看作是一个分类,非实时信号都不支持排队,都是不可靠信号;实时信号都支持排队,都是可靠信号。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。各信号的意义如下:

#define SIGHUP  进程由於控制终端死去或者控制终端发出起命令 
#define SIGINT  键盘中断所产生的信号 
#define SIGQUIT  键盘终止 
#define SIGILL  非法的指令 
#define SIGTRAP   进程遇到一个追踪(trace)或者是一个中断嵌套 
#define SIGABRT  由abort系统调用所产生的中断信号 
#define SIGIOT  类似於SIGABRT 
#define SIGBUS   进程试图使用不合理的记忆体 
#define SIGFPE  浮点异常 
#define SIGKILL  KILL 
#define SIGUSR1  用户自定义 
#define SIGSEGV  段错误 
#define SIGUSR2  用户自定义 
#define SIGPIPE  管道操作时没有读只写 
#define SIGALRM 由alarm系统调用产生的timer时钟信号 
#define SIGTERM 收到终端信号的进程 
#define SIGSTKFLT 堆叠错误 
#define SIGCHLD  子进程向父进程发出的子进程已经stop或者终止的信号 
#define SIGCONT  继续运行的信号 
#define SIGSTOP  stop 
#define SIGTSTP  键盘所产生的stop信号 
#define SIGTTIN   当运行在後状态时却需要读取stdin的资料 
#define SIGTTOU   当运行在後状态时却需要写向stdout 
#define SIGURG   socket的紧急情况 
#define SIGXCPU  进程超额使用CPU分配的时间 
#define SIGXFSZ  进程使用了超出系统规定文件长度的文件 
#define SIGVTALRM  内部的alarm时钟过期 
#define SIGPROF  在一个程式段中描绘时钟集过期 
#define SIGWINCH 终端视窗的改变 
#define SIGIO 非同步IO 
#define SIGPOLL  SIGIO pollable事件发生 

        在上面的列表中看到了一个眼熟的东西:SIGUSR2,对USR2这个信号就是我们平滑重启PHP命令中使用的kill -USR2 php的PID值中的信号意义 。而正是unix系统考虑了预留这么一个USR2信号从而可以让php在其软件中支持使用此信息进行平滑重启。专业讲USR2信号实现平滑重载所有php的worker进程并重新载入配置和二进制模块,信号太多,作为应用层的程序员我觉得也没有必要全部清楚。了解以下这些信号即可吧:

SIGINT    也就是Ctrl+C的信号
SIGKILL  表示终止程序运行的信号
SIGHUP   按下Ctrl-z将进程置于后台时发送的信号
SIGQUIT 与SIGINT类似,但由QUIT字符(通常是Ctrl+\)来控制,比如使用top查看系统情况时按Ctrl+\即是发送SIGQUIT信号。
SIGCHLD表示子进程状态改变信号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2115348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年必看的4款录屏新星,谁才是你的菜?

嘿&#xff0c;小伙伴们&#xff0c;你们的职场好帮手来啦。今天我们要说说办公室里经常被忽略但实际上超有用的东西——录屏软件。现在大家都用数字化工具办公了&#xff0c;不管是做教学视频、记录会议&#xff0c;还是直播玩游戏&#xff0c;录屏软件都是必不可少的。可是市…

FRP内网穿透使用常见问题

本文解答一些关于FRP内网穿透的常见问题 FRP简介 FRP是一款开源的高性能反向代理应用&#xff0c;支持多种协议的内网穿透。它允许用户在外网环境中访问位于内网中的服务器和服务&#xff0c;如Web服务器、MySQL数据库、以及其他基于TCP/UDP的应用程序。FRP以其灵活的配置选项…

C++实现俄罗斯方块(Windows控制台版)

C实现俄罗斯方块&#xff08;Windows控制台版&#xff09; 在油管上看到一个使用C控制台编写的俄罗斯方块小游戏&#xff0c;源代码200多行&#xff0c;B站上也有相关的讲解视频&#xff0c;非常不错&#xff0c;值得学习。 B站讲解视频地址为&#xff1a;【百万好评】国外技术…

Unet改进27:添加DGCST|Vision Transformer与DGSM模块集成在一起的创新结构

本文内容:在不同位置添加DGCST 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 随着移动计算技术的快速发展,在移动设备上部署高效的目标检测算法成为计算机视觉的一个关键研究领域。本研究的重点是优化YOLOv7算法,以提高其在移动平台上的运行效率和速度…

【Linux】传输层协议——UDP

零、传输层的作用是负责数据能够从发送端传输到接收端 一、再来认识一下端口号 端口号&#xff08;Port&#xff09;标识了一个主机进行通信的不同的应用程序。在TCP/IP协议中&#xff0c;用“源IP”&#xff0c;“源端口号”&#xff0c;“目的IP”&#xff0c;“目的端口号”…

Request Response

1 前言 1.1 内容概要 理解Request、Response和HTTP报文之间的关系掌握通过Request能够获得的信息 请求URL、URI、请求协议请求头、客户机和主机请求参数 掌握通过Response能够完成的设置 响应中文乱码问题响应&#xff08;Json&#xff09;字符串、图片&#xff08;文件&a…

【网络】UDP协议的简单使用

目录 服务器 客户端 测试 UDP是基于socket进行网络通信的&#xff0c;那我们这篇博客就来介绍一下基于UDP通信的基本流程&#xff0c;先让服务端和客户端进行简单的跨网络通信。 服务器 首先我们需要创建UDP套接字&#xff0c;用到的接口是 man socket 如果要使用UDP通信&am…

【Python知识宝库】面向对象编程:Python类的深度剖析

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、类的定义二、类的属性1. 类属性2. 实例属性 三、类的方法1. 实例方法2. 类方法 四、继承五、总结 前言 面向…

【C++ Primer Plus习题】12.3

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "stock20.h&quo…

嵌入式OpenHarmony源码基本原理详解

大家好,今天主要给大家分享一下,如何分析与使用OpenHarmony源码,欢迎交流学习。 第一:OpenHarmony源码简介 在3.0版本中,Lite系统(即轻量系统和小型系统)、标准系统各有一套独立的构建入口和上层的构建流程,但在3.2版本中,两者开始互相借鉴,取长补短并实现了融合统一;…

【环境领域EI稳定 I 院士主讲】第九届能源与环境研究进展国际学术会议(ICAEER 2024)

ICAEER 2024会议投稿经过2-3位组委会专家严格审核之后&#xff0c;符合Springer ESE征稿要求的论文将由斯普林格&#xff08;Springer-Nature&#xff09;旗下的 Environmental Science and Engineering (ISSN: 1863-5520) 出版&#xff0c;出版后提交至EI Compendex&#xff…

初步了解VTK装配体

VTK还不太了解&#xff0c;根据资料&#xff0c; vtk.vtkAssembly 是 VTK库中的一个重要类&#xff0c;允许通过将多个vtkActor对象组合在一起来创建复杂的3D模型。 import vtk import math from vtk.util.colors import *filenames ["cylinder.stl","sphere…

C++11 --- 智能指针

序言 在使用 C / C 进行编程时&#xff0c;许多场景都需要我们在堆上申请空间&#xff0c;堆内存的申请和释放都需要我们自己进行手动管理。这就存在容易造成堆内存泄露&#xff08;忘记释放&#xff09;&#xff0c;二次释放&#xff0c;程序发生异常时内存泄露等问题&#xf…

QML入门之创建可重用的组件(一)

我们在日常开发中都会封装一些组件以便于项目内重复利用。QML创建可重用组件一般有两种方法。 自定义Item使用Component创建自定义组件 自定义Item 以一个自定义按钮举例&#xff1a; import QtQuick 2.12Rectangle {id: root// 自定义属性property string btnDis: qsTr(&qu…

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库&#xff0c;由 WebM 项目开发和维护&#xff0c;专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩&#xff0c;广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速…

JavaSE-易错题集-002

1. 下面有关java基本类型的默认值和取值范围&#xff0c;说法错误的是&#xff1f; A 字节型的类型默认值是0&#xff0c;取值范围是-2^7—2^7-1 B boolean类型默认值是false&#xff0c;取值范围是true\false C 字符型类型默认是0&#xff0c;取值范围是-2^15 —2^15-1 D l…

iOS——retain和release底层原理

retain实现原理 retain的源码&#xff1a; //使用此方法等价于使用[this retain] inline id objc_object::retain() {//确保对象不是tagged pointerASSERT(!isTaggedPointer());return rootRetain(false, RRVariant::FastOrMsgSend); }ALWAYS_INLINE id objc_object::rootR…

关系代数 | 数据库SQL

文章目录 关系运算符笛卡尔积笛卡尔积应用 运算符符号含义集合运算符并∪交∩差-笛卡尔积专门的关系运算符选择σ投影π连接⋈除 关系运算符 笛卡尔积 集合运算符中&#xff0c;主要对笛卡尔积做解释&#xff1a; 在数学中&#xff0c;两个集合X和Y的笛卡儿积&#xff08;英语…

【Linux】进程控制(一)

1. 进程创建 &#xff08;一&#xff09;认识fork函数 从已存在进程中创建一个新进程&#xff08;新进程为子进程&#xff0c;而原进程为父进程&#xff09; 进程调用fork&#xff0c;当控制转移到内核中的fork代码后&#xff0c;内核做&#xff1a; 分配新的内存块和内核数…

Allegro PCB--报错

1。 走线上打孔 问题&#xff1a;在走线上打的Via&#xff0c;我通过"Assign net to Via", 给与网络。成功后。 跑Tools\Database check\ Update all DRC(including batch), Via 网络又没有了 原因& 解决方法&#xff1a; VIA没有和走线完全重合 换个方法&#x…