Puncte:0

Crontab nu rulează scriptul python. Am încercat mai multe remedieri

drapel ve

Bună tuturor și vă mulțumesc pentru lectura, voi discuta mai jos.

Am un script python simplu care imprimă un fapt aleatoriu din reddit în terminal, testez apele terminalului în timp ce învăț python.

Am încercat să-mi schimb permisiunile pentru a accesa directorul /usr/bin/. Fara succes

Am generat un nou script reddit.py în directorul /usr/bin în timp ce am citit în altă parte că crontab rulează numai din directorul său principal și dacă ambele căi sunt date în fișierul crontab, acest lucru ar trebui să rezolve problema rulării acestuia. Din nou fără succes.

Mi-am dat permisiuni complete de citire, scriere și executare pe/în afară de „proc” și „sys”, care au fost refuzate.

Va rula dacă scriu calea în terminal și imprimă un fapt aleatoriu din TIL din reddit.

Nu va rula prin crontab orice alte informații pe care cineva le poate furniza vor fi foarte bine primite și, dacă puteți, vă rugăm să furnizați orice detaliu simplificat, deoarece tocmai am început cu asta și înțeleg lucrurile încet, dar sigur. Din nou multe mulțumesc. Voi furniza o copie a scenariului mai jos.

Rulez Debian 10 pe un chromebook AMD 64.

#! /usr/bin/env python
cereri de import
import json 
 
subreddit = „azi învățat”
număr = 1
interval de timp = „zi” #oră, zi, săptămână, lună, an, toate
listare = „aleatorie” # controversat, cel mai bun, fierbinte, nou, aleatoriu, în creștere, top
 
def get_reddit(subreddit,count):
    încerca:
        baza_url = f'https://www.reddit.com/r/{subreddit}/{listing}.json?count={count}&t={timeframe}'
        cerere = requests.get(base_url, headers = {'User-agent': 'yourbot'})
    cu exceptia:
        print('A apărut o eroare')
    return request.json()
 
top_post = get_reddit(subreddit,count)
 
if listing != 'aleatoriu':
    title = top_post['date']['children'][0]['data']['title']
    url = top_post['date']['children'][0]['data']['url']
altceva:
    title = top_post[0]['date']['children'][0]['data']['title']
    url = top_post[0]['date']['children'][0]['data']['url']
 
 
print(f'{titlu}\n{url}')

Fișier Crontab:

*/5 * * * * /usr/bin/python /usr/bin/reddit.py >dev/null 2>&1

Mulțumesc, am încercat să rezolv acest lucru de 12 ore bune și tot fără succes. Mă ajută totuși să mă simt confortabil cu mediul și cu comenzile! Așadar, căptușeală de argint =)

codlord avatar
drapel ru
Ar trebui să fie `/dev/null` dacă doriți să redirecționați ieșirea acolo. Dar de ce să nu redirecționați către un fișier jurnal și apoi fișierul jurnal va conține mesaje/erori de la comanda/scriptul dumneavoastră python. Dacă nu primiți mesaje/erori semnificative, adăugați-le în script-ul dvs., astfel încât să puteți vedea ce face și unde merge greșit.
drapel hr
*"tipărește un fapt aleatoriu din reddit în terminal"* cron nu știe despre niciun terminal care ar putea fi deschis, așa că orice rezultat va fi fie trimis prin poștă proprietarului crontab, fie aruncat.
Puncte:1
drapel in

Este o idee extrem de proastă să schimbați permisiunile pe / sau /usr/bin sau să plasați fișiere în acele directoare. Dacă intenționați să instalați un program local ca acesta la nivel de sistem, acesta ar trebui să intre în /usr/local/bin

De asemenea, nu este necesar să faceți acest lucru pentru a realiza ceea ce încercați, nu trebuie să fie într-un director de sistem pentru a rula din cron, în special cronul unui utilizator. Ar trebui să puteți plasa acest fișier în directorul dvs. de acasă și să îi oferiți calea completă, așa cum faceți deja în intrarea crontab.

În mod normal, cron vă trimite erori atunci când lucrurile eșuează. Cu toate acestea, este posibil să nu aveți e-mail instalat și oricum dezactivați orice eroare de înregistrare >dev/null 2>&1

Cel mai probabil dacă remediați aceste lucruri și capturați eroarea care împiedică rularea scriptului dvs., veți afla care este adevărata problemă. (Dacă nu vă puteți da seama de erori odată ce le primiți, adăugați-le la întrebarea dvs.)

Mentalist avatar
drapel ve
Vă mulțumesc pentru ajutor, acesta este foarte informativ, nu eram pe deplin conștient de faptul că >dev/null 2>&1 a dezactivat înregistrarea erorilor, l-am găsit ca parte a unei remedieri pentru problema crontab, făcea parte din #!/usr/ adăugare bin/env python.
Mentalist avatar
drapel ve
Îmi pare rău că sună ca un noob complet, jurnalele de erori - va trebui să instalez clientul de e-mail / să verific dacă acesta este instalat? Odată ce s-a făcut acest lucru, pot elimina acea linie din script și pot verifica e-mailul pentru jurnalul de erori din fișierul crontab. Este automat odată ce elimin codul din script și va trimite un fișier jurnal la adresa mea de e-mail odată ce îmi dau seama de toate asta afară? multumesc inca o data pentru ajutor este foarte apreciat.
Mentalist avatar
drapel ve
Am clarificat că am Mail instalat, au existat o serie de jurnale de eroare, dacă aveți o sarcină programată care rulează la fiecare 2 minute, așteptați-vă la un număr de e-mailuri haha, mulțumesc pentru asta, o voi parcurge de aici și voi reveni! Se pare că nu poate găsi python, așa că voi încerca câteva remedieri, mulțumesc din nou oameni buni!
user10489 avatar
drapel in
Succes și vânătoare fericită!

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.