linux统计代码(linux统计一个文件有多少行)
大家好,今天小编来为大家解答linux统计代码这个问题,linux统计一个文件有多少行很多人还不知道,现在让我们一起来看看吧!
linux下如何统计一个目录下的文件个数以及代码总行数的命令
知道指定后缀名的文件总个数命令:
find.-name*.cpp| wc-l
知道一个目录下代码总行数以及单个文件行数:
find.-name*.h| xargs wc-l
linux统计文件夹中文件数目
第一种方法:
ls-l|grep“^-”|wc-l
ls-l长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)。如果ls-lR|grep“^-”|wc-l则可以连子目录下的文件一起统计。
grep ^-这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc-l统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
第二种方法:
find./-type f|wc-l
由于默认find会去子目录查找,如果只想查找当前目录的文件用
需要说明的是第二种方法会比第一种方法快很多,尤其是也统计子目录时。
几个常用的Linux操作系统监控脚本代码
本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等方面的自动监控与报警。根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。
最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。
下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进行修改,希望能给大家一点帮助。
1、查看主机网卡流量
复制代码代码如下:
#!/bin/bash#network#Mike.Xu while:; do time='date+%m"-"%d""%k":"%M' day='date+%m"-"%d' rx_before='ifconfig eth0|sed-n"8"p|awk'{print$2}'|cut-c7-' tx_before='ifconfig eth0|sed-n"8"p|awk'{print$6}'|cut-c7-' sleep 2 rx_after='ifconfig eth0|sed-n"8"p|awk'{print$2}'|cut-c7-' tx_after='ifconfig eth0|sed-n"8"p|awk'{print$6}'|cut-c7-' rx_result=$[(rx_after-rx_before)/256] tx_result=$[(tx_after-tx_before)/256] echo"$time Now_In_Speed:"$rx_result"kbps Now_OUt_Speed:"$tx_result"kbps" sleep 2 done
2、系统状况监控
复制代码代码如下:
#!/bin/sh#systemstat.sh#Mike.Xu IP=192.168.1.227 top-n 2| grep"Cpu"》./temp/cpu.txt free-m| grep"Mem"》./temp/mem.txt df-k| grep"sda1"》./temp/drive_sda1.txt#df-k| grep sda2》./temp/drive_sda2.txt df-k| grep"/mnt/storage_0"》./temp/mnt_storage_0.txt df-k| grep"/mnt/storage_pic"》./temp/mnt_storage_pic.txt time=`date+%m"."%d""%k":"%M` connect=`netstat-na| grep"219.238.148.30:80"| wc-l` echo"$time$connect"》./temp/connect_count.txt
3、监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告
复制代码代码如下:
#!/bin/bash#monitor available disk space SPACE='df| sed-n'//$/ p'| gawk'{print$5}'| sed's/%//' if [$SPACE-ge 90 ] then fty89@163.com fi
4、监控CPU和内存的使用情况
复制代码代码如下:
#!/bin/bash#script to capture system statistics OUTFILE=/home/xu/capstats.csv
DATE='date+%m/%d/%Y'
TIME='date+%k:%m:%s'
TIMEOUT='uptime'
VMOUT='vmstat 1 2'
USERS='echo$TIMEOUT| gawk'{print$4}''
LOAD='echo$TIMEOUT| gawk'{print$9}'| sed"s/,//''
FREE='echo$VMOUT| sed-n'/[0-9]/p'| sed-n'2p'| gawk'{print$4}''
IDLE='echo$VMOUT| sed-n'/[0-9]/p'| sed-n'2p'|gawk'{print$15}''
echo"$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE"》$OUTFILE
5、全方位监控主机
复制代码代码如下:
#!/bin/bash# check_xu.sh# 0****/home/check_xu.sh DAT="`date+%Y%m%d`" HOUR="`date+%H`" DIR="/home/oslog/host_${DAT}/${HOUR}" DELAY=60 COUNT=60# whether the responsible directory exist if! test-d${DIR} then/bin/mkdir-p${DIR} fi# general check export TERM=linux/usr/bin/top-b-d${DELAY}-n${COUNT}${DIR}/top_${DAT}.log 21# cpu check/usr/bin/sar-u${DELAY}${COUNT}${DIR}/cpu_${DAT}.log 21#/usr/bin/mpstat-P 0${DELAY}${COUNT}${DIR}/cpu_0_${DAT}.log 21#/usr/bin/mpstat-P 1${DELAY}${COUNT}${DIR}/cpu_1_${DAT}.log 21# memory check/usr/bin/vmstat${DELAY}${COUNT}${DIR}/vmstat_${DAT}.log 21# I/O check/usr/bin/iostat${DELAY}${COUNT}${DIR}/iostat_${DAT}.log 21# network check/usr/bin/sar-n DEV${DELAY}${COUNT}${DIR}/net_${DAT}.log 21#/usr/bin/sar-n EDEV${DELAY}${COUNT}${DIR}/net_edev_${DAT}.log 21
放在crontab里每小时自动执行:
0****/home/check_xu.sh
这样会在/home/oslog/host_yyyymmdd/hh目录下生成各小时cpu、内存、网络,IO的统计数据。
如果某个时间段产生问题了,就可以去看对应的日志信息,看看当时的主机性能如何。
在Linux的命令行中实现字符出现频率统计的方法
Linux命令行有很多的乐趣,我们可以很容易并且完善地执行很多繁琐的任务。比如,我们计算一个文本文件中字和字符的出现频率,这就是我们打算在这篇文章中讲到的。
立刻来到我们脑海的命令,计算字和字符在一个文本文件中出现频率的 Linux命令是 wc命令。
在使用的脚本来分析文本文件之前,我们必须有一个文本文件。为了保持一致性,我们将创建一个文本文件,man命令的输出如下所述。
复制代码代码如下:$ man man> man.txt
以上命令是将man命令的使用方式导入到man.txt文件里。
我们希望能得到最平常的单词,对之前我们新建的文件执行如下脚本。
复制代码代码如下:$ cat man.txt| tr'''\012'| tr'[:upper:]''[:lower:]'| tr-d'[:punct:]'| grep-v'[^a-z]'| sort| uniq-c| sort-rn| head
Sample Output
复制代码代码如下:7557
262 the
163 to
112 is
112 a
78 of
78 manual
76 and
64 if
63 be
上面的脚本,输出了最常使用的十个单词。
如何看单个的字母呢?那就用如下的命令。
复制代码代码如下:$ echo'tecmint team'| fold-w1
Sample Output
[code] t
e
c
m
i
n
t
t
e
a
m
注:-w1只是设定了长度
现在我们将从那个文本文件中掰下来的每一个字母,对结果进行排序,得到所需的输出频率的十个最常见的字符。
$ fold-w1< man.txt| sort| uniq-c| sort-rn| head
Sample Output
复制代码代码如下:8579
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l
如何区分大小写呢?之前我们都是忽略大小写的。所以,用如下命令。
$ fold-w1< man.txt| sort| tr'[:lower:]''[:upper:]'| uniq-c| sort-rn| head-20
Sample Output
复制代码代码如下:11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 o
1269 R
1055 L
836 H
791 P
766 D
753 C
725 M
690 U
605 F
504 G
352 Y
344.
请检查上面的输出,标点符号居然包括在内。让我们干掉他,用tr命令。GO:
复制代码代码如下:$ fold-w1< man.txt| tr'[:lower:]''[:upper:]'| sort| tr-d'[:punct:]'| uniq-c| sort-rn| head-20
Sample Output
复制代码代码如下:11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
1550
1269 R
1055 L
836 H
791 P
766 D
753 C
725 M
690 U
605 F
504 G
352 Y
现在,我们有了三个文本,那就让我们用如下命令查看结果吧。
复制代码代码如下:$ cat*.txt| fold-w1| tr'[:lower:]''[:upper:]'| sort| tr-d'[:punct:]'| uniq-c| sort-rn| head-8
Sample Output
复制代码代码如下:11636
2504 E
2079 A
2005 T
1729 I
1645 N
1632 S
1580 O
下一步我们将会生成那些罕见的至少十个字母长的单词。以下是简单的脚本:
复制代码代码如下:$ cat man.txt| tr'''\012'| tr'[:upper:]''[:lower:]'| tr-d'[:punct:]'| tr-d'[0-9]'| sort| uniq-c| sort-n| grep-E'..................'| head
Sample Output
复制代码代码如下:1──────────────────────────────────────────
1 a all
1 abc any or all arguments within are optional
1 able see setlocale for precise details
1 ab options delimited by cannot be used together
1 achieved by using the less environment variable
1 a child process returned a nonzero exit status
1 act as if this option was supplied using the name as a filename
1 activate local mode format and display local manual files
1 acute accent
注:上面的.越来越多,其实,我们可以使用.{10}得到同样的效果。
这些简单的脚本,让我们知道最频繁出现的单词和英语中的字符。
现在结束了。下次我会在这里讲到另一个有趣的话题,你应该会喜欢读。还有别忘了向我们提供您的宝贵意见。