• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
a non partire fare riesco da alcuni file etc local rc

[Problema] non riesco a fare partire alcuni file da /etc/rc.local
#1
salve a tutti.

ho necessità di fare partire 3 file all'avvio di Raspbian.
A questo scopo ho editato con il comando

Codice:
sudo nano /etc/rc.local

ho scritto subito prima dell'ultima riga (exit)

i tre file da eseguire:


Codice:
sudo python /mnt/usbhd/DS18B20ThingSpeak.py
sudo python /home/pi/Adafruit_Python_DHT/examples/ThingSpeakTempDHT.py 22 26
sudo python /home/pi/Adafruit_Python_DHT/examples/ThingSpeakRHDHT.py 22 26


Ho salvato e riavviato.

Al riavvio solo il primo file viene eseguitogli altri 2 no.

Se scrivo su terminale
Codice:
sudo python /home/pi/Adafruit_Python_DHT/examples/ThingSpeakTempDHT.py 22 26


Codice:
sudo python /home/pi/Adafruit_Python_DHT/examples/ThingSpeakRHDHT.py 22 26

i file vengono eseguiti correttamente.

come mai succede questo?

Come faccio a risolvere il problema?

Grazie

LaPa
With a little/big help from my friends Rolleyes
Risposta
#2
perchè gli altri 2 non sono un comando
ma un comando più due numeri (22 e 26) cosa sono quei numeri?
Risposta
#3
(05/02/2017, 00:26)Zzed Ha scritto: perchè gli altri 2 non sono un comando
ma un comando più due numeri (22 e 26) cosa sono quei numeri?

I 2 numeri sono gli argomenti del file ed indicano rispettivamente il modello di sensore DHT e il pin del GPIO ingresso dati rilevati dal sensore. Deve essere scritto così perché nello script di python che ho va a leggere quei due numeri (se non ho capito male si chiamano argomenti).

Però io penso che il problema sia un altro:

tutti e tre i file che voglio lanciare contengono un cosiddetto infinite loop quindi si avviano e restano in esecuzione ogni tot minuti eseguono qualcosa.  Mi spiego meglio se il primo comando invece di metterlo in   /etc/rc.local  lo scrivo il su terminale

Codice:
sudo python /mnt/usbhd/DS18B20ThingSpeak.py

Il terminale esegue il file che resta in esecuzione e non ritorna la promt, a meno che non termino l'esecuzione del file di python, cosa che non voglio.

Per poter lanciare il secondo file dunque, devo aprire un altro terminale e dargli il comando per lanciare il secondo file:

Codice:
sudo python /home/pi/Adafruit_Python_DHT/examples/ThingSpeakTempDHT.py 22 26

e così per il terzo.

Quindi penso che se scrivo i tre comandi così come li ho scritti su  /etc/rc.local in sequenza vengano interpretati come da scrivere in sequenza su un unico terminale e invece in quella maniera non funziona.


1) C'è un comando da scrivere su  /etc/rc.local che fa aprire un nuovo terminale per scrivere dentro il comando per fare aprire il file successivo?

2) Vi viene in mente qualche soluzione?

3) Secondo voi potrei risolvere se li metto in crontab con la stringa che precede il comando di lancio dei file @reboot?

Come sempre vi ringrazio infinitamente

LaPa
With a little/big help from my friends Rolleyes
Risposta
#4
Ad ogni comando, alla fine della riga e separato da uno spazio, metti il carattere &
Serve per mettere in background un processo lanciato e passare al prossimo, nel tuo caso.

altra cosa: leva il "sudo"
quello che trova in quel file lo esegue direttamente da root, non c'è necessità di dargli il comando SuperUserDO...



Coltiva linux, che windows si pianta da solo! (cit.)
Risposta
#5
Oltre ai consigli del Grande Painbrain, permettimi una considerazione.
Si intuisce che hai scaricato la libreria Adafruit per i DHT.
Loro, di solito, hanno delle librerie ben fatte e corredate de esempi molto utili, Gli esempi contenuti nella cartella omonima hanno lo scopo di facilitare la comprensione e l'uso della stessa. Non nascono per la produzione,
Usare gli esempi per i propri progetti è "brutto", ma molto "brutto" (e non dà nessuna soddisfazione).
Certo, approfondire un linguaggio implica un inizio noioso ed improduttivo (non sempre vero, dipende dal manuale), ma alla fine paga sia in termini di soddisfazione che produttività.

Mandi

Barbezuan
Risposta
#6
(05/02/2017, 16:29)barbezuan Ha scritto: Oltre ai consigli del Grande Painbrain, permettimi una considerazione.
Si intuisce che hai scaricato la libreria Adafruit per i DHT.
Loro, di solito, hanno delle librerie ben fatte e corredate de esempi molto utili, Gli esempi contenuti nella cartella omonima hanno lo scopo di facilitare la comprensione e l'uso della stessa. Non nascono per la produzione,
Usare gli esempi per i propri progetti è "brutto", ma molto "brutto" (e non dà nessuna soddisfazione).
Certo, approfondire un linguaggio implica un inizio noioso ed improduttivo (non sempre vero, dipende dal manuale), ma alla fine paga sia in termini di soddisfazione che produttività.

Sì lo so, hai ragione.
Potresti consigliarmi il manuale che implichi l'inizio meno noioso di tutti?

Tuttavia non è la mancanza di volontà che m'impedisce di approfondire Python ma la mancanza di tempo. Dedico a questo progetto veramente dei piccoli ritagli di tempo, e cerco sempre, sbagliando, delle scorciatoie. In genere prendo gli script, cerco d'intuirli, e vado ad apportare dei piccoli tagli o modifiche provo fino a che non mi dà più errore o fino a quando ottengo gli obiettivi che mi sono prefisso. Alcune volte non riesco a raggiungere il risultato soddisfacente.

Non so come si chiama questo operare da ignorantoni forse programmazione per approssimazioni successive o "a tentativi"

Saluti

LaPa
With a little/big help from my friends Rolleyes
Risposta
#7
gli inglesi lo chiamano "sbaglia e riprova" o qualcosa del genere.
Comunque, sula manuale dall' inizio meno noioso, mi permetto di suggerire la lettura di questo articolo sui migliori libri per python.
Risposta
#8
Io ho lo stesso problema, ma al posto degli script+parametri che lanciava l'utente LaPa, ho due script in python che provo ad inserire sia in /etc/rc.local che con crontab, anche invertendone l'ordine di lancio uno dei due non parte.
Se invece lo lancio manualmente non ha nessun problema.
L'unica cosa che ho notato è che lo script che non parte è lo stesso dell'utente di cui sopra e cioè ho uno script che carica la lib Adafruit_DHT e leggendo un sensore DHT22 mi manda i dati letti tramite protocollo MQTT.
Non è che questa lib ha dei problemi ? Come hai risolto ?
Sono due giorni che sto impazzendo.
Risposta
#9
prestate attenzione. rc.local e crontab li eseugue ROOT, non voi. In più dentro la cartella /root.
motivo per cui la prova di lanciarlo col vostro utente nella vostra home non vale come confronto.

assicuratevi di indicare sempre tutte le path di file e cartelle, se potete provate direttaemente loggati come root e dentro la sua cartellina, /root, spostandoci i file dentro.



Coltiva linux, che windows si pianta da solo! (cit.)
Risposta
#10
ho sempre messo il path in assoluto e lanciato lo script con sudo, quindi dovrei essere root
faccio la prova a spostare i file ma non credo sia questo il problema
Risposta
  


Vai al forum:


Navigazione: 5 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect