1.linux中查看网卡流量六种方法
2.java获取文件最后一行的几种方式
linux中查看网卡流量六种方法
方法一、nload工具源码包路径:
查看参数帮助命令:
nload help
-a:这个好像是全部数据的刷新时间周期,单位是秒,默认是.
-i:进入网卡的流量图的显示比例最大值设置,默认 kBit/s.
-m:不显示流量图,只显示统计数据。同花顺 线形源码
-o:出去网卡的流量图的显示比例最大值设置,默认 kBit/s.
-t:显示数据的刷新时间间隔,单位是毫秒,默认。
-u:设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的.注意大小写单位不同!
h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.
H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.
-U:设置右边Ttl的数据单位,默认是gkk指标源码自动变的.注意大小写单位不同(与-u相同)!
Devices:自定义监控的网卡,默认是全部监控的,使用左右键切换。
如只监控eth0命令: nload eth0
方法二、iftop工具
源码包路径:
/%7Epdw/iftop/download/iftop-0..tar.gz
1、iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的晋城app源码= =这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s s s 的平均流量
2、iftop相关参数
常用的参数
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
-F显示特定网段的进出流量,如# iftop -F ..1.0/或# iftop -F ..1.0/...0
-h(display this 开阔云源码message),帮助,显示参数信息
-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b使流量图形条默认就显示;
-f这个暂时还不太会用,过滤计算包用的;
-P使host信息及端口信息默认就都显示;
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m M
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或秒或秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的harbor指标源码字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按根据左边的本机名或IP排序;
按根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可以使用Shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。
方法三、 ifstat
源码包路径:
mand
DESCRIPTION
watch runs command repeatedly, displaying its output (the first screenfull). This allows you to watch the program output change over time. By default, the program is run every 2 seconds; use -n or --interval to specify a different interval.
The -d or --differences flag will highlight the differences between successive updates. The --cumulative option makes highlighting sticky, presenting a running display of all positions that have ever changed. The -t or --no-title option turns off the header showing the interval, command, and current time at the top of the display, as well as the following blank line. watch will run until interrupted.
NOTE
Note that command is given to sh -c which means that you may need to use extra quoting to get the desired effect.
Note that POSIX option processing is used (i.e., option processing stops at the first non-option argument). This means that flags after command don't get interpreted by watch itself.
EXAMPLES
To watch for mail, you might do: watch -n from
To watch the contents of a directory change, you could use: watch -d ls -l
If youre only interested in files owned by user joe, you might use: watch -d 'ls -l fgrep joe'
You can watch for your administrator to install the latest kernel with: watch uname -r (Just kidding.)呵呵
BUGS
Upon terminal resize, the screen will not be correctly repainted until the next scheduled update. All --differences highlighting is lost on that update as well.
Non-printing characters are stripped from program output. Use cat -v as part of the command pipeline if you want to see them.
方法六、
watch cat /proc/net/dev
java获取文件最后一行的几种方式
当我们在读取文件的时候,通常都是从前向后读取,那如果要读取文件的最后一行内容,要如何操作呢?顺序遍历读取,直到文件最后一行publicstaticStringreadLastLineV0(Filefile){ StringlastLine="";try(BufferedReaderbufferedReader=newBufferedReader(newFileReader(file))){ StringcurrentLine="";while((currentLine=bufferedReader.readLine())!=null){ lastLine=currentLine;}}catch(Exceptione){ log.error("filereaderror,msg:{ }",e.getMessage(),e);}returnlastLine;}该方式很简单,从前向后读取即可,直到最后一行。
利用RandomAccessFile指定位置,从后向前读取publicstaticStringreadLastLineV1(Filefile){ //存储结果StringBuilderbuilder=newStringBuilder();try(RandomAccessFilerandomAccessFile=newRandomAccessFile(file,"r")){ //指针位置开始为0,所以最大长度为length-1longfileLastPointer=randomAccessFile.length()-1;//从后向前读取文件for(longfilePointer=fileLastPointer;filePointer!=-1;filePointer--){ //移动指针指向randomAccessFile.seek(filePointer);intreadByte=randomAccessFile.readByte();if(0xA==readByte){ //LF='\n'=0x0A换行if(filePointer==fileLastPointer){ //如果是最后的换行,过滤掉continue;}break;}if(0xD==readByte){ //CR='\r'=0x0D回车if(filePointer==fileLastPointer-1){ //如果是倒数的回车也过滤掉continue;}break;}builder.append((char)readByte);}}catch(Exceptione){ log.error("filereaderror,msg:{ }",e.getMessage(),e);}returnbuilder.reverse().toString();}该方式主要是利用RandomAccessFile可以seek到指定位置读取的方式。从文件的最后向前读取,当遇到0xA(换行)或者0xD(回车)时,利用StringBuilder缓存一下读取到的数据,最后将数据reverse即是最后一行数据。
利用commons-io中的ReversedLinesFileReadermaven导入依赖
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.7</version></dependency>publicstaticStringreadLastLineV2(Filefile){ StringlastLine="";try(ReversedLinesFileReaderreversedLinesReader=newReversedLinesFileReader(file,Charset.defaultCharset())){ lastLine=reversedLinesReader.readLine();}catch(Exceptione){ log.error("filereaderror,msg:{ }",e.getMessage(),e);}returnlastLine;}该方式可以直接读取到最后一行数据。有兴趣的同学可以自行看一下源码,非常少。它的实现是思路是先将文件拆成多个FilePart。读取位置定位是基于SeekableByteChannel的position方法。而FilePart的readLine实现中,可以一次读取多个bytes。
总结以上三种读取文件最后一行的方法中,推荐使用commons-io中的ReversedLinesFileReader,使用方式也比较简单。