Когда-то, уже достаточно давно мне понадобился будильник, достаточно громкий, чтобы поднять мертвого, достаточно разнообразный, чтобы не надоедать и при этом достаточно тяжело выключаемый, чтобы не делать этого "на автомате". Всем этим требованиям отлично соответствовал персональный компьютер и решение этой несложной задачи было найдено при помощи интернет-радио и двух консольных утилит: cron и rtcwake.
Время шло, импровизированный “будильник” великолепно справлялся с задачей, хотя и оставался при этом не самым удобным в плане эксплуатации, все-таки для изменения его приходилось править конфиги, а команду на засыпание вводить в терминал напрямую. Так продолжалось почти год, но совсем недавно один знакомый, недавно перешедший на Ubuntu Linux, попросил рассказать ему о таком чудесном явлении, как командная строка и ее интерпретаторе bash. Поскольку обучение даже самым азам программирование в отрыве от практики по моему глубокому убеждению бесполезно, была написана написана статья, которую я представляю вашему вниманию.
Несмотря на то, что основной целью является все-таки обучение азам работы с bash, скрипт, получающийся в итоге вполне можно использовать и по прямому назначению: то есть в качестве будильника.
Содержание статьи
Что такое Bash
Одной из самых интересных особенностей операционных систем на базе GNU/Linux является bash. Bash это интерпретатор командной строки, по сути, скриптовый язык программирования, на котором вполне возможно писать достаточно сложные программы, так называемы shell-скрипты или сценарии. Естественно, что на фоне более “серьезных” собратьев по семейству интерпретируемых языков, подобных java или python, функциональность bash смотрится куда более бедно, но зато он плотно интегрирован в саму систему, а это означает, что значительно проще наладить взаимодействие между ним и многими системными утилитами.
Что нам необходимо
С тех заданием все просто: нам необходим простой, надежный, громкий и разнообразный будильник, который сможет поднять мертвеца. И написан он должен быть исключительно на Bash, то есть системными средствами Linux.
Инструменты:
- Bash - это, я думаю, понятно любому, интерпретатор командной строки, часть любого Linux - дистрибутива.
- rtcwake - встроенный в ядро инструмент, позволяющий использовать драйвер для RTC (Real Time Clock), поддерживающий стандартные флаги для просыпания.
- cron - планировщик задач. Уже установлен в большинстве дистрибутивов.
Создание будильника на Bash
Для начала изготовим скрипт, представляющий собой сигнал будильника. Создаем папку wakeupdude (название строго индивидуально и отражает ваше чувство юмора (да, у меня все с ним плоховато) и серьезность отношения к поставленной задаче), в этой папке создаем файл alarm.sh.
Содержимое файла может быть различным, но я решил, что моим будильником будет любимая интернет-радиостанция, поэтому в моем случае все выглядит так:
cromium-browser https://radio.yandex.ru/user/zmeigorynych3
Сохраняем. Открываем терминал в этой же папке и прописываем:
sudo chmod +x alarm.sh
Вообще, советую запомнить эту команду, поскольку она позволяет, используя терминал присвоить любому файлу любые права доступа ( “+x” означает, что файл отныне будет исполняемым).
В принципе, здесь можно использовать не только интернет-радио, но и запуск музыкальным плеером определенного файла или плей-листа.
Сигнал готов, теперь приступаем к написанию основного скрипта, который будет отвечать за “завод” нашего будильника. Сперва создаем в нашей папке файл wake.sh , в котором записываем следущее:
Теперь сохраняем файл и с помощью команды chmod +x даем ему права исполняемого. В принципе, наш будильник готов, но, поскольку мы живем в благословенном 2018 году, то каждому уважающему себя приложению нужен ярлык на рабочий стол, то мы его и изготовим:
В нужной папке создадим файл с расширением .desktop, откроем этот файл в редакторе, где и пропишем следующее:
Закрываем с сохранением и при следующем запуске выбираем “сделать исполняемым”. Наш будильник готов.
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали




java разве интерпретируемый?
Исходный код на Java -> компилируется в Байт Код ->
JVM -> транслирует команды в -> Машинный код(010101).
Можно конечно и через cron, но, если не стоит задача получения практики в шелле, имеет смысл взять уже готовый user-friendly будильник -- с простой UI-настройкой и минимумом отьедаемых ресурсов. Я, например, пользуюсь стандартным гномовским AlarmClock https://www.linuxlinks.com/AlarmClock (тихо висит в трее, запускает мелодию или плеер/браузер, позволяет ставить пробудку по дням недели и тд.)
всё гениальное придумано до нас, никто не знает про команду at чтоли?
во, у меня даже простая инструкция есть
https://itrus.su/2015/08/28/%D0%B3%D0%B8%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B9-%D0%B1%D1%83%D0%B4%D0%B8%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA/
Зачем изобретать велосипед, если есть онлайн будильники(игрушки это всё)
А у меня вот так и не получается запустить, пробовали и браузеры запускать через крон и vlc и я я mplayer, процесс появляется, но окно так и не всплывает, гуглу только намекает, что проблема в переменных, но вот решить задачу не получается, из переменных добавил только DISPLAY=:0, система ubuntu 20.04