Cron Job for den siste dagen i måneden

Jeg synes cron er en fantastisk kreasjon. Den er enkel i hva den gjør samtidig som den er ekstremt nyttig. Tillat meg å presentere en kort introduksjon til det for de ukjente, så vil jeg vise deg et nyttig triks du kanskje trenger en dag. Fortsett å lese denne bloggen for å lære om cron og crontab-kommandoen – og hvorfor du bør kjøre crontab på slutten av måneden.

Kort introduksjon til Cron & Crontab

Du kan angi hvilken som helst kommando til å kjøre når som helst (eller gjentatte ganger med et bestemt intervall) ved å bruke cron. Navnet kommer fra “chronos” – det greske ordet for tid. Hvis du har Linux, kommer du til å ha cron. Kjør kommandoen “crontab” for å redigere eller opprette jobbene for brukeren din.

Syntaksen virker litt kryptisk til å begynne med, men den er veldig grei. Du skriver inn en rekke tall og symboler etterfulgt av crontab-kommandoen du ønsker å kjøre. Tallene og symbolene angir ønsket tid og dag for å kjøre kommandoen. De er atskilt med et mellomrom som følger:
minutt time dag måned dag i uken

Å lese:  Hvordan legge til oppskriftsskjema i WordPress (den enkle måten)

Så denne oppføringen:

5 13 * 3 * utfør_dette

vil kjøre crontab-kommandoen “execute_this” kl. 13:05 hver dag kun i mars. Endre det litt:

5 13 * 3-5 * utfør_dette

vil kjøre den samme crontab-kommandoen samtidig, men nå vil den kjøres hver dag i mars, april og mai.

Som sagt var dette en kort introduksjon til cron og crontab-kommandoen. Hvis du ikke vet hva du gjør her, vil du kanskje ikke teste på noen viktig maskin. Gå på research og lek (det er den beste måten å lære).

Sette inn en Crontab for den siste dagen i måneden

Så, hvordan lager du en crontab til å kjøre den siste dagen i måneden? For å komme i gang, slik ser det ut å kjøre den første i hver måned (kl. 13:05 igjen):

5 13 1 * * utfør_dette

At “1” der inne betyr når datoen er “1”, som er den første dagen i måneden. Problemet er at vi ikke har et nummer å sette der, som betyr den siste dagen i måneden. Det kan være 30, 31, 28, eller noen ganger til og med 29. Men én ting er alltid sant om den siste dagen i måneden, i morgen er den første!

La oss bruke denne informasjonen til å lage denne oppføringen:

59 23 28-31 * * utfør_dette

Jeg har kjørt denne ene løpeturen rett før dagen var over (23:59), men det kan være når som helst du trenger det. Og den vil kjøre på hver av våre mulige slutten av måneden (28-31), hver måned.

Å lese:  11 tips for å lage en vellykket markedsføringsplan for sosiale medier i 2024

Selvfølgelig vil vi ikke at koden vår skal kjøres 28. oktober. Det er ikke den siste dagen i måneden. Datoen bør være 31 hvis det er oktober, men enda viktigere (og mer pålitelig) bør morgendagens dato være 1. Det er på tide å trekke frem våre shell scripting superkrefter.

[bash]dato +%d[/bash]

vil gi deg gjeldende dato som en streng med to tegn. Men siden vi vil se hva morgendagen er, ber vi om det i stedet

[bash]dato +%d -d i morgen[/bash]

Hvis det samsvarer med “01”, vet vi at morgendagen er den første, så i dag må være den siste.

[bash][ “$(date +%d -d tomorrow)” = “01” ] && utfør_dette[/bash]

Vår test (hakeparentesene) vil resultere i enten sant eller usant. Den vil kjøre den testen OG (&&) den neste kommandoen som er kommandoen vi satte ut til å kjøre i utgangspunktet. Men på grunn av måten datamaskiner fungerer på, hvis testen kommer falsk tilbake, vil den ikke bry å kjøre den andre kommandoen.

Så bare når den testen kommer tilbake som sann, vil den kjøre vår andre crontab-kommando. Dette er akkurat det vi ønsket, og vi har nettopp lurt datamaskinen til å gjøre vårt onde arbeid. Gratulerer!

Her er hva vi skriver inn i crontab for å få kommandoen vår til å kjøre helt på slutten av hver måned:

Å lese:  Den ultimate veiledningen for bruk av Microsoft Teams

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

Utforsk mulighetene til Magento med Magento Hosting Fra Hostinger.

Nye publikasjoner:

Anbefaling