shell 监测文件夹下文件是否修改, 多任务模式,

Shell 监测文件夹下文件是否修改,若修改则执行新文件

         多任务模式

#!/bin/bash

music_dir=/home                          #目录下面只有一首音乐

startTime=$(date +%s)    #程序的开始时间
echo $startTime

tmp=1   
music_play_time=600    #单位s
music_type=1
music_file="test.mp3"

#播放语音
function play_music()
{
#获取文件的创建时间
music_file_create_time=$(date +%s -r $music_dir/$music_file)
echo "$music_file create time is $music_file_create_time"

if [ $music_type -eq "2" ]
then
	mplayer $music_dir/$music_file < /dev/null > /dev/null 2>&1 &    #音乐只播放一次
elif [ $music_type -eq "1" ]
then
	mplayer -loop 0 $music_dir/$music_file< /dev/null > /dev/null 2>&1 &    #音乐循环播放,若想播放三次则将0改成3   &表示多任务
	local mplayer_fork=$(ps -A | grep mplayer | awk '{print $1}')     #获取播放器的进程号
	echo $mplayer_fork
	while true
	do
		endTime=$(date +%s)        
		local stopTime=$((endTime - startTime))      #播放的时间差

		if [ $stopTime -eq $music_play_time ]
		then
			echo "this is time out"
			echo $stopTime
			kill $mplayer_fork
			break
		fi
	done

fi

}

if [ ! -f md5.music ];then                   #判断是否有md5文件, 用md5文件监测文件夹下的文件是否更改,若更改则播放新音乐,
	find $music_dir/ -type f -exec md5sum {} \; > md5.music
	echo "create $music_dir/md5.music"
fi


while true
do
	md5sum -c md5.music --status            #查看md5的状态
	
	for newFile in $(find $music_dir/ -type f)   #监测石油文件发生更改
	do
		grep $newFile md5.music > /dev/null 2>&1
		if [ $? -gt 0 ];then	#若发生更改,则找出之前的播放器进程号,kill掉, 将新文件名写入md5中
			mp_fork=$(ps -A | grep mplayer | awk '{print $1}')	
			echo $mp_fork
			kill $mp_fork
			echo "$mp_fork is kill"
			md5sum $newFile > md5.music
			tmp=1
			echo $newFile
		fi 
	done 

	if [ $tmp -eq "1" ]
	then
		play_music &   #播放音乐进程 
		tmp=0
	fi 

sleep 6    #间隔6s监测文件是否变化
done




注:运行文件用sh会报错,若报错则用bash运行脚本文件,错误消失,具体原因百度一下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值