目录
提取文件名、提取不带后缀名的文件名、比较日期大小、截取字符串、echo直接输出信息到文本
1.根据端口号去终止进程
#根据端口号去终止进程(0表执行成功)
#$1:端口号
killProcessByPort()
{
lsof -i:$1 |grep LISTEN | awk '{printf $2}' | xargs kill -9
porttest=`netstat -ntl | grep $1 | grep LISTEN | wc -l`
if [ $porttest -ge 1 ]
then
return 1
fi
return 0
}
查看端口号被那个进程占用:
(1)lsof -i:端口号
(2)netstat -tunlp|grep 端口号
2.根据应用名去终止进程
#$1:进程名
killProcessByName()
{
ps -ef|grep $1 |grep -v grep|awk '{print $2}' |xargs kill -9
processtest=`ps -ef | grep $1 | wc -l`
if [ $processtest -ge 2 ]
then
return 1
fi
return 0
}
3.询问确认
while [ 1 ]
do
read -r -p "该进程已启动,是否需要重新启动(Y/N)?" myConfirm
case $myConfirm in
[Yy]|[Yy][Ee][Ss])
stopProcess $1 $2 $3 $4
if [ $? -ne 0 ]
then
return 1
fi
echo "正在重启..."
startProcess $1 $5 $6
if [ $? -ne 0 ]
then
return 1
fi
return 1
;;
[Nn]|[Nn][Oo])
echo "未重启"
return 1
;;
*)
clear
echo "非法输入,请重新输入!"
continue
;;
esac
done
4.根据时间删除文件(如删除七天前的日志)
find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
atime:访问时间(access time),指的是文件最后被读取的时间,可以使用touch命令更改为当前时间;
ctime:变更时间(change time),指的是文件本身最后被变更的时间,变更动作可以使chmod、chgrp、mv等等;
mtime:修改时间(modify time),指的是文件内容最后被修改的时间,修改动作可以使echo重定向、vi等等;
find /opt/soft/log/ -mtime +7 -name "*.log" -exec rm -rf {} \;
5.计算某一天的前几天的日期
beforeDate()
{
strdate=$1
days=$2
yy=`echo $strdate|cut -c 1-4`
mm=`echo $strdate|cut -c 5-6`
dd=`echo $strdate|cut -c 7-8`
sav_dd=$days/home/openuser/soa-tomcat/logs
days=`expr $days - $dd`
while [ $days -ge 0 ]
do
mm=`expr $mm - 1`
[ $mm -eq 0 ] && mm=12 && yy=`expr $yy - 1`
tmpa=`cal $mm $yy`
tmpb=`echo $tmpa|awk '{print $NF}'`
days=`expr $days - $tmpb`
done
dd=`expr 0 - $days`
expr $dd : "^.$" > /dev/null && dd=0$dd
expr $mm : "^.$" > /dev/null && mm=0$mm
echo $yy-$mm-$dd
}
6.
提取文件名、提取不带后缀名的文件名、比较日期大小、截取字符串、echo直接输出信息到文本
#输出到操作日志中
#$1:相关提示信息
outputOperateLog()
{
echo $1 >>$BACKLOGPATH/$OPERATELOGFILENAME
echo -e >>$BACKLOGPATH/$OPERATELOGFILENAME
}
traversingDirAndDelLog()
{
#从日志所在文件路径提取出日志的直接父级文件夹
logDirName=${1##*/}
cd $1
cd ../
#遍历日志文件
for file in $logDirName/*
do
if test -f $file
#if test -f $file
then
#提取出文件名
fileName=${file##*/}
#提取不带后缀名的文件名
fileNameRmSuffix=${fileName%.*}
#截取出文件名中的日期
fileNameDate=${fileNameRmSuffix: $2: $3}
#判断日期大小进行删除
#先将日期转化为时间戳,然后再进行比较
fileDate=$(date -d "$fileNameDate" +%s)
delDate=$(date -d "$DELWORKDATE" +%s)
if [ $fileDate -le $delDate ]
then
rm -rf $1/$fileName
if [ $? -ne 0 ]
then
outputOperateLog "$1/$fileName删除失败"`date +%Y-%m-%d,%H:%M:%S`
else
outputOperateLog "$1/$fileName删除成功"`date +%Y-%m-%d,%H:%M:%S`
fi
fi
fi
done
}
7.遍历文件夹
#$1:文件全路径
recursiveDir()
{
for element in `ls -Sr $1`
do
dir_or_file=$1"/"$element
if test -d $dir_or_file
then
#截取文件夹名
tempFolderName=${dir_or_file##*/}
echo "文件夹名:$tempFolderName"
RecursiveDelLog $dir_or_file
else
#处理该文件
return
done
return
}