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的时候停止这个进程 应该怎么写这个脚本捏 !!!! 展开
 我来答
yjwan1981
2010-06-01 · TA获得超过1938个赞
知道小有建树答主
回答量:305
采纳率:0%
帮助的人:396万
展开全部
find有一个参数 -size +10000M

你可以定义一个变量 它的值为
查找目录下 是否满足同时名字叫123.cap 并且尺寸大于10000M的
是就赋予var

先执行tcpdump 后台运行

然后做一个循环 每隔一秒判断这个var
var=$(find . -name "123.cap" -size +10000M)

判断这个var是否不为空

当不为空 那么代表文件超出10g了 那么就完毕吧 exit

思路这样 你自己试试看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liu_pu
2010-06-04 · TA获得超过411个赞
知道答主
回答量:130
采纳率:0%
帮助的人:0
展开全部
我来写写:
#!/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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lishifan
2010-06-01 · TA获得超过350个赞
知道小有建树答主
回答量:243
采纳率:0%
帮助的人:384万
展开全部
#!/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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式