Cron Job na posledný deň v mesiaci

Myslím, že cron je úžasný výtvor. Je jednoduchý v tom, čo robí, a zároveň je mimoriadne užitočný. Dovoľte mi uviesť krátky úvod pre tých, ktorí nepoznajú, potom vám ukážem šikovný trik, ktorý možno budete niekedy potrebovať. Pokračujte v čítaní tohto blogu a dozviete sa viac o crontab a príkaze crontab – a prečo by ste mali spustiť crontab na konci mesiaca.

Stručný úvod do Cron & Crontab

Pomocou cronu môžete nastaviť spustenie ľubovoľného príkazu kedykoľvek (alebo opakovane v nastavenom intervale). Názov pochádza z „chronos“ – gréckeho slova pre čas. Ak máte Linux, budete mať cron. Spustite príkaz “crontab” na úpravu alebo vytvorenie úloh pre vášho používateľa.

Syntax sa na prvý pohľad zdá trochu záhadná, ale je veľmi jednoduchá. Zadáte sériu čísel a symbolov, za ktorými nasleduje príkaz crontab, ktorý chcete spustiť. Čísla a symboly uvádzajú požadovaný čas a deň na spustenie príkazu. Sú oddelené medzerou takto:
minúta hodina deň mesiac deň v týždni

Takže tento záznam:

5 13 * 3 * vykonať_toto

spustí príkaz crontab „execute_this“ o 13:05 každý deň iba v marci. Trochu to mením:

5 13 * 3-5 * vykonať_toto

spustí rovnaký príkaz crontab v rovnakom čase, ale teraz sa bude spúšťať každý deň v marci, apríli a máji.

Ako som povedal, toto bol krátky úvod do cronu a príkazu crontab. Ak neviete, čo tu robíte, možno nebudete chcieť testovať na žiadnom dôležitom stroji. Choďte na prieskum a hrajte sa (je to najlepší spôsob, ako sa učiť).

Čítať:  Chicago Fire sezóna 12: Zápletka, obsadenie, okno vydania a ďalšie

Nastavenie Crontab na posledný deň v mesiaci

Ako teda vytvoríte crontab, ktorý bude spustený v posledný deň v mesiaci? Aby sme mohli začať, takto by vyzeralo spustenie vždy prvého dňa v mesiaci (opäť o 13:05):

5 13 1 * * vykonať_toto

To „1“ tam znamená, keď je dátum „1“, čo je prvý deň v mesiaci. Problém je v tom, že nemáme číslo, ktoré by sme tam dali, čo znamená posledný deň v mesiaci. Môže to byť 30, 31, 28 alebo niekedy aj 29. Ale jedna vec je vždy pravdivá o poslednom dni v mesiaci, zajtra je prvý!

Použime tieto informácie na vytvorenie tohto záznamu:

59 23 28-31 * * vykonať_toto

Tento som spustil tesne pred koncom dňa (23:59), ale môže to byť kedykoľvek budete potrebovať. A bude sa spúšťať každý mesiac v každom z našich možných dátumov konca mesiaca (28. – 31. 12.).

Samozrejme, nechceme, aby sa náš kód spustil 28. októbra. Toto nie je posledný deň v mesiaci. Dátum by mal byť 31, ak je október, ale čo je dôležitejšie (a spoľahlivejšie), zajtrajší dátum by mal byť 1. Je čas vytiahnuť naše superschopnosti v oblasti skriptovania.

[bash]dátum + %d[/bash]

vám poskytne aktuálny dátum ako dvojznakový reťazec. Ale keďže chceme vidieť, čo je zajtra, namiesto toho o to žiadame

[bash]dátum +%d -d zajtra[/bash]

Ak sa to zhoduje s „01“, potom vieme, že zajtrajšok je prvý, takže dnešok musí byť posledný.

Čítať:  Váš sprievodca sprievodcami Instagramom v roku 2024

[bash][ “$(date +%d -d tomorrow)” = “01” ] && vykonať_toto[/bash]

Výsledkom nášho testu (hranaté zátvorky) bude pravda alebo nepravda. Spustí tento test A (&&) ďalší príkaz, ktorým je príkaz, ktorý sme sa rozhodli spustiť ako prvý. Ale vzhľadom na spôsob fungovania počítačov, ak sa test vráti nesprávne, nebude to obťažovať spustenie druhého príkazu.

Takže až keď sa tento test vráti ako pravdivý, spustí sa náš druhý príkaz crontab. To je presne to, čo sme chceli a práve sme oklamali počítač, aby vykonal našu zlú prácu. Gratulujem!

Tu je to, čo zadáme do crontab, aby sa náš príkaz spustil na samom konci každého mesiaca:

[code language=”bash”]59 23 28-31 * * [ “$(date +%d -d tomorrow)” = “01” ] && vykonať_toto[/code]

Preskúmajte možnosti Magento s Magento hosting Od Hostinger.

Nové Publikácie:

ODPORÚČANIE