it-swarm.com.de

Kann ich Cron verwenden, um wie eine Standuhr zu jeder vollen Stunde zu läuten?

Ich verliere mich in Askubuntu, lese Fragen und Antworten und experimentiere mit empfohlenen Codeausschnitten. Deshalb vermisse ich es oft, zu jeder vollen Stunde den Fernsehnachrichtensender im Internet zu wechseln. Kein großes Problem für YouTube-Kanäle, die zeitversetztes Fernsehen ermöglichen, aber es ist ein "Show Stopper" für TV-Kanäle, die Flash Player verwenden.

Kann cron so konfiguriert werden, dass zu jeder vollen Stunde ein Job ausgeführt wird, in dem ich ein Skript zur Verfügung stelle, mit dem ein Großvater wie ein Glockenspiel erklingt (natürlich mit subtiler Lautstärke!)? Zu jeder vollen Stunde ertönte ein leises Glockenspiel. Ich bin sicher, ich kann geeignete .ogg oder .oga Dateien im Netz finden und ich weiß, dass ich ogg123 verwenden kann, um sie abzuspielen. Ich weiß nur nicht, ob cron das könnte. Ich weiß, ich könnte ein Skript verwenden, das schläft und aufwacht, um die Zeit zu testen, aber der Gedanke, dass immer etwas läuft, gefällt mir nicht (ich denke, es gibt schon genug davon).

Wenn dies mit cron möglich ist, kann jemand antworten, wie es eingerichtet werden soll?

Danke.

8

heemayl hat die richtige Antwort geliefert, um cron zur vollen und zur vollen Stunde laufen zu lassen. Nochmals vielen Dank! Wie jedoch andere Benutzer festgestellt haben, kann cronjob standardmäßig keine Audiodateien wiedergeben:


Konfigurieren von cron zum Abspielen von Sounds

Damit cron Sounddateien abspielen kann, muss export eine Umgebungsvariable sein:

export XDG_RUNTIME_DIR="/run/user/1000"

Sobald dies in Ihrem Skript erledigt ist, werden die Sounds abgespielt.

Konfigurieren Sie cron so, dass es zu Beginn und am Ende der Stunde ausgeführt wird

crontab -e setup (nur die letzten 5 Zeilen):

# 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

Die meisten Benutzer richten cron ein, um den nano -Editor zu verwenden. Verwenden Sie diese Steuertasten in nano, um Ihre Arbeit zu speichern:

  • Fügen Sie die letzten beiden Zeilen hinzu und verwenden Sie Ctrl+O schreiben O ut (speichern) der Datei.
  • Ein /tmp... Dateiname wird angezeigt, aber seien Sie nicht besorgt, drücken Sie einfach Enter.
  • Jetzt benutzen Ctrl+X zu e X es der nano -Editor.

Das Skript bottom-of-hour-chime wird ebenfalls zu jeder vollen Stunde ausgeführt, aber das ist in Ordnung, da es kurz und bündig ist.

Wenn Sie den >/dev/null am Ende der Zeilen nicht haben, versucht cron, Ihnen eine E-Mail mit der Befehlsausgabe zu senden. Wenn Sie den Mailserver nicht eingerichtet haben, wird in Ihrer /var/log/syslog -Datei eine Fehlermeldung angezeigt:

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

Konfigurieren von cron zum Anzeigen von Popup-Benachrichtigungen

Das Skript zeigt zu jeder vollen Stunde eine Popup-Benachrichtigung an. Dazu muss eine zusätzliche Variable exportiert werden:

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

Inhalt von 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%

Der export XDG_RUNTIME_DIR... ist erforderlich, damit der Ton abgespielt werden kann. Dies liegt daran, dass cron in einer minimalen Umgebung ausgeführt wird. Diese Zeile sollte zuerst weggelassen werden, wenn Sie einen Soundplayer eines Drittanbieters verwenden. Wenn kein Ton zu hören ist, stellen Sie die Leitung wieder her. Dann noch wenn kein Ton, na fröhliche Jagd!

Die beiden Hauptnachrichtensendungen, die ich über das Internet schaue, haben eine geringere Lautstärke als normal, sodass der Fernseher höher als normal eingestellt ist. Wenn ogg123 Audiodateien wiedergibt, klingen sie folglich sehr laut. Also wird pactl verwendet, um die Lautstärke vor dem Glockenspiel zu verringern und danach zu erhöhen.

Inhalt des Stundentakts

Dies ist fast ein Duplikat von top-of-hour-chime und hier möglicherweise überflüssig, wird jedoch zu Zwecken der vollständigen Dokumentation mitgeliefert.

#! /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%
4

Ja, du kannst.

Öffne deine cron Tabelle mit crontab -e und füge hinzu:

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

Ersetzen Sie /path/to/player und /path/to/file.ogg durch die gewünschten Werte.

Der obige Befehl gibt den Ton zu jeder vollen Stunde bei 00- (Beginn der ersten) Minute wieder (d. H. Führt den Befehl aus).

Wenn Sie den Befehl auch zur 30 -ten Minute jeder Stunde ausführen möchten:

00,30 * * * * /path/to/player /path/to/file.ogg
7
heemayl