Linux/Windows脚本汇总

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 Linux/Windows脚本汇总,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

概述

工作中常用的,短小精悍的脚本。

统计Nginx日志里访问次数最多的前十个IP

进入到log文件所在目录:
cat access_log | awk '{print $1}' | uniq -c | sort -rn -k1 | head -n 10
命令行解释:
awk '{print $1}':取数据的低1域(第1列)
sort:对IP部分进行排序
uniq -c:打印每一重复行出现的次数,并去掉重复行
sort -nr -k1:按照重复行出现的次序倒序排列,-k1以第一列为标准排序
head -n 10:取排在前n位的IP

统计Apache日志里访问次数最多的前十个IP

进入到log所在目录:
awk '{print $1}' access.log | sort | uniq -c | sort -nr -k1 | head -n 10

删除空文件夹

Windows脚本delete-empty-folder.bat

:: https://vcan.app/notes/193.html
:: 第一行为删除"指定目录"(加 /s 子目录下也删除)下 -d 指定多少天以前的所有文件(指定格式则改为如 *.bak)
:: 第二行为删除当前目录下所有空目录。(本脚本要放在删除文件夹的目录下) /q 表示交互式提醒

forfiles /p "C:\Users\johnn\.m2\repository" /s /m *.* /d -100 /c "cmd /c del @path"
for /f "delims=" %%a in ('dir . /b /ad /s ^|sort /r' ) do rd  "%%a" 2>nul

删除指定后缀名文件

Windows脚本del-lastUpdated.bat删除maven下载失败的jar包:

@echo off 
rem 这里写你的仓库路径
set REPOSITORY_PATH=C:\Users\johnn\.m2\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
    echo %%i
    del /s /q "%%i"
)
rem 搜索完毕
pause

检测最耗CPU的Java线程的脚本

局限于Java应用和Linux服务器,给出CPU的占用率和当前堆栈信息,新建文件busythread.sh

#!/bin/bash
 
if [ $# -eq 0 ];then
    echo "please enter java pid"
    exit -1
fi
 
pid=$1
jstack_cmd=""
 
if [[ $JAVA_HOME != "" ]]; then
    jstack_cmd="$JAVA_HOME/bin/jstack"
else
    r=`which jstack 2>/dev/null`
    if [[ $r != "" ]]; then
        jstack_cmd=$r
    else
        echo "can not find jstack"
        exit -2
    fi
fi
 
# 如果procps版本不是太老,top支持-o参数
# line=`top -H -o %CPU -b -n 1 -p $pid | sed '1,/^$/d' | grep -v $pid | awk 'NR==2'`
line=`top -H -b -n 1 -p $pid | sed '1,/^$/d' | sed '1d;/^$/d' | grep -v $pid | sort -nrk9 | head -1`
echo "$line" | awk '{print "tid: "$1," cpu: %"$9}'
tid_0x=`printf "%0x" $(echo "$line" | awk '{print $1}')`
$jstack_cmd $pid | grep $tid_0x -A20 | sed -n '1,/^$/p'

使用:./busythread.sh 'pidof java'

统计Linux系统上所有文件大小的分布情况

如分组:小于1K,1K – 4K,4K – 1M,1M – 10M,10M – 1G,1G以上

ls -Rla | awk '{print $9, $5}' | awk '
BEGIN{
    size[0] = " 0K-1K"
    size[1] = " 1K-4K"
    size[2] = " 4K-1M"
    size[3] = " 1M-10M"
    size[4] = " 10M-1G"
    size[5] = " 1G+"
    total = 0
}

($2 <= 1024) {a[0]++} 
(1024 < $2 && $2 <= 4096) {a[1]++} 
(4096 < $2 && $2 <= 1048576) {a[2]++} 
(1048576 < $2 && $2 <= 10485760) {a[3]++} 
(10485760 < $2 && $2 <= 1073741824) {a[4]++} 
(1073741824 < $2 ) {a[5]++} 

{total++} 

END {
    for(i=0;i<length(a);++i) 
        print size[i], "文件个数:", a[i], "百分比:", (a[i]/total)*100,"%"
}'

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142234.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!