Puncte:1

Lucrarea Crontab funcționează o singură dată

drapel fi

Am creat 60 crontab locuri de muncă de rulat piton script fiecare al doilea iar scripturile Python a fost doar un test și conține doar următoarele:

notificare de import2
de la datetime import datetime

notify2.init('')

n = notify2.Notification('test', datetime.now().strftime('%I:%M:%S'))
n.set_timeout(1000)
n.show()

iar jobul crontab este:

* * * * * DISPLAY=':0' XAUTHORITY='/run/user/1000/gdm/Xauthority' python3 /path/to/my/script.py
* * * * * ( sleep 1 && DISPLAY=':0' XAUTHORITY='/run/user/1000/gdm/Xauthority' python3 /path/to/my/script.py)
* * * * * ( sleep 2 && DISPLAY=':0' XAUTHORITY='/run/user/1000/gdm/Xauthority' python3 /path/to/my/script.py)
.
.
.
.
.

prima dată așteaptă 1 minut și începe să le ruleze, dar nu toate vor fi executate și nu s-au mai executat niciodată.

Adaug un job crontab pentru a testa dacă va funcționa (* * * * * env > /home/hadi/Desktop/env.output) si a functionat bine. Iată conținutul fișierului de ieșire:

POWERSHELL_TELEMETRY_OPTOUT=1
DOTNET_CLI_TELEMETRY_OPTOUT=1
HOME=/acasă/hadi
COMMAND_NOT_FOUND_INSTALL_PROMPT=1
LOGNAME=hadi
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
JAVA_HOME=/usr/lib/jvm/jdk-15.0.2
PWD=/acasă/hadi

Deci, cred că problema este cu notificarea, cum să rezolvi asta?

și încă ceva, DISPLAY=':0' uneori ar trebui să-l setez 1 nu 0 Nu știu de ce

drapel za
Nu ar trebui să rulezi 60 de cronjob-uri. Dacă nu o puteți face în Python, porniți un script, care pornește cele 60 de joburi (prin o buclă, de exemplu).Mai bine: nu-l porniți cu cron, ci xinitrc, mențineți-l să ruleze și întrerupeți-l timp de 1 secunde și reporniți lucrarea în caz de eșec.
HaDi AyOuB avatar
drapel fi
ce inseamna asta? @utilizator necunoscut
HaDi AyOuB avatar
drapel fi
Vreau ca același script să fie executat în fiecare secundă. Dacă am folosit o buclă, execuția va bloca bucla până când execuția jobului curent se va termina
drapel za
Nu, puteți porni comanda de bază în fundal.
HaDi AyOuB avatar
drapel fi
Ok, cum se face asta? poti explica mai multe te rog?
Puncte:1
drapel za

Cu un postfix &, puteți începe scriptul dvs. python în fundal. Chiar dacă o instanță este blocată și se blochează pentru totdeauna sau se termină într-o mică fracțiune de secundă, următoarea lucrare va începe o secundă mai târziu.

#!/bin/bash

în timp ce adevărat 
do
  somn 1
  python3 /path/to/my/script.py &
Terminat 

Cron nu este potrivit pentru granulare în timp mai fină decât minut. Temporizatoarele Systemd sunt utilizabile pentru o granulare mai fină, dar dacă nu doriți să restricționați deloc timpul, lucrarea ar trebui pur și simplu pornită atunci când este cazul în procesul de pornire.

Deoarece codul dvs. folosește DISPLAY=:0, ar putea fi pornit ca unitate de sistem, în funcție de graphical.target, pentru a evita apelarea acestuia, înainte ca sistemul grafic să fie pornit.

Scriptul de buclă ar putea acumula cantități mai mari de discrepanțe de timp în timp și de 3597 de ori pe oră în loc de 3600, dar poate că „aproximativ o dată pe secundă” este suficient de bun. Dacă nu, trebuie să măsurați singur timpul și să vă corectați.

O bună introducere în systemd este disponibilă pe YT, de exemplu.

HaDi AyOuB avatar
drapel fi
dacă mi-am executat scriptul python3 într-o buclă și acest script folosește modulul `request`, atunci bucla va fi blocată până când scripturile sunt terminate. Vreau să execut același script exact în fiecare secundă., este posibil?
drapel za
Nu cunosc Python, așa că nu cunosc modulul de solicitare și nu știu cum să-l testez. IMHO, dacă python-ul este pornit ca un fir, nu ar trebui să poată bloca ceva, indiferent de ce și bucla ar trebui să continue. Puteți oferi un script python minimalist pentru a apela în buclă, pentru a vă dovedi punctul de vedere?

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.