Crontab task periodic.

#1
Posted 10 February 2022 - 17:55

Salutare, ma chiunui cu un task in crontab. E ceva foarte simplu dar nu reusesc sa ii dau de cap.
Ideea e ca am un HTTP server in docker si periodic pica E nevoie de restart ca sa mearga ,asa ca vreau sa automatizez acest restart de 2 ori pe zi. 0 0,12 * * * docker container restart prana Totul merge daca am un terminal deschis cu comanda crontab. Daca inchid teminalul sau daca dau restart la pc task-ul nu mai ruleaza. Daca ma uit la background tasks gasesc doar cron. crontab apare doar atata timp cat am terminalul deschis. Nu ar trebui totusi ca acest task sa ruleze fara ca ei sa am un terminal cu crontab deschis? Sistemul este Debian 11 |
#2
Posted 10 February 2022 - 18:04

Furnizeaza calea compeleta catre binarul docker-ului sau defineste variabila de mediu PATH in crontab unde specifici directoarele in care sa iti caute binarul care va fi rulat de crontab. Default cauta in directorul curent if I'm not mistaken. Vezi in log ce iti zice cron-ul cand incarca sa ruleze acel job.
|
#3
Posted 10 February 2022 - 18:05

lasa cronu, foloseste docker healthcheck
https://docs.docker....er/#healthcheck Edited by laffin, 10 February 2022 - 18:06. |
#4
Posted 10 February 2022 - 18:09

M-am uitat la healthcehck dar nu stiu daca ma ajuta, ca serverul nu pica doar ca nu mai trimite datele.
Cred ca se rupe conexiunea bluetooth cu dispozitivul si ala e motivul pentru care HA nu mai primeste date. Si mi se pare si mult mai complicat.. Eu am inceput sa folosesc Debian, de nevoie acum 1 luna deci sunt pe langa. Edited by andreyvsjoker, 10 February 2022 - 18:14. |
#5
Posted 10 February 2022 - 18:22

am un HTTP server in docker si periodic pica
serverul nu pica ok... trebuie sa faci debug ce se intampla cu serviciul crontab si cum ruleaza. sau mai interesant... rulezi cron intr-un container care are acces la docker.sock via volume mount si iti restartezi containerul cu serverul http din containerul cu cron ![]() Edited by laffin, 10 February 2022 - 18:22. |
#6
Posted 10 February 2022 - 18:27

Furnizeaza calea compeleta catre binarul docker-ului sau defineste variabila de mediu PATH in crontab unde specifici directoarele in care sa iti caute binarul care va fi rulat de crontab. Default cauta in directorul curent if I'm not mistaken. Vezi in log ce iti zice cron-ul cand incarca sa ruleze acel job. Acum cateva ore rula doar daca aveam crontab in terminal. I-am dar si un restart sistemului si inca merge. Asta e ca la doctor, cand mergi sa ceri ajutor nu mai doare. ![]() Oricum sunt eu pe langa dar mi se pare ca linux-ul asta atatea chestii ciudate are. Am facut ieri doua install-uri consecutive, la primul install bluetooth si XRDP nu mergeau sub nici o forma, am reinstalat si a 2-a oara totul mergea perfect. Ieri am dezactivat suspend si handle lid switch azi din senin erau din nou active. ...wtf? Edited by andreyvsjoker, 10 February 2022 - 18:36. |
#7
Posted 10 February 2022 - 18:36

sudo systemctl status cron
si cat /etc/crontab ce zice ? Ai o lista de exemple aici https://crontab.guru/examples.html Pune calea completa baga si user root pentru rulare. |
#8
Posted 10 February 2022 - 18:44

Asta zice la status, dar era active si cand nu mergea.
Cat erc/crontab nu zice nimic specific doar schema aia generica. Attached Files |
#9
Posted 10 February 2022 - 18:50

da-i un
sudo nano /etc/crontab baga ce ai tu acolo eventual si ceva de aici : SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # */15 * * * * root XXXXXXXXXXXXXXXXXXCMD la mine la 15 minute face chestia cu CMD ... + mai al altele. Asta nu-i important. Tu pune de inceput la un minut de test. Salveaza si da un restart la cron. sudo systemctl restart cron |
#10
Posted 10 February 2022 - 18:57

Din ce vad daca dau crontab -e nu imi deschide acelasi fisier.
Task-ul meu undeva intr-un folder temporar Attached Files |
#11
Posted 10 February 2022 - 18:59

Editeaza-l fara grija pe ala din /etc/crontab . Ar trebuie sa mearga.
|
|
#12
Posted 10 February 2022 - 19:07

Asa apare dupa restart la status, cu task-ul la 1 minut
Deci user-ul se pune inainte? Ar fi 0 0,12 * * * root docker container restart prana Attached FilesEdited by andreyvsjoker, 10 February 2022 - 19:08. |
#13
Posted 10 February 2022 - 19:20

Daca aia e ce iti trebuie : https://crontab.guru/#0_0,12_*_*_*
adica : “At minute 0 past hour 0 and 12.” as pune calea completa : 0 0,12 * * * root /usr/bin/docker container restart prana La https://crontab.guru/ poti pune valorile si iti spune cand ruleaza ![]() |
#14
Posted 10 February 2022 - 19:21

Ce cauta virgula aia acolo.
0 */12 * * * Asta e sintaxa corecta. |
#15
Posted 10 February 2022 - 19:28

Ce cauta virgula aia acolo. 0 */12 * * * Asta e sintaxa corecta.
Daca aia e ce iti trebuie : https://crontab.guru/#0_0,12_*_*_* adica : “At minute 0 past hour 0 and 12.”as pune calea completa : 0 0,12 * * * root /usr/bin/docker container restart pranaLa https://crontab.guru/ poti pune valorile si iti spune cand ruleaza ![]() Multumesc! Edited by andreyvsjoker, 10 February 2022 - 19:30. |
#16
Posted 10 February 2022 - 19:29

Este corecta :
![]() https://crontab.guru/examples.html Pentru lizibilitate as fi pus 2 linii 0 0 * * * 0 12 * * * Edited by wolfydRg, 10 February 2022 - 19:31. |
#17
Posted 10 February 2022 - 19:51

Virgula pui cand doresti sa ai un job care ruleaza doar in anumite momente, exemplu ora 1000 si ora 0200 sau 0630 si 2030 atunci pui 06,20 sau 10,02 la ora. Daca vrei un interval exemplu ora 1000, 1100, 1200 atunci folossti formatul 10-12 la ora:
%hours 15 20-23 * * fri root /usr/local/bin/update_custom_ipset.sh > /dev/null 2>&1Mai sus fara %hours in fata jobul ar rula in fiecare vineri la orele 2015, 2115, 2215 si 2315. In schimb cu %hours in fata ruleaza in fiecare vineri o singura data la una din orele anterioare (2015, 2115, 2215 sau 2315). Daca doream sa ruleze la 2015 si 2215 atunci jobul era: 15 20,22 * * fri root /usr/local/bin/update_custom_ipset.sh > /dev/null 2>&1 |
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users