LINUX.ORG.RU

Будильник на bash


0

0

Здравствуйте. Мне необходим простенкий скрипт будильника. Пока накидал вот это.

#!/bin/bash

mpg321 /media/31/Дата/Music/соундтрек/Ghostbusters.mp3 &

for ((x=0;x<31;x++));do amixer sset Master x sleep 1 done

Но почему то процесс, mpg321 не уходит в фон и соответственно громкость не меняеться а ждет завершения проигрывания. Может у кого уже есть решение, моет даже готовая программа на C. Вообще из функций надо плавное увеличение громкости и бинд на какую нибудь клавишу чтобы будильник выключился, а то соседей жалко.

попробуйте «mpg321 /media/31/Дата/Music/соундтрек/Ghostbusters.mp3 >/dev/null 2>/dev/null

PS: man at

arsi ★★★★★
()
Ответ на: комментарий от arsi

Ага помогло )))...Я всё время в одно и тоже время встаю, поэтому cron

А Вам человеческое спасибо. Теперь осталось научить писать скрипт свою pid в файл...Чтобы потом уже можно было по pid через xbindkeys килять.

Timuridze
() автор топика
Ответ на: комментарий от Timuridze

> Теперь осталось научить писать скрипт свою pid в файл...Чтобы потом уже можно было по pid через xbindkeys килять.

А start-stop-daemon не поможет?

Begemoth ★★★★★
()
Ответ на: комментарий от Timuridze

> Теперь осталось научить писать скрипт свою pid в файл...

#!/bin/bash

PIDFILE_M=/var/run/reminder.mixer.pid
PIDFILE_P=/var/run/reminder.player.pid
SOUNDFILE=/path/to/my/favorite.mp3
VOLUME_MAX=64
VOLUME_DEFAULT=64

case "$1" in
	start)
		$0 __player >/dev/null 2>/dev/null &
		$0 __mixer  >/dev/null 2>/dev/null &
		;;

	stop)
		test -e $PIDFILE_P && kill `cat $PIDFILE_P`
		test -e $PIDFILE_M && kill `cat $PIDFILE_M`
		rm -f $PIDFILE_M $PIDFILE_P
		amixer sset Master $VOLUME_DEFAULT >/dev/null 2>/dev/null
		;;

	__mixer)
		echo $$ >$PIDFILE_M
		for ((x=0; x<$VOLUME_MAX; x++)); do
			amixer sset Master $x
			sleep 1
		done
		rm -f $PIDFILE_M
		;;

	__player)
		echo $$ >$PIDFILE_P
		exec mpg321 $SOUNDFILE
		rm -f $PIDFILE_P
		;;
esac

«reminder.sh start» — в крон, и «reminder.sh stop» — на хоткей ;)

arsi ★★★★★
()
Ответ на: комментарий от arsi

да, и ещё затупил: после «exec mpg321 $SOUNDFILE» уже идёт мёртвый код, так что следующую строчку («rm -f $PIDFILE_P») можно смело удалять. (а без exec низя, т.к. иначе не получим пид mpg321, а убийство родительского (относительно mpg321) bash'a просто демонизирует mpg321, а не убьёт его.)

arsi ★★★★★
()
Ответ на: комментарий от sdio

благодарю. ни дня без новой информации, радует ;)

arsi ★★★★★
()
Ответ на: комментарий от sdio

Супер еще раз огромное спасибо, немного подправил код под себя и прикрутил к медия кнопке клавиатуры.

#!/bin/bash

PIDFILE_M=/var/tmp/reminder.mixer.pid
PIDFILE_P=/var/tmp/reminder.player.pid
SOUNDFILE=/home/server/public/posledni_geroi.mp3
VOLUME_MAX=31
VOLUME_DEFAULT=31
DATE=`/home/server/public/smarttime.py`

case "$1" in
   start)
      $0 __player >/dev/null 2>/dev/null &
      $0 __mixer  >/dev/null 2>/dev/null &
      ;;

   stop)
      test -e $PIDFILE_P && kill `cat $PIDFILE_P`
      test -e $PIDFILE_M && kill `cat $PIDFILE_M`
      echo "Доброе утро господ+ин, $DATE"	| festival --tts --language russian
      rm -f $PIDFILE_M $PIDFILE_P
      amixer sset Master $VOLUME_DEFAULT >/dev/null 2>/dev/null
      ;;

   __mixer)

      echo $$ >$PIDFILE_M
      for ((x=0; x<$VOLUME_MAX; x++)); do
         amixer sset Master $x
         sleep 1
      done
      rm -f $PIDFILE_M
      
         amixer sset Master $VOLUME_DEFAULT
      ;;

   __player)
      
      echo $$ >$PIDFILE_P
      exec mpg321 $SOUNDFILE
      ;;
esac
Timuridze
() автор топика

to cron.hourly:

KUKU=`/bin/date +%I`
while [ $KUKU -gt 0 ]; do
eject /dev/cdrom
cat /root/xxx/kuku.au > /dev/dsp
eject -t /dev/cdrom
KUKU=$((KUKU-1))
done

anonymous
()
Ответ на: комментарий от anonymous

А если я rw шку пишу, и тут бац...Куку приехали? Вот еще вариация #!/bin/sh

a=`date +%I`; ~/smarttime.py | festival --tts --language russian while [ $a != 0 ] do aplay -q ~/ku-ku.wav a=`expr $a - 1` done

Timuridze
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.