LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 835|回复: 7

下世界杯比赛的脚本,有待修改,急阿

[复制链接]
发表于 2006-7-1 19:42:49 | 显示全部楼层 |阅读模式
突然想写个下世界杯比赛的脚本,可惜没能成功.现把思路说一下.
世界杯比赛的时间是23:00 - 01:00 和 03:00 -05:00

思路是这样的,先写一个cron,再假设下载视频的脚本为spt1(第一场),spt2(第二场)
cron为:
0 23 * * * sh /..../spt1
0 3 * * * sh /..../spt2

spt1为:
count=0
while [ $count -eq 0 ]
do
if [ `data +%T ` = 01:00:00 ]
then
$count=1
#echo "count's value is $count \n"
else
#echo "the  downloading is  going on"
mplayer -dumpfile $1 -dumpstream $2
                                                                                
fi
done
exit
(其中$1为文件存放地址 $2为URL .spt2的话也就是时间值改一下)

问题是: 我现在可以实现文件的下载,可是到停止的时间脚本还继续运行
是不是我的while 语句只执行了一次?? 感觉是if只判断了一次
 楼主| 发表于 2006-7-2 15:03:27 | 显示全部楼层
大家给点建议啊
支持一下
回复 支持 反对

使用道具 举报

发表于 2006-7-2 19:08:34 | 显示全部楼层
mplayer 不停止的话 while 无法进入下一个循环的……
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-2 19:48:38 | 显示全部楼层
哦,原来是这样
那我该怎么做,才能中止这个下载
回复 支持 反对

使用道具 举报

发表于 2006-7-3 12:58:24 | 显示全部楼层
这个脚本写得有问题。我没用过mplayer这个包。但是从程序里面看到你的mplayer这个命令会不断地被重复执行,而且永远都不会停下来, 因为 'data %T'永远都不会等于01:00:00,最起码也应该'date %T'来去和时间作比较。还有你说得能够下载我觉得不太可信,因为一个重复不断被要求执行的命令应该不会正常工作-〉mplayer,,,
我建议你在crontab加入一个任务,在某某时间的时候直接停止mplayer,我相信mplayer应该有这个参数,如果没有就kill -s 它!!!别用shell脚本做循环了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-3 18:25:10 | 显示全部楼层
谢谢楼上
估计是我把data贴错了,但是我的脚本的确可以下载

我现在重新想了一下。就是调用脚本后,再在目标时间用kill把进程杀死。
但不知道用kill 的参数带那个效果好,还有我把运行脚本那个进程杀死了,下载任务还在继续。
我就想在存放进程文件的地方直接把mplayer的进程杀掉就行了 。 还不知道ps -a的结果存放在哪呢??

另外,我写这个脚本纯粹是为了练手。
回复 支持 反对

使用道具 举报

发表于 2006-7-4 13:28:39 | 显示全部楼层
思路:找到所有mplayer的进程,在管道中再次取出第一列。然后坐循环。去掉PID那行题头,留下所有的数据项,逐项杀死。-9表示KILLSIG信号。

list=$(ps -C mplayer | awk '{print $1}')

for x in $list
do
if [ $x != PID ]
then
#echo $x
kill -9 $x
fi
done
回复 支持 反对

使用道具 举报

发表于 2006-7-4 13:31:17 | 显示全部楼层
pkill killall
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表