您的位置:首页 > 其它

crontab实现每秒执行

2016-06-16 21:22 447 查看
crontab:

#!/bin/bash

step=$1   #每多少秒执行一次

for (( i = 0; i < 60000000000; i=(i+step) )); do
date +%Y%m%d' '%H:%M:%S >>/home/xiluhua/procNum.txt
ps -ef|grep memcached | grep 11211 >> /home/xiluhua/procNum.txt
printf "\n" >> /home/xiluhua/procNum.txt
sleep $step
done


log backup:

#!/bin/bash
#author:xiluhua
#since:20160619

#####################################################################
# $1:the frequency to do log backup
# $2:only if the number of log files reach v_count,log files will be backuped
# $3:target directory that needs to do log backup
# $4:the directory to put bakuped logs
#####################################################################

v_step=$1
v_count=$2
v_targDir=$3
v_histDir=$4

if [ -z $v_targDir ]
then
echo "exception: argu 'v_targDir' is empty!"
exit
fi

if [ -d $v_targDir ]
then
# do nothing
echo > /dev/null
else
echo "exception: argu 'v_targDir' is not exist!"
exit
fi

if [ -z $v_histDir ]
then
echo "exception: argu 'v_histDir' is empty!"
exit
fi

if [ -d $v_histDir ]
then
# this is the key step to make the .gz file without directory
cd $v_histDir
else
echo "exception: argu 'v_histDir' is not exist!"
exit
fi

if [ -z $v_step ]
then
echo "v_step is empty!"
exit
fi

if [ -z $v_count ]
then
echo "exception: argu 'v_count' is empty!"
exit
fi

let isProcExist=0
# recycle endlessly
while [ "1" = "1" ]
do
# if same job process already exists,sleep sometime
while [ "1" = "1" ]
do
if [ $isProcExist -gt 0 ]
then
sleep $v_step
else
break
fi
done

let isProcExist=1

files=$(find $v_targDir -name "*.log")
count=$(ls $files | wc -l)

#echo "count:"$count
#echo "v_count:"$v_count

if [ $count -ge $v_count ]
then
dir=$(date +%Y%m%d'_'%H%M%S)
# give the value to bakDir
bakDir=$dir

mkdir $bakDir
mv $files $bakDir
#echo $bakDir'.tar.gz'
tar -Pczf $bakDir'.tar.gz' $bakDir

if [ $bakDir = "/" ]
then
clear
else
rm -r $bakDir
fi
fi
sleep $v_step

let isProcExist=0
done


autoCreateFile:

#!/bin/bash
#author:xiluhua
#since:20160619

v_step=$1
if [ -z $v_step ]
then
echo "exception: argu 'v_step' is empty!"
exit
fi

cd ~/auto

for (( i = 0; i < 60000000000; i=(i+step) )); do
file1=$(date +%Y%m%d'_'%H%M%S)'_1.log'
file2=$(date +%Y%m%d'_'%H%M%S)'_2.log'
file3=$(date +%Y%m%d'_'%H%M%S)'_3.log'

touch $file1 $file2 $file3
sleep $v_step
done


batchRename:

#!/bin/bash
#author:xiluhua
#since:20160619
#####################################################################
# $1:the dir to do batch file rename
# $2:name before rename
# $3:name after rename
#####################################################################

dir=$1
targ=$2
repl=$3

#check arguments is not empty and valid
if [ -z $dir ]
then
echo "exception: argu 'dir' is empty!"
exit
fi

if [ $dir = "/" ]
then
echo "exception: argu 'dir' is invalid!"
exit
fi

if [ -d $dir ]
then
cd $dir
else
echo "exception: argu 'dir' is not exist!"
exit
fi

if [ -z $targ ]
then
echo "exception: argu 'targ' is empty!"
exit
fi

if [ -z $repl ]
then
echo "exception: argu repl is empty!"
exit
fi

# begin the main business
for i in $(ls *."$targ");do
#   echo $i
tmp=${i/"$targ"/"$repl"}
#   echo $tmp
mv -f $i $tmp
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: