heemayl forneceu a resposta correta para começar cron
a correr na parte superior e inferior da hora. Obrigado novamente! No entanto, como outros usuários descobriram, cronjob
não é possível reproduzir arquivos de som por padrão:
Configurando cron
para reproduzir sons
Para cron
reproduzir arquivos de som, ele precisa de export
uma variável de ambiente:
export XDG_RUNTIME_DIR="/run/user/1000"
Uma vez feito isso no seu script, os sons serão reproduzidos.
Como apontado por outra resposta seu ID de usuário nem sempre pode ser 1000
. Para encontrar seu ID de usuário, use:
$ id
uid=1000(rick) gid=1000(rick) groups=1000(rick),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
Se o seu ID do usuário não for 1000, altere o script para o seu ID.
Configure cron
para executar a parte superior da hora e a parte inferior da hora
crontab -e
configuração (apenas nas ú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 configuram cron
para usar onano
editor. Use estas teclas de controle nano
para salvar seu trabalho:
- Adicione as duas últimas linhas acima e use Ctrl+ Opara escrever O ut (salvar) o arquivo.
- Um
/tmp...
nome de arquivo é apresentado, mas não se preocupe, basta pressionar Enter.
- Agora use Ctrl+ Xpara e X o
nano
editor.
O bottom-of-hour-chime
script é executado na parte superior da hora também, mas tudo bem, pois é curto e agradável.
Se você não tiver o >/dev/null
no final das linhas, cron
tente enviar um email com a saída do comando. Se você não tiver o servidor de email configurado, uma mensagem de erro será exibida no seu /var/log/syslog
arquivo:
Oct 02 10:00:07 dell CRON[21259]: (CRON) info (No MTA installed, discarding output)
Configurando cron
para exibir notificações pop-up
O script exibe uma mensagem de notificação pop-up na parte superior de cada hora. Portanto, 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 obter o som para o jogo. Isso ocorre porque é cron
executado em ambiente mínimo. Essa linha deve ser omitida primeiro se você usar um reprodutor de som de terceiros. Se não houver som, coloque a linha de volta. Ainda assim, se não houver som, caça feliz!
Os dois principais noticiários de TV que eu assisto na Internet têm um volume mais baixo que o normal e, portanto, a TV aumentou mais que o normal. Consequentemente, quandoogg123
reproduz arquivos de som, eles soam muito altos. Então pactl
é usado para reduzir o volume antes do carrilhão e aumentá-lo depois.
Conteúdo do carrilhão da parte inferior da hora
Isso é quase uma duplicata top-of-hour-chime
e talvez redundante aqui, mas incluído para fins de documentação completa.
#! /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%