TGViewer
Семён сохраняет полезное_) Семён сохраняет полезное_) @pole_sam · 686 subscribers
Post #264 109

Forwarded from Bash Days | Linux | DevOps (Роман Шубин)

➡️ Пока ты дочитаешь этот пост, в мире умрёт 100+ человек. И они никогда уже не узнают про Linux таймеры.

А ты узнаешь!


Тыж всяко в курсе, что планировать регулярные таски в Linux можно не только через cron и его форки, а еще и через systemd + таймеры.

Каждый уважающий себя админ, пытается навязать мне эти таймеры. Мол, Роман ты заебал, нужно использовать таймеры, зачем тебе этот легаси cron. На дворе 2024 год, нужно идти в ногу со временем.

Справедливо? Неа!

Чтобы добавить таску в крон, мне потребуется секунд 15, а то и меньше. А чтобы провернуть это с таймерами, придется знатно упороться.

Давай сделаем простой таймер. Для начала создадим сервис, который будет запускать bash скрипт.

Создаем файл /etc/systemd/system/bashdays.service

[Unit]
Description=Bashday service

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/bashdays.sh

[Install]
WantedBy=multi-user.target


Тип сервиса = камшот, сервис будет запущен один раз и завершится после выполнения задачи.

ExecStart = какой внешний Bash скрипт будем передёргивать.

WantedBy = не обращай внимания, это базовый таргет.


Теперь сам скрипт bashdays.sh 👇

#!/bin/bash

unix_time=$(date +%s)
> /tmp/$unix_time


Скрипт будет создавать в папке tmp файл с именем равным Unixtime.

Проверяем:

systemctl daemon-reload
systemctl start bashdays
systemctl status bashdays


Всё, видим что все успешно отработало. А в папке tmp появился файл с именем 1713409747 (у тебя будет другое).

Так. Теперь нужно сделать таймер, чтобы запускать сервис в нужные промежутки.

Уже начинаешь понимать в какой блуд заводят таймеры?

Создаем файл /etc/systemd/system/bashdays.timer

[Unit]
Description=Bashdays timer

[Timer]
OnCalendar=*:*:00

[Install]
WantedBy=timers.target


Срабатывает каждую минуту. Запускаем:

systemctl start bashdays.timer
systemctl status bashdays.timer


Видим: Active: running + Triggers: bashdays.service

Поздравляю, ты добавил одну таску в «крон» через таймеры. Теперь в папке tmp каждую минуту будут появляться файлы.

Но это еще не всё. Нужно добавить таймер в автозагрузку:

systemctl enable bashdays.timer


А вот теперь всё, можно перезагрузить сервер и файлы в tmp продолжат создаваться.

Теперь смотри, в одном большом Интернет магазине, у клиента в кроне подвешено около 150 скриптов. Ладно, не скриптов, дергается консольная ларавелька с нужными php параметрами. Не суть.

Ну дак вот! Ты будешь создавать 150 сервисов + 150 таймеров?

Да это ЕБОБО! 300 файлов! И все это никак не группируется. Извините, но проще через нативный cron сделать.

Понятно дело, если у тебя 2 таски, то можно повыебываться с таймерами. Но для масштабных приключений, увы.

Тут либо автоматизацию пилить, либо ручками страдать.

✔️ Да, таймеры гибкие, это бест-практики, их можно тонко настраивать, их легче дебажить через journalctl -u bashdays.service.

Но в большинстве случаев они избыточны.

Я остаюсь преданным крону, но таймеры выбрасывать на помойку не буду, авось когда-нибудь пригодятся.

Тему таймеров я затрагивал ранее в этом посте, в нем мы разбирали как с помощью sshfs надежно замонтировать сетевые диски, чтобы они не отваливались.


А ты используешь таймеры? Чо думаешь?

tags: #linux #bash

@ВАSНDАYS | BАSHDАYS.CОM
More from @pole_sam
  1. Oct 6, 2026Всем привет. У нас произошло расширение парка оборудования. У нам приехал WiFi эмулятор дл…
  2. Oct 4, 2026Всем привет! На этой неделе не будет заметки, т.к я занят написанием кода для PTP грандмас…
  3. Oct 2, 2026Всем привет. Сегодня написал Bring-up прошивку для платы. Первая ревизия запустилась без п…
  4. Sep 27, 2026Всем привет! Сделал свой форк pysim для удобного вывода информации. https://telegra.ph/For…
  5. Sep 27, 2026Приехала плата PTP грандмастера
  6. Sep 25, 2026Всем привет! Приехала сегодня отладка от Qualcomm что по всей видимости в своё время вынес…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →