Matt73
Posts: 6
Joined: Tue Feb 14, 2017 6:32 pm

SIntassi corretta per aggiungere più script a rc.local in retropie

Thu Apr 12, 2018 1:55 pm

Ciao a tutti ho un problema con rc.local
Avevo gia aggiunto uno script python che in effetti viene avviato senza problemi. Ora all0 script già integrato ho aggiunto altri tre comandi ma
adesso vengono avviati solo questi mentre il primo comando originario non viene più riconosciuto (music.py)
Allego il codice, non so come separare eventualmente mi vari script

Code: Select all

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
(sudo python /home/pi/PyScripts/music.py) &
fi
hciconfig hci0 up
hciconfig hci0 pscan
sudo hciconfig hci0 up piscan
exit 0

nicolap8
Posts: 232
Joined: Mon Mar 13, 2017 9:45 pm

Re: SIntassi corretta per aggiungere più script a rc.local in retropie

Thu Apr 12, 2018 9:32 pm

Matt73 wrote:
Thu Apr 12, 2018 1:55 pm
Ciao a tutti ho un problema con rc.local
Avevo gia aggiunto uno script python che in effetti viene avviato senza problemi. Ora all0 script già integrato ho aggiunto altri tre comandi ma
adesso vengono avviati solo questi mentre il primo comando originario non viene più riconosciuto (music.py)
Allego il codice, non so come separare eventualmente mi vari script

Code: Select all

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
(sudo python /home/pi/PyScripts/music.py) &
fi
hciconfig hci0 up
hciconfig hci0 pscan
sudo hciconfig hci0 up piscan
exit 0
1) se hai copiato giusto c'è un "fi" di troppo (il secondo)
2) forse serve un "sudo" anche per i primi due "hciconfig"
3) sei sicuro che servano le parentesi per lanciare il python? io farei senza!
N

Matt73
Posts: 6
Joined: Tue Feb 14, 2017 6:32 pm

Re: SIntassi corretta per aggiungere più script a rc.local in retropie

Thu Apr 12, 2018 11:32 pm

nicolap8 wrote:
Thu Apr 12, 2018 9:32 pm
Matt73 wrote:
Thu Apr 12, 2018 1:55 pm
Ciao a tutti ho un problema con rc.local
Avevo gia aggiunto uno script python che in effetti viene avviato senza problemi. Ora all0 script già integrato ho aggiunto altri tre comandi ma
adesso vengono avviati solo questi mentre il primo comando originario non viene più riconosciuto (music.py)
Allego il codice, non so come separare eventualmente mi vari script

Code: Select all

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
(sudo python /home/pi/PyScripts/music.py) &
fi
hciconfig hci0 up
hciconfig hci0 pscan
sudo hciconfig hci0 up piscan
exit 0
1) se hai copiato giusto c'è un "fi" di troppo (il secondo)
2) forse serve un "sudo" anche per i primi due "hciconfig"
3) sei sicuro che servano le parentesi per lanciare il python? io farei senza!
N
rc.local originariamente finiva così

Code: Select all

fi
(sudo python /home/pi/PyScripts/music.py) &
exit 0
e in effetti funzionava, visto che la musica partiva in background
io ho aggiunto

Code: Select all

hciconfig hci0 up
hciconfig hci0 pscan
sudo hciconfig hci0 up piscan
exit 0
Risultato finale i tre comandi aggiunti partono (ricerca e sincro bluetooth) mentre il music.py muto....

willy_pinguino
Posts: 592
Joined: Sun Jan 22, 2017 9:11 pm

Re: SIntassi corretta per aggiungere più script a rc.local in retropie

Fri Apr 13, 2018 6:00 pm

no mi spiace non hai aggiunto solo quelle 3 righe ma anche il

Code: Select all

fi
che le precede...

togli quello e tutto dovrebbe funzionare, in questo momento proprio la riga che ti interessa cioè

Code: Select all

(sudo python /home/pi/PyScripts/music.py) &
viene ignorata perchè è posta tra 2

Code: Select all

fi
e di norma viene considerato solo uno (l'ultimo) dall'interprete dello script.

potrebbe anche essere che tu debba portare la riga originale

Code: Select all

(sudo python /home/pi/PyScripts/music.py) &
come ultima prima dell'

Code: Select all

exit0
ma io prima proverei semplicemente a togliere il

Code: Select all

fi
della riga dopo la

Code: Select all

&

Matt73
Posts: 6
Joined: Tue Feb 14, 2017 6:32 pm

Re: SIntassi corretta per aggiungere più script a rc.local in retropie

Wed Apr 25, 2018 12:01 am

risolto così

Code: Select all

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
(sudo python /home/pi/PyScripts/music.py) &
(sudo hciconfig hci0 up) &
(sudo hciconfig hci0 pscan) &
(sudo hciconfig hci0 up piscan) &
exit 0

willy_pinguino
Posts: 592
Joined: Sun Jan 22, 2017 9:11 pm

Re: SIntassi corretta per aggiungere più script a rc.local in retropie

Mon Apr 30, 2018 7:53 am

hai provato anche senza parentesi e senza & nelle 4 linee finali? dovrebbe funzionare uguale.

l'& è un AND logico che servirebbe per legare più comandi sulla stessa linea ed in quel caso le parentesi servono per isolare i singoli comandi e renderli più leggibili
no è sbagliato come dice sotto nicolap8, stesso simbolo ma con usi diversi in contesti diversi.
NON E' un AND logico ma serve a concatenare invece che attendere la fine dell'esecuzione del comando precedente. Anche le parentesi hanno una funzione diversa. Gorosso errore mio di cui mi scuso.

resta il fatto che mettendo le 4 linee separate, senza & e senza parentesi non dovresti avere problemi, ma delle 3 linee che hai aggiunto alla fine ho un dubbio...


pscan e piscan fanno 2 cose diverse? o (come sospetto) pscan è scritto sbagliato e non fa nulla mentre la terza linea è solo una ripetizione (sommata) delle prime 2?

se è come sospetto, potrebbe bastare solo l'ultima delle 3 linee e le prime due si possono togliere
(che poi dovrebbe essere il motivo per cui le prime 2 all'inizio le avevi messe senza sudo e funzionava tutto comunque)
Last edited by willy_pinguino on Mon Apr 30, 2018 3:14 pm, edited 3 times in total.

nicolap8
Posts: 232
Joined: Mon Mar 13, 2017 9:45 pm

Re: SIntassi corretta per aggiungere più script a rc.local in retropie

Mon Apr 30, 2018 11:59 am

willy_pinguino wrote:
Mon Apr 30, 2018 7:53 am
hai provato anche senza parentesi e senza & nelle 4 linee finali? dovrebbe funzionare uguale.

l'& è un AND logico che servirebbe per legare più comandi sulla stessa linea ed in quel caso le parentesi servono per isolare i singoli comandi e renderli più leggibili, ma mettendo le 4 linee separate non dovresti avere problemi, ma delle 3 linee che hai aggiunto alla fine ho un dubbio...

pscan e piscan fanno 2 cose diverse? o (come sospetto) pscan è scritto sbagliato e non fa nulla mentre la terza linea è solo una ripetizione (sommata) delle prime 2?

se è come sospetto, potrebbe bastare solo l'ultima delle 3 linee e le prime due si possono togliere
(che poi dovrebbe essere il motivo per cui le prime 2 all'inizio le avevi messe senza sudo e funzionava tutto comunque)
No. Leggiti il manuale della bash!
Le parentesi hanno una funzione ben precisa (e qua non andavano usate).
La & usata in quel modo pure ha un significato diverso: fa lo spawn del processo cioè non attende che termini prima di continuare l'esecuzione dello script ma crea un nuovo processo che girerà indipendentemente.
Non conosco il comando pscan ma sembra un programma che effettua un settaggio e poi esce, diciamo "roba semplice e veloce" pertanto non dovrebbe essere né necessario né utile usare la sub-shell (con le parentesi) o fare lo spawn. Entrambi di sicuro no!!!
N

willy_pinguino
Posts: 592
Joined: Sun Jan 22, 2017 9:11 pm

Re: SIntassi corretta per aggiungere più script a rc.local in retropie

Mon Apr 30, 2018 3:16 pm

nicolap8 wrote:
Mon Apr 30, 2018 11:59 am
willy_pinguino wrote:
Mon Apr 30, 2018 7:53 am
hai provato anche senza parentesi e senza & nelle 4 linee finali? dovrebbe funzionare uguale.

l'& è un AND logico che servirebbe per legare più comandi sulla stessa linea ed in quel caso le parentesi servono per isolare i singoli comandi e renderli più leggibili, ma mettendo le 4 linee separate non dovresti avere problemi, ma delle 3 linee che hai aggiunto alla fine ho un dubbio...

pscan e piscan fanno 2 cose diverse? o (come sospetto) pscan è scritto sbagliato e non fa nulla mentre la terza linea è solo una ripetizione (sommata) delle prime 2?

se è come sospetto, potrebbe bastare solo l'ultima delle 3 linee e le prime due si possono togliere
(che poi dovrebbe essere il motivo per cui le prime 2 all'inizio le avevi messe senza sudo e funzionava tutto comunque)
No. Leggiti il manuale della bash!
Le parentesi hanno una funzione ben precisa (e qua non andavano usate).
La & usata in quel modo pure ha un significato diverso: fa lo spawn del processo cioè non attende che termini prima di continuare l'esecuzione dello script ma crea un nuovo processo che girerà indipendentemente.
Non conosco il comando pscan ma sembra un programma che effettua un settaggio e poi esce, diciamo "roba semplice e veloce" pertanto non dovrebbe essere né necessario né utile usare la sub-shell (con le parentesi) o fare lo spawn. Entrambi di sicuro no!!!
N
Grazie per avermi fatto notare l'errore, ho editato il post errato e ho corretto. se ritieni che siano necessarie altre correzioni non mancare di evidenziarlo ancora!

Return to “Italiano”

Who is online

Users browsing this forum: No registered users and 3 guests