Posso usar o cron para tocar no topo da hora como um relógio de pêndulo?

6

Eu me perco no askubuntu lendo Q & amp; A e testando os snippets de código recomendados. Por isso, muitas vezes sinto falta de mudar os canais de notícias da TV na Internet no topo da hora. Não é um grande problema para os canais do youtube que permitem a mudança de horário, mas é um "show stopper" para os canais de TV que usam o Flash Player.

O cron pode ser configurado para executar um trabalho no topo de cada hora, onde eu forneço um script para soar um avô como o toque do relógio (com volume de som sutil, é claro!)? Um som menor poderia ser ouvido na parte inferior da hora também. Tenho certeza de que posso localizar arquivos .ogg ou .oga adequados na rede e sei que posso usar ogg123 para reproduzi-los. Eu só não sei se cron poderia fazer isso. Eu sei que eu poderia usar um script que dorme e acorda para testar o tempo, mas não gosto do pensamento de ter algo correndo o tempo todo (há o suficiente disso acontecendo, eu acho).

Se isso puder ser feito com cron , alguém pode responder como configurá-lo?

Obrigado.

    
por WinEunuuchs2Unix 02.10.2016 / 00:52

2 respostas

0

heemayl forneceu a resposta correta para obter cron para ser executado no topo da hora e da parte inferior do hora. Obrigado novamente! No entanto, outros usuários descobriram que cronjob não pode reproduzir arquivos de som por padrão:

Configurando cron para reproduzir sons

Para que cron reproduza arquivos de som, é necessário que export seja uma variável de ambiente:

export XDG_RUNTIME_DIR="/run/user/1000"

Quando isso for feito no seu script, os sons serão reproduzidos.

Configure cron para executar a hora e a parte inferior da hora

crontab -e setup (somente as últimas 5 linhas):

# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
00 *    *   *   *    /usr/local/bin/top-of-hour-chime    >/dev/null
00,30 * *   *   *    /usr/local/bin/bottom-of-hour-chime >/dev/null

A maioria dos usuários configura cron para usar o editor nano . Use essas chaves de controle em nano para salvar seu trabalho:

  • Adicione as duas últimas linhas acima e use Ctrl + O para gravar O ut (salvar) o arquivo.
  • Um /tmp... filename é apresentado, mas não se preocupe, simplesmente pressione Enter .
  • Agora use Ctrl + X para e X o editor nano .

O script bottom-of-hour-chime também é executado no topo da hora, mas isso é bom, já que é curto e doce.

Se você não tiver o >/dev/null no final das linhas, cron tentará enviar um e-mail com a saída do comando. Se você não tiver a configuração do servidor de e-mail, uma mensagem de erro será exibida no arquivo /var/log/syslog :

Oct 02 10:00:07 dell CRON[21259]: (CRON) info (No MTA installed, discarding output)

Configurar cron para exibir notificações pop-up

O script exibe uma mensagem de notificação pop-up no topo de cada hora. Então, para isso, uma variável adicional precisa ser exportada:

eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";

Conteúdo de top-of-hour-chime

#! /bin/bash

# NAME: top-of-hour-chime
# PATH: /usr/local/bin
# DESC: Play sound called by cron
# CALL: Automatically called by /var/spool/cron/crontabs/<user_name>
# DATE: Created Oct 1, 2016. Modified June 10, 2018.
# UPDT: 2016-11-09 - Add notification bubble with time in text.
#       2018-06-10 - Switch from 'ogg123' to 'paplay' in default installation.

# exit # uncomment to suppress when watching movies

# paplay needs environment variable exported:
export XDG_RUNTIME_DIR="/run/user/1000"

# needed for notify-send
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";

# get hour in 12 hour format
HOUR=$(date +%I)
ZHOUR=$(echo $HOUR | sed 's/^0*//')

pactl set-sink-volume 0 -25%
DISPLAY=:0 notify-send --urgency=critical --icon=/usr/share/icons/gnome/256x256/status/appointment-soon.png "It is ""$ZHOUR"" o'clock"
paplay '/usr/share/sounds/ubuntu/ringtones/Melody piano.ogg'
pactl set-sink-volume 0 +25%

O export XDG_RUNTIME_DIR... é necessário para que o som seja reproduzido. Isso ocorre porque cron é executado em um ambiente mínimo. Esta linha deve ser omitida primeiro se você usar um reprodutor de som de terceiros. Então, se nenhum som colocar a linha de volta. Então ainda se não houver som, caça bem feliz!

Os dois principais noticiários de TV que vejo na net têm volume mais baixo que o normal, então a TV está mais alta do que o normal. Consequentemente, quando ogg123 reproduz arquivos de som, eles soam muito altos. Então, pactl é usado para reduzir o volume antes de soar e aumentá-lo depois.

Conteúdo do sinal de fim de hora

Isso é quase uma duplicata de top-of-hour-chime e talvez redundante aqui, mas incluída para propósitos completos de documentação.

#! /bin/bash

# NAME: bottom-of-hour-chime
# PATH: /usr/local/bin
# DESC: Play sound called by cron
# CALL: Automatically called by /var/spool/cron/crontabs/<user_name>
# DATE: Oct 1, 2016. Modified June 10, 2018.

# UPDT: 2018-06-10 Switch from 'ogg123' to 'paplay' installed by default.

# exit # Uncomment to suppress when watching movies.

# paplay needs environment variable exported:
export XDG_RUNTIME_DIR="/run/user/1000"

pactl set-sink-volume 0 -25%
paplay /usr/share/sounds/ubuntu/ringtones/Bliss.ogg
pactl set-sink-volume 0 +25%
    
por WinEunuuchs2Unix 02.10.2016 / 17:58
5

Sim, você pode.

Abra a tabela cron com crontab -e e adicione:

00 * * * * /path/to/player /path/to/file.ogg

Substitua /path/to/player e /path/to/file.ogg pelos respectivos valores desejados.

O texto acima reproduzirá o som (ou seja, execute o comando), a cada hora em 00 -th (início do primeiro) minuto.

Se você deseja executar o comando em 30 -th minuto de cada hora também:

00,30 * * * * /path/to/player /path/to/file.ogg
    
por heemayl 02.10.2016 / 01:00