日期:2014-05-16  浏览次数:20606 次

linux shell 脚本控制
各位大侠好,请问下面的问题怎么用脚本控制:
每过20秒后,比较一下程序的.log文件的大小,.log文件大小不变,则取出改程序的进程号,杀掉,重启
难点
1、怎么比较.log文件的大小
2、读出程序的进程号
请各位帮忙,用shell实现!


------解决方案--------------------
也就是说每次执行结束的时候就备份一下log 下一次就把新的log和备份的这个旧的log比

如果你一定要比大小
每次执行的时候du .log 把.log的size保存到一个专门的文件里
然后下一次在du .log得到新的size 后刚才保存的那个size比较是否相等
------解决方案--------------------
脚本启动时可以记录一下当前log文件的大小

oldsize=$(ls -l logfile|awk '{print $5}')
while true
do
sleep 20
newsize=$(ls -l logfile|awk '{print $5}')
if [[ ! $newsize -eq $oldsize ]];then
杀死进程
else
oldsize=$newsize
fi
done
------解决方案--------------------
if [[ ! $newsize -eq $oldsize ]];then
可以换成
if [[ $newsize -ne $oldsize ]];then