0
点赞
收藏
分享

微信扫一扫

Linux/Windows脚本汇总

7dcac6528821 2022-10-30 阅读 89


概述

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

统计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'​


举报

相关推荐

0 条评论