Одноразовое выполнение запланированных задач/напоминаний

nafanja
любой онлайн сервис может грохнуть все и разрешение не спросит…
Что за страшилки? Есть определенная вероятность, что на любого гражданина на улице может упасть кирпич. Что ж после этого из дому не выходить?

vs220
Еще из ncurses Calcurse
https://calcurse.org/
Интересный вариант.
serg66
Конечно можно создать скрипты
Кстати про скрипты в закладках нашел используется at и zenity
https://habr.com/post/240245/
https://github.com/vsile/remindme

На арче измените в remind.py #!/usr/bin/env python на
#!/usr/bin/env python2
и
sudo pacman -S at zenity
и если сервис at не был запущен для включения и запуска
systemctl enable atd.service
systemctl start atd.service
Способ вывода уведомлений можно изменить в скрипте task - например заменив zenity на notify-send и добавив звуковое оповещение
vs220, на habr скрипты смотрел в 1-ую очередь, интересная задумка, основаны на at, но когда попробовал, то, имхо, использование zenity не упрощает процесс, команду всеравно нужно вводить в ручную в консоле, так что проще использовать чистый at, тем более я использую для уведомлений notify-send и beep.
Ошибки не исчезают с опытом - они просто умнеют
Aivar
Что за страшилки? Есть определенная вероятность, что на любого гражданина на улице может упасть кирпич. Что ж после этого из дому не выходить?
вероятность падения кирпича несравнима мала, если это не места с повышенной вероятностью падения кирпича, например стройка.
онлайн сервисы хороши как дублеры, а не как основа.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Вообщем после экспериментов остановил свой выбор на at - простота и удобство, можно как на текущий день, так и на полгода вперед. Можно быстро посмотреть и список и удалить не нужные. Оповещение сделал следующее - звуковой сигнал + выскакивает строка с напоминанием.
Ошибки не исчезают с опытом - они просто умнеют
vasek
остановил свой выбор на at
Можно в заключение подробности?
  • главное - из какого пакета эта самая at;
  • что вводить для постановки напоминания;
  • используемые самописные скрипты, участвующие в процессе.
К слову. Мне обычно нужен только таймер на небольшие времена (типа поставил греть воду для кофе). Один скрипт через zenity спрашивает длительность, вычисляет финальное время и записывает в фиксированный файл. Другой скрипт вызывается ежесекундно через conky. Он при наличии этого файла вычислет и отображает оставшееся время, а при исчерпании времени выводит бип и сообщение (опять таки zenity). Если нужно прибить эту напоминалку - просто удаляю файл.
akorop
Можно в заключение подробности?
главное - из какого пакета эта самая at;
что вводить для постановки напоминания;
используемые самописные скрипты, участвующие в процессе.
1. Устанавливаем пакет at
2. Чтобы использовать at в качестве напоминалки с выводом сообщений на экран/монитор необходимо установить пакет libnotify (будет доступна утилита notify-send).
3. Использование утилиты at
3.1 Активируем демон atd
# systemctl enable atd
# systemctl start atd
Проверяем - ps aux | grep atd (или ps -elf | grep atd)
в выводе должна быть строка, типа
daemon     344  0.0  0.0  10604  1568 ?        Ss   12:08   0:00 /usr/bin/atd -f
Можно посмотреть и статус - systemctl status atd
3.2 Планирование разовых заданий
3.2.1 С выводом сообщений на монитор - здесь имеется один нюанс - нужно обязательно указывать переменную окружения DISPLAY, типа такого - env DISPLAY=:0, если не указать, система не понимает куда выводить. Пример, на текущий день
at 12:51
at> sudo beep -f 4000 -l 500; env DISPLAY=:0 notify-send "ТЕСТИРОВАНИЕ …" -t 10000 -u critical
ENTER - Ctrl+D (или просто Ctrl+D)
Проверяем (смотрим список заданий) - atq
UPD - чтобы сработал beep без ввода пароля, внести изменения в sudoers
Формат времени - все расписано, но коротко: ЧЧ:ММ ММ/ДД/ГГГГ (текущий день можно без даты - ЧЧ:ММ)
3.2.2 Можно использовать и скрипт - создать отдельную директорию и хранить там заготовки.
Пример со скриптом
at ЧЧ:ММ ММ/ДД/ГГГГ
at> ~/path/to/script/at_1.sh
UPD - примерт простого скрипта
#!/bin/sh
sudo beep -f 4000 -l 500
sleep 1
env DISPLAY=:0 notify-send "Т Е С Т О В А Я    П Р О В Е Р К А" -t 10000 -u critical
sleep 2
sudo beep -f 4000 -l 500
exit 0
3.2.3 Без вывода на экран все проще - не нужно указывать переменную env DISPLAY=:0
at ЧЧ:ММ
at> cp ~/file ~/tmp
4. Удаление заданий - atrm N (где N - номер/ID задания - смотреть atq)
5. Очистка номеров старых заданий - хранятся в /var/spool/atd/.SEQ в виде шестнадцатеричного числа
Вроде все понятно и просто.

EDIT 1 - у меня WM и сообщение выводится в каждый открытый workspace
Ошибки не исчезают с опытом - они просто умнеют
vasek, а sudo обязательно?
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
vasek, вот спасибо!
Полезная и подробная инструкция.
Без beep текстовые сообщения можно, наверное, просто через удобный алиас передавать.

Типа такого
alias alert="env DISPLAY=:0 notify-send -u critical -i error"

Тогда планирование сообщения будет выглядеть как-то так:
at 12:51
at> alert "Заняться наконец полезными делами!"
nafanja
а sudo обязательно?
С какого то времени beep без sudo у меня перестал работать. У тебя работает? - запусти beep
Пришлось отредактировать sudoers и все скрипты, в которых был прописан beep
vasek ALL=NOPASSWD: /usr/bin/pon, /usr/bin/poff, /usr/bin/pacman, /usr/bin/sysdig, /usr/bin/beep
Хотя я могу обойтись и без этого - я вобще пароль sudo не ввожу, если вставлена флешка, пример
sudo mc
* pam_usb v0.5.0
* Authentication request for user "vasek" (sudo)
* Device "usb_16" is connected (good).
* Performing one time pad verification...
* Access granted.
Если флешку вытащить, то приходится вводить
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.