Puncte:2

definiția datei crontab numai pentru a doua zi de miercuri a lunii

drapel cn

Cum definesc data crontab numai pentru a doua zi de miercuri (din fiecare lună)? Aș aprecia ajutorul tău.

drapel in
Programul cron este un instrument prea dur pentru asta. Probabil că veți dori să utilizați `0 0 * * WED` pentru a rula o sarcină în fiecare miercuri, dar indicați către un script shell care validează săptămâna lunii înainte de a rula o anumită sarcină.
Soren A avatar
drapel mx
Cred că 1. Miercurea dintr-o lună va fi întotdeauna între ziua 1 și 7 și deci a doua miercuri dintr-o lună trebuie să fie între ziua 8 și 14 ... deci ceva de genul `0 0 8-14 * WED .....` ar trebui să o facă. Desigur, primele două valori (minute și oră) pot fi orice valoare legală de minute și oră.
drapel cn
@SorenA https://crontab.guru/#0_0_8-14_*_wed Asta se desfășoară între zilele 8 și 14 ȘI miercuri :) Ai nevoie de o mică ajustare: https://crontab.guru/tips.html Probabil necesită 7 rânduri ` 0 0 */8 * WED`, `0 0 */9 * WED`, `0 0 */10 * WED`, `0 0 */11 * WED`, `0 0 */12 * WED`, ` 0 0 */13 * WED`, `0 0 */14 * WED`
Puncte:3
drapel jp

Cron poate nu face acest lucru nativ, dar un timer systemd ar putea.

Sintaxa cron 0 0 8-14 * mier voi nu muncă. Se va potrivi în fiecare miercuri, precum și în fiecare zi între 8 și 14. La fel de pagina de manual crontab spune

Ziua execuției unei comenzi poate fi specificată prin două câmpuri – ziua lunii și ziua săptămânii. Dacă ambele câmpuri sunt restricționate (adică, nu începeți cu *), comanda va fi rulată când fie câmpul se potrivește cu ora curentă.

cronometrele systemd gestionează logica diferit și pot face ceea ce doriți. Această sintaxă s-ar potrivi cu miezul nopții în a doua zi de miercuri a fiecărei luni.

OnCalendar=Wed *-*-8..14 00:00:00

Legături

drapel cn
da, cron poate face asta ;-)
elmclose avatar
drapel cn
Mulțumesc Andrew, link-uri bune. Văd că numai cron nu este suficient pentru această meserie, așa cum bănuiam. Am și o treabă care trebuie făcută în ultima vineri a fiecărei luni. Voi folosi una dintre verificările secundare sugerate și voi filtra în data corectă.
Puncte:3
drapel cn

Ai cerut cron, așa că numai folosind cron poți face asta folosind data lui bash ca al doilea test:

0 0 8-14 * * [ "$(data '+\%u')" = "3" ] && {scriptul dvs.}
  • În fiecare oră din zilele 8 până la 14
  • și apoi verificați pentru miercuri cu data lui bash. Ziua numărul 3 este miercuri

Comentariul lui Soren A este putin gresit (DAR și pagina de manual este greșită). 0 0 8-14 * MI = âLa ora 00:00 în fiecare zi a lunii de la 8 la 14 și miercuri.â Din ultimul link:

Sfat 1: dacă partea din ziua lunii sau ziua săptămânii începe cu *, acestea formează o intersecție. Altfel formează o uniune. * * 3 * 1 rulează în a 3-a zi a lunii și luni (uniune), în timp ce * * */2 * 1 rulează în fiecare a doua zi a lunii numai dacă este și luni (intersecție). The pagina de manual este incorect cu privire la acest detaliu. Mai multe informatii.

elmclose avatar
drapel cn
Acesta este foarte elegant și compact. O sa incerc. Mulțumesc Rinzwind
Andrew Lowther avatar
drapel jp
„Sfatul 1” de la https://crontab.guru/tips.html este foarte interesant. Poate doriți să îl includeți în răspunsul dvs. pentru a susține afirmația „pagina de manual este, de asemenea, greșită”.
drapel cn
@AndrewLowther da, m-am gândit la asta la început și am decis să nu o fac, dar ai dreptate, așa că a adăugat :+
elmclose avatar
drapel cn
Este necesară bara oblică inversă în [ "$(date '+\%u')" = "3" ]?
drapel cn
da, vezi `man 5 crontab` "Semne de procente (%) din comandă, cu excepția cazului în care se scapă cu bară oblică inversă (\), vor fi schimbate în caractere newline și toate datele după primul % va fi trimis la comandă ca intrare standard."

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.