Обновить

Автоматизация рутинных задач на VPS с помощью cron и скриптов

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели12K
Всего голосов 27: ↑23 и ↓4+32
Комментарии19

Комментарии 19

Прикольно, только crond давно уже устарел, используйте systemd timers. Там будет проще и с организацией и с отладкой ваших заданий.

только хотел попросить перестать мучать труп крона

Systemd является эксклюзивом только для тех дистрибутивов, где он предустановлен, причём нужно, чтобы он был предустановлен в полном составе.

Верно, но я думаю что если у юзера голое ядро или Gentoo, то это статья вряд ли для него :-)

или Gentoo

причём даже если гента то с большой долей вероятности там всё равно systemd

С большОй, но не с бОльшей. Всё-таки в мире Gentoo больше предпочитают OpenRC.

в мире коммюнити генты, как и в любом другом мире есть много своих подкоммюнити и каждое со своими тараканами.

сидеть на openrc и прочей легосятине предпочитают два типа людей: те кто очень боится что-то менять чтобы не развалить свой хрупкий набор исторически оставшихся костылей, и те кто натянув шапочку из фольги верят во всякие мифы и теории заговоров просто ради того чтобы усложнить себе жизнь. и даже если таких большинство это не повод считать что они правы.

Еще те, кто привык, что дверная ручка открывает дверь, а не люк под ногами или портал в Ад

А люк вы чем простите открывать будете? Без ломика никак не живётся?

А люк в полу должен открываться кнопкой открывания люка в полу, а не "после дождика в четверг, когда рак на горе свистнет".

Так намного проще, попробуйте )

если я люблю ручки то у меня ручнки и на двери и на люке
если я люблю кнопки то у меня кнопки и на двери и на люке

а вы я погляжу любите грязные извращения когда на каждый чих у вас свой собственный особенный ниначтонепохожий интерфейс

да, устарел...но он гораздо проще... одна строчка:

5 4 * * * sh /etc/myscript.sh

решает все и не надо таймеры писать. Может лучше точда systemd-cron?

Менять надежный, простой как топор инструмент на это новомодное поделие с кучей неочевидных нюансов? )

Не-не-не...

с кучей неочевидных нюансов?

Это каких например?

Многабукв, ибо задолбал этот systemd:

Проблема systemd и связанных с ним систем в том, что они избыточно сложные.
Тут как раз хорошо подходит слово complex, и в смысле "сложный" и в смысле "взаимозависимый, комплексный".

Когда разработчики дистрибутива тщательно и внимательно настраивают все это - оно работает, и работает неплохо, особенно с точки зрения просто_юзера, который минимально вмешивается в систему.

Но если вы полезете что-то существенно менять в настройках - вот тут и вылезут эти "неочевидные нюансы": то у вас скрипт, по идее обладающий нужными правами - на деле не может выполнить нужные действия, или что-то запускается невовремя, или наоборот, не запускается, потому что не выполнилось какое-то условие в цепочке условий, которое для вас вообще несущественно, но так настроено по умолчанию.
Причем, если отключить нафиг весь systemd - всё становится прозрачно и предсказуемо: скрипты запускаются по порядку, демоны не капризничают, диски монтируются, оборудование инициализируется, соединения устанавливаются - когда и как написано, а не как оно само хочет.

Разумеется, "нужно просто разобраться".
Вместо того, чтобы написать "запускай вот эту программу каждые 3 минуты в четверг" - раскопать все зависимости и встроить свою программу к эту стройную систему костылей и подпорок, чтобы было красиво.

Сложность ради сложности? Зачем? Чтобы что?
Я просто напишу "запускай вот эту программу каждые 3 минуты в четверг" - и она будет каждый четвер запускаться каждые 3 минуты, без плясок с бубном и исследования настроек по умолчанию.

Проблема systemd и связанных с ним систем в том, что они избыточно сложные.

у меня почему-то такого нету

Тут как раз хорошо подходит слово complex, и в смысле "сложный" и в смысле "взаимозависимый, комплексный".

а точно подходит? вся эта история про то что systemd огромная неделимая монументальная корова это всё мифы тех кто никогда systemd не юзал но начитался васянофорумов. мне не нравится resolved я его не юзаю и даже не ставлю, а вот networkd мне нравится и я его юзаю и ставлю. systemd такой же модульный как и весь нормальный софт.

Но если вы полезете что-то существенно менять в настройках - вот тут и вылезут эти "неочевидные нюансы": то у вас скрипт, по идее обладающий нужными правами - на деле не может выполнить нужные действия, или что-то запускается невовремя, или наоборот, не запускается, потому что не выполнилось какое-то условие в цепочке условий, которое для вас вообще несущественно, но так настроено по умолчанию.

а эти неочевидные нюансы они сейчас с вами в одной комнате? systemd открыто собщит о любой проблеме, в отличии от cron который в целом даже не будет логировать происходящее если это явно не прописать для каждой отдельной таски руками.

Причем, если отключить нафиг весь systemd - всё становится прозрачно и предсказуемо: скрипты запускаются по порядку, демоны не капризничают, диски монтируются, оборудование инициализируется, соединения устанавливаются - когда и как написано, а не как оно само хочет.

что-то мне подсказывает (и не в первый раз) что вы ругаете то чем никогда не пользовались основываясь на мифах из интернетов.

Разумеется, "нужно просто разобраться".Вместо того, чтобы написать "запускай вот эту программу каждые 3 минуты в четверг" - раскопать все зависимости и встроить свою программу к эту стройную систему костылей и подпорок, чтобы было красиво.

Сложность ради сложности? Зачем? Чтобы что?Я просто напишу "запускай вот эту программу каждые 3 минуты в четверг" - и она будет каждый четвер запускаться каждые 3 минуты, без плясок с бубном и исследования настроек по умолчанию.

ну вот вы уже и сами объясняете чем связка openrc+cron хуже чем systemd+timers. в systemd не надо разбираться, вы просто читаете что значит поле и пишете что вы хотите чтобы оно работало или нет. в cron чтобы оградить выполняемую таску (ровно как и в openrc чтобы оградить запускаемый сервис) вам прийдётся написать огромную shell портянку, разобраться как ручками работать с ns, выяснить почему всё это дело в очередной миллионный раз работает не так как на соседней машине и так далее. несомненно всё это очень полезно знать, но когда дело даходит до серьёзного использования гораздо лучше и выгоднее по времени использовать что-то что ограждает тебя от выстрела себе в ногу, что-то что гораздо лаконичнее и читаемей, что-то что в git blame не будет выглядеть как попытка довести ревьюера до самоубийства.

Потому что в cron два воскресенья — 0 и 7

Если для дней недели 8 значений, то как будут работать конструкции вида */8, 7/8, 8/8 и 8/7?

8 значений — это от 0 до 7. Поэтому */8 означает каждое 8-е значение, начиная с минимального, то есть с нуля (воскресенье). Значит, будет только 0, так как следующее — 0+8 — уже выходит за предел от 0 до 7.

7/8 — каждое 8-е значение, начиная с 7 (воскресенье), то есть начать с 7 и делать шаг 8, значит, тоже только 7 (воскресенье), так как 7+8=15 выходит за пределы.

8/8 и 8/7 — недопустимые значения для дня недели (8).

Проще обьяснить, что на родине cronа неделя начинается с воскресения и заканчивается субботой, по старинному программистскому правилу с 0 до 6.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
ultravds.com
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия