linux的shell 脚本里怎么用if 判断文件大小呀?
我用tcpdump-ieth0udpandport8000-s1600-w123.cap&获取报文,我想在123.cap大小为10G的时候停止这个进程应该怎么写这个脚本捏...
我用tcpdump -i eth0 udp and port 8000 -s 1600 -w 123.cap &获取报文,我想在123.cap大小为10G的时候停止这个进程 应该怎么写这个脚本捏 !!!!
展开
3个回答
展开全部
find有一个参数 -size +10000M
你可以定义一个变量 它的值为
查找目录下 是否满足同时名字叫123.cap 并且尺寸大于10000M的
是就赋予var
先执行tcpdump 后台运行
然后做一个循环 每隔一秒判断这个var
var=$(find . -name "123.cap" -size +10000M)
判断这个var是否不为空
当不为空 那么代表文件超出10g了 那么就完毕吧 exit
思路这样 你自己试试看
你可以定义一个变量 它的值为
查找目录下 是否满足同时名字叫123.cap 并且尺寸大于10000M的
是就赋予var
先执行tcpdump 后台运行
然后做一个循环 每隔一秒判断这个var
var=$(find . -name "123.cap" -size +10000M)
判断这个var是否不为空
当不为空 那么代表文件超出10g了 那么就完毕吧 exit
思路这样 你自己试试看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我来写写:
#!/bin/bash
LIMIT=10
FILESIZE=0
while [ $FILESIZE -lt $LIMIT ];do
sleep 1
FILESIZE=`du -sh 123.cap | awk '{print $1}' |sed 's/K|M|G//g'`
done
killall tcpdump
#!/bin/bash
LIMIT=10
FILESIZE=0
while [ $FILESIZE -lt $LIMIT ];do
sleep 1
FILESIZE=`du -sh 123.cap | awk '{print $1}' |sed 's/K|M|G//g'`
done
killall tcpdump
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#!/bin/bash
LIMIT=$((1024*1024*1024*10)) #10G Bytes
FILESIZE=0
while [ $FILESIZE -lt $LIMIT ];do
sleep 1
FILESIZE=`stat -c%s 123.cap`
done
# do some killall
killall tcpdump
LIMIT=$((1024*1024*1024*10)) #10G Bytes
FILESIZE=0
while [ $FILESIZE -lt $LIMIT ];do
sleep 1
FILESIZE=`stat -c%s 123.cap`
done
# do some killall
killall tcpdump
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询