У меня возникла проблема со скриптом конвертации tomp3.sh. Скрипт находиться в папке /var/spool/asterisk/monitor/. При запуске скрипта вручную он конвертирует wav - файлы в mp3, но когда ставлю задачу в crontab -e , скрипт запускается, но конвертирует в Mp3 c размером 0кб.
Вот скрипт:
#!/bin/bash
#20080624 - Author: Gregg Hansen
#http://www.thiscoolsite.com
#Make sure to install Lame and copy mlame to your .wav dir
#If you specify your own filenames, use NO spaces.
recorddir="/var/spool/asterisk/monitor"
for i in `ls $recorddir/*.wav`; do
cd $recorddir
$recorddir/mlame -f -o "-b 16 -m m -q 9 --resample 8" $i
date=`ls -l $i | awk '{print $7,$6,2008,$8}'`
mp3=`echo $i | sed 's/.wav/.mp3/g'`
touch -d "$date" $mp3
уточните пожалуйста, если Вы запускаете в консоли
[console]/var/spool/asterisk/monitor/tomp3.sh[/console]
то он отрабатывает правильно?
Присутствует ли в папке /var/spool/asterisk/monitor скрипт mlame?
Попробуйте сделать следующее:
создайте файл /var/spool/asterisk/monitor/log
а в crontab запишите так
* */1 * * * root /var/spool/asterisk/monitor/tomp3.sh >> /var/spool/asterisk/monitor/log
как отработает скрипт - выложите содержание файла log
уточните пожалуйста, если Вы запускаете в консоли
[console]/var/spool/asterisk/monitor/tomp3.sh[/console]
то он отрабатывает правильно?
После запуска скрипта вручную он wav файлы конвертируются в mp3, c размером указанным в скрипте.
Присутствует ли в папке /var/spool/asterisk/monitor скрипт mlame?
Скрипт mlame присутствует в папке /var/spool/asterisk/monitor
Попробуйте сделать следующее:
создайте файл /var/spool/asterisk/monitor/log
а в crontab запишите так
* */1 * * * root /var/spool/asterisk/monitor/tomp3.sh >> /var/spool/asterisk/monitor/log
как отработает скрипт - выложите содержание файла log
Вот содержание файла log при запуске скрипта через crontab:
text
Force overwriting existing destination files
New lame options are '-b 16 -m m -q 9 --resample 8'
converting of '/var/spool/asterisk/monitor/1298625418.28.wav' to '/var/spool/asterisk/monitor/1298625418.28.mp3' failed
Force overwriting existing destination files
New lame options are '-b 16 -m m -q 9 --resample 8'
converting of '/var/spool/asterisk/monitor/1298625564.30.wav' to '/var/spool/asterisk/monitor/1298625564.30.mp3' failed
добавил во вторую строку скрипта. но все равно crontab конвертирует в mp3 c размером 0кб. Возможно это связано с правами доступа. Права доступа скриптов mlame и tomp3.sh установлен +x.
апускаю от рута. Но запускал и от своего, скрипт работает.
ВСЁ надо запускать от своего имени.
1) crontab -e от своего
2) скрипт - тоже от своего
3) и скрипт, и файлы должны лежать не в /var/spool, а в /home/user/
4) и скрипт, и файлы должны иметь владельца - user, т.е. НЕ рут
5) chmod +x надо тоже выполнять самому, а не через рута.
Повторяю 100500+1 раз: Под рутом НЕ РАБОТАЮТ!!!
вообще.
под рутом только новых юзеров делают/удаляют, и ещё ограничивают права этих юзеров, И ВСЁ!
Чем всё закончилось то? Получилось решить проблему - converting of '.wav' to '.mp3' failed ?
У меня та-же проблема, (временно) запускаю скрипт кроном из под рута, не помогает. Из консоли работает и из под рута и из под пользователя (права на папку выставлены).
У меня скрипт еще проще -
text
#!/bin/sh
cd /mnt/disk/monitor/
./mlame *.wav >> log.txt
echo Tvou mat >> log.txt
в итоге лог имеем такой -
text
'201103031522-6015-83437065390.mp3' already exists, skipping
converting of '201109291638-6017-83433768322.wav' to '201109291638-6017-83433768322.mp3' failed
converting of '201109291638-6018-89122991437.wav' to '201109291638-6018-89122991437.mp3' failed
converting of '201109291641-6018-89043857898.wav' to '201109291641-6018-89043857898.mp3' failed
converting of '201109291642-6018-89506466383.wav' to '201109291642-6018-89506466383.mp3' failed
converting of '201109291643-6018-89122589108.wav' to '201109291643-6018-89122589108.mp3' failed
converting of '201109291646-9090072342-s.wav' to '201109291646-9090072342-s.mp3' failed
converting of '201109291647-6018-89122493096.wav' to '201109291647-6018-89122493096.mp3' failed
converting of '201109291648-6018-89122664246.wav' to '201109291648-6018-89122664246.mp3' failed
converting of '201109291650-6018-89045494743.wav' to '201109291650-6018-89045494743.mp3' failed
Tvou mat
в самом mlame за это отвечает такой кусок
text
if [ -f "$src" ]; then
if [ $testoverwrite = true -a -f "$dst" ]; then
echo \'$dst\' already exists, skipping
sleep $errordelay
elif $mp3coder $options "$src" "$dst"; then
if [ $removesource = true ]; then
mv -f "$dst" "$src"
fi
else
echo converting of \'$src\' to \'$dst\' failed
sleep $errordelay
fi
else
echo No source file \'$src\' found.
sleep $errordelay
Проблема уже почти решена :), удалением mlame и написанием своего скрипта (вообщем то похожего на mlame ;)
Как закончю и откатаю скрипт выложу его суда.