Чи можу я використовувати крон для звучання вгорі години, як дідівський годинник?


8

Я втрачаюсь у askubuntu, читаючи питання та відповіді та експериментуючи з рекомендованими фрагментами коду. Тому я часто пропускаю переключення телеканалів новин в Інтернеті в кінці години. Не є великою проблемою для каналів youtube, які дозволяють змінювати час, але це "шоу пробки" для телевізійних каналів за допомогою флеш-плеєра.

Чи cronможна налаштувати виконання завдання вгорі кожної години, де я надаю сценарій, щоб звучати дідусь, як звук годинника (звичайно, з тонкою гучністю звуку!)? Незначний звук міг пролунати і в кінці години. Я впевнений , що я можу знайти підходящі .oggабо .ogaфайли в мережі , і я знаю , що я можу використовувати , ogg123щоб грати їх. Я просто не знаю, чи cronміг би це зробити. Я знаю, що міг би використати сценарій, який спить і прокидається, щоб перевірити час, але мені не подобається думка про те, щоб щось постійно працювало (цього достатньо, я вже думаю).

Якщо це можна зробити, чи cronможе хтось відповісти, як це налаштувати?

Дякую.


Я не дуже хороший в англійських ідіомах. верх кожної години, що означає початок кожної години?
heemayl

1
@heemayl LOL так. Я прийшов з часу, перш ніж були винайдені цифрові годинники, і була хвилинна рука, що коли "вгорі" означало: 00 години, а коли "знизу" означало: 30 години. Хехе
WinEunuuchs2Unix

Sudo APT-отримати установку mcron - stackoverflow.com/questions/44470965 / ...
SDsolar


@SDsolar це здається заміною, cronяка виходить за рамки питання. FYI Я написав сценарій дідуся у відповіді нижче.
WinEunuuchs2Unix

Відповіді:


7

Так, ти можеш.

Відкрийте свою cronтаблицю за допомогою crontab -eта додайте:

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

Замініть /path/to/player, і /path/to/file.oggвідповідними значеннями ви хочете.

Вищезгадане відтворюватиме звук (тобто виконувати команду) щогодини о 00-й (початок першої) хвилини.

Якщо ви хочете виконати команду також на 30-й хвилині кожної години:

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

Під час введення тексту crontab -eговориться, що для мого облікового запису користувача не створено жодного файлу. Він пропонує створити один із nano. Я це зробив і налаштував запропоновані команди. При виборі ^W(файл запису) ім'я файлу за замовчуванням: /tmp/crontab.6QN0vo/crontab. Назва файлу здається дуже неправильною. Чи можете ви оновити свою відповідь для створення нового crontab -eфайлу конфігурації? Зауважте, моя система вже налаштована на видалення /tmp/IG*файлів за добу, яка працює добре (я просто не пам'ятаю, як я встановила цього цуценя).
WinEunuuchs2Unix

@ WinEunuuchs2Unix Не хвилюйтесь, cronвідкриває цей файл тимчасово /tmp, коли ви збережете вміст, створить / замінить файл /var/spool/cron/crontabs/<username>, і це постійно.
heemayl

6

heemayl дав правильну відповідь, щоб змусити cronбігати у верхній і нижній частині години. Знову дякую! Однак, оскільки інші користувачі виявили, що cronjobзвукові файли за замовчуванням не можуть відтворювати:


Налаштування cronдля відтворення звуків

Для cronвідтворення звукових файлів потрібна exportзмінна середовище:

export XDG_RUNTIME_DIR="/run/user/1000"

Як тільки це буде зроблено у вашому сценарії, звуки відтворюватимуться.

Як зазначив інший відповідь ваш ідентифікатор користувача може бути не завжди 1000. Щоб знайти свій ідентифікатор користувача, виконайте вказані нижче дії.

$ id

uid=1000(rick) gid=1000(rick) groups=1000(rick),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

Якщо ваш ідентифікатор користувача не 1000, змініть скрипт на свій ідентифікатор.

Налаштуйте cronдля запуску вгорі та внизу години

crontab -e налаштування (лише останні 5 рядків):

# 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

Більшість користувачів налаштовані cronна використання nanoредактора. Використовуйте ці клавіші управління, nanoщоб зберегти свою роботу:

  • Додайте останні два рядки вище та використовуйте Ctrl+, Oщоб написати O ut (зберегти) файл.
  • /tmp...Файл представлено, але не турбуйтеся, просто натисніть кнопку Enter.
  • Тепер використовуйте Ctrl+ Xдо e X it nanoредактор.

У bottom-of-hour-chimeпробігах сценаріїв у верхній частині годин теж , але, що це нормально , так як цей короткий і солодкі.

Якщо у вас немає >/dev/nullв кінці рядків, cronнамагається надіслати вам повідомлення електронною поштою. Якщо у вас не встановлено поштовий сервер, у вашому /var/log/syslogфайлі з’являється повідомлення про помилку :

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

Налаштування cronдля відображення спливаючих повідомлень

Сценарій відображає спливаюче повідомлення сповіщення вгорі кожної години. Тож для цього потрібно експортувати додаткову змінну:

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

Зміст 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%

export XDG_RUNTIME_DIR...Необхідно отримати звук гри. Це тому, що cronпрацює в мінімальних умовах. Цей рядок слід спочатку опустити, якщо ви використовуєте сторонній програвач звуку. Тоді, якщо немає звуку, поверніть лінію назад. Тоді ще якщо звуку немає, ну щасливе полювання!

У двох головних новинних телепередачах, які я дивлюся по мережі, є більш м'який, ніж звичайний, тому телевізор увімкнено вище, ніж зазвичай. Отже, під час ogg123відтворення звукових файлів вони звучать дуже голосно. Так pactlвикористовується для зменшення гучності перед звуком і збільшення його після.

Зміст передзвону в дні

Це майже дублікат top-of-hour-chimeі, можливо, зайве тут, але включений для цілей документації.

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

1

Незважаючи на використання цього експорту:

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

це не спрацювало.

Після місяців досліджень не знайшлося рішення.

У відчаї спробували наступне, і все спрацювало:

Введіть наступне в контакт

# Terminal command: crontab -e
# Detect the name of the display in use
display=":$(ls /tmp/.X11-unix/* | sed 's#/tmp/.X11-unix/X##' | head -n 1)"
user=$(who | grep '('$display')' | awk '{print $1}') # the user of the display 
uid=$(id -u $user) #Detect the id of the user

XDG_RUNTIME_DIR=/run/user/${uid}

*/5 * * * * sh /root/.play_sound.sh

Далі створіть .play_sound.sh

/root/.play_sound.sh

display=":$(ls /tmp/.X11-unix/* | sed 's#/tmp/.X11-unix/X##' | head -n 1)"
user=$(who | grep '('$display')' | awk '{print $1}') # the user of the display 
uid=$(id -u $user) #Detect the id of the user

su - $user -c "paplay /usr/share/sounds/freedesktop/stereo/complete.oga"

Сподіваюсь, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.