【发布时间】:2014-02-19 00:34:21
【问题描述】:
我创建了一个 bash 脚本来记录通过声卡的线路输入/麦克风端口输入的声音,当通过打破静音检测到声音时,它会记录到临时文件中,然后在新文件中添加日期戳并添加到数据库中。
我需要实现的是使脚本在启动时启动的好方法,一遍又一遍地运行脚本,如果它无法自行重新启动,则重新启动。以下是我目前从各种来源汇总的代码,到目前为止它运行良好。但我需要它能够在没有任何用户交互的情况下 24/7 全天候运行。
这是我创建的第一个真正的 bash 脚本,因此希望对我使用的方法以及它是错误还是正确的有更经验的输入。
我确实尝试通过 start-stop-daemon 进行守护进程,但最终得到了多个正在运行的脚本和 sox 命令。目前我让它在 rc.local 启动时执行,我个人认为通过在脚本底部再次添加命令来重新启动脚本不是正确的方法......但我不知道任何其他方式。
非常感谢任何形式的帮助。
#!/bin/bash
#Remove temp file just incase
rm -rf temp.mp3
#Listen for audio and record
sox -d /home/user/temp.mp3 silence 1 5 8% 1 0:00:01 8%
#Check if temp.mp3 is greater than 800 bytes so we don't get blank recordings added to the
#database, if the file is below 800 bytes remove the file and restart.
for i in /home/user/temp.mp3 ; do
b=`stat -c %s "$i"`
if [ $b -ge 800 ] ; then
NAME=`date +%Y-%m-%d_%H-%M-%S`
TIME=`date +%H:%M:%S`
FILENAME=/var/www/Recordings/$NAME.mp3
FILEWWW=Recordings/$NAME.mp3
mv /home/user/temp.mp3 $FILENAME
rm -rf temp.mp3
mysql --host=localhost --user=root --password=pass database << EOF
insert into recordings (id,time,filename,active,status) values('NULL','$TIME','$FILEWWW','1','1');
EOF
else
rm -rf /home/user/temp.mp3
echo 'No sound detected, Restarting...'
fi
done
/home/user/vox
exit 0
【问题讨论】:
标签: bash audio mp3 recording sox