[RISOLTO] Esecuzione automatica script all'avvio con BUSTER

Bash, Perl, Python, Ruby, ...
Rispondi
giocupo
Jr. Member
Jr. Member
Messaggi: 58
Iscritto il: 06/01/2019, 17:58

[RISOLTO] Esecuzione automatica script all'avvio con BUSTER

Messaggio da giocupo »

Salve
Premetto che uso la versione raspbian Buster. Sono a digiuno (o quasi) sia di script che dell'uso di Systemctl.
Ho provato ad avviare un programma python e uno script con crontab o in rc.local che nelle precedenti versioni di debian stretch funzionavano perfettamente con Buster nulla funziona come prima.

Mi sono adeguato su Buster ad usare systemctl nel seguente modo:
A) salvo lo script pro_00.sh su /etc/init.d

Codice: Seleziona tutto

#!/bin/bash
### BEGIN INIT INFO
# Provides:          pro_00.sh
### END INIT INFO

case "$1" in
start)  echo "INIZIO"
        sleep 25
        echo "parte Temp_01.py"
        sudo python3 /home/pi/TEMP/Temp_01.py &
        sleep 25
        echo "parte invssh.sh"
        cd /home/pi/Documents
        ./invssh.sh 
        sleep 20
        ;;
stop)   echo "Non ancora implementato"
        ;;
restart) echo "Non ancora implementato"
        ;;
reload|force-reload) echo "Non ancora implementato"
        ;;
*)        echo "Usage: /etc/init.d/mio_start_script.sh {start|stop|restart|reload|force-reload}"
        exit 2
        ;;
esac
exit 0
B) rendo lo script eseguibile
C) Abilito con i comandi:
# cd /etc/init.d/
# systemctl enable pro_00.sh
(dubbio? perché lo esegua al boot faccio)
#update-rc.d pro_00.sh defaults
mi invia un messaggio di errore dicendo che Non è run-level ?

D) se faccio reboot e poi ps aux i 2 programmi (il python) e lo script invssh.sh NON SONO ATTIVI.
E) se invece avvio con il comando
$ /etc/init.d/pro_00.sh start
Tutto funziona correttamente e ps aux mi mostra i programmi attivati:

Vorrei che partisse al boot in automatico.
Dove sbaglio grazie per l'attenzione
Ultima modifica di giocupo il 19/09/2019, 18:19, modificato 1 volta in totale.
Avatar utente
mark
Hero Member
Hero Member
Messaggi: 871
Iscritto il: 10/01/2007, 16:53

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggio da mark »

con SystemD le cose sono cambiate, questa guida dovrebbe funzionare (non l'ho testata personalmente)

How to add rc.local in Debian 9
Aki
Hero Member
Hero Member
Messaggi: 9970
Iscritto il: 27/12/2007, 16:59

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggio da Aki »

Vedi https://manpages.debian.org/buster/syst ... .8.en.html. È probabile che hai popolato in modo errato /etc/rc.local oppure lo script non è avviabile (errati privilegi/permessi) o non è avviabile da systemd. Prova a verificare questi punti inviando l’output dei comandi con cui hai effettuato le verifiche. Magari sarebbe utile che ci inviassi lo script che intendi avviare al boot.
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Debian - The universal operating system
⢿⡄⠘⠷⠚⠋⠀ https://www.debian.org
⠈⠳⣄⠀
giocupo
Jr. Member
Jr. Member
Messaggi: 58
Iscritto il: 06/01/2019, 17:58

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggio da giocupo »

Grazie per le indicazioni.
Aki
Hero Member
Hero Member
Messaggi: 9970
Iscritto il: 27/12/2007, 16:59

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggio da Aki »

giocupo ha scritto:Grazie per le indicazioni.
Hai risolto ?
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Debian - The universal operating system
⢿⡄⠘⠷⠚⠋⠀ https://www.debian.org
⠈⠳⣄⠀
giocupo
Jr. Member
Jr. Member
Messaggi: 58
Iscritto il: 06/01/2019, 17:58

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggio da giocupo »

Non ho risolto.
Lo scrip che voglio avviare al boot è il seguente:

Codice: Seleziona tutto

#!/bin/bash
### BEGIN INIT INFO
# Provides:     pro_02.sh
# Required-Start:    hal
# Required-Stop:     
# Should-Start:      
# Should-Stop:       
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Ottimizzazioni Notebook
# Description: 
### END INIT INFO
case "$1" in
start)  echo "Start"
        sleep 20
        sudo python3 /home/pi/TEMP/Temp_01.py &
        sleep 35
        echo "FINE Start"
        echo "parte invssh.sh"
        cd /home/pi/Documents
        ./invssh.sh
        sleep 20
        echo "FINE invssh.sh"
        ;;
stop)   echo "Non ancora implementato"
        ;;
restart) echo "Non ancora implementato"
        ;;
reload|force-reload) echo "Non ancora implementato"
        ;;
*)      echo "Usage: /etc/init.d/mio_start_script.sh {start|stop|restart|reload|force-reloa$
        exit 2
        ;;
esac
exit 0

continuo a non capire perché se attivo lo script da command line:
$ /etc/init.d/pro_02.sh start
funziona correttamente
Se attivo lo script per il boot con
$ update-rc.d pro_02.sh defaults
e poi faccio reboot mi avvia ( a volte) parte degli scirpt mai tutti:
sto facendo prove inserendo sleep nn a caso.
cambiando i comandi degli script ecc.
con il comando sopra mi risponde:

Codice: Seleziona tutto

root@raspy:/etc/init.d# update-rc.d pro_02.sh defaults
insserv: FATAL: service hal has to be enabled to use service pro_02.sh
insserv: warning: script 'Temp_00.py' missing LSB tags
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `Temp_00.py'
insserv: Default-Stop  undefined, assuming empty stop  runlevel(s) for script `Temp_00.py'
grazie saprò dirvi
Aki
Hero Member
Hero Member
Messaggi: 9970
Iscritto il: 27/12/2007, 16:59

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggio da Aki »

giocupo ha scritto: continuo a non capire perché se attivo lo script da command line:

Codice: Seleziona tutto

$ /etc/init.d/pro_02.sh start
funziona correttamente
Se attivo lo script per il boot con

Codice: Seleziona tutto

$ update-rc.d pro_02.sh defaults
e poi faccio reboot mi avvia ( a volte) parte degli scirpt mai tutti:
Magari se ci fornisci indicazioni di quali script partono e quali no, ed un log relativo all'avvio del computer, ti si potrebbe aiutare in modo mirato piuttosto che provare ad indovinare. In ogni caso, dal momento che non hai usato la configurazione standard prevista da systemd per indicare le dipendenze tra servizi, è possibile che alcuni tuoi script falliscano perché non si sono ancora avviati, nella sequenza di avvio del PC, alcuni servizi indispensabili al corretto funzionamento dei tuoi script (che ipotizzo servano ad attivare un tunnel ssh in modalità reverse-ssh).
giocupo ha scritto:sto facendo prove inserendo sleep nn a caso.
cambiando i comandi degli script ecc.
con il comando sopra mi risponde:

Codice: Seleziona tutto

root@raspy:/etc/init.d# update-rc.d pro_02.sh defaults
insserv: FATAL: service hal has to be enabled to use service pro_02.sh
Questo perché hai indicato nel file "/etc/init.d/pro_02.sh start" che esso sia avviato dopo l'avvio del servizio "hal", ma, quasi sicuramente, il servizio "hal" non esiste sul tuo sistema operativo.
giocupo ha scritto:

Codice: Seleziona tutto

insserv: warning: script 'Temp_00.py' missing LSB tags
Mi sembra chiaro: lo script 'Temp_00.py' : è un messaggio di avviso con cui sei informato che esso non è un "init script" conforme alle specifiche LSB
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Debian - The universal operating system
⢿⡄⠘⠷⠚⠋⠀ https://www.debian.org
⠈⠳⣄⠀
giocupo
Jr. Member
Jr. Member
Messaggi: 58
Iscritto il: 06/01/2019, 17:58

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggio da giocupo »

Ripropongo il problema scripting:

Ho abbandonato l'avvio di scripting con systemd TEMPORANEAMENTE.

Il quesito riguarda Crontab su Raspberry OS BUSTER

Su un primo raspberry apro crontab con
$sudo crontab -u root -e
inserisco il comando di avvio al boot (il python esige l'esecuzione come root)
@reboot python3 /home/pi/TER/MQTT_Banana_Server_PY/LAV_00.py > /dev/null
Tutto OK
il file cron.log contiene

Codice: Seleziona tutto

Sep 12 10:57:04 banana cron[603]: (CRON) INFO (pidfile fd = 3)
Sep 12 10:57:04 banana cron[603]: (CRON) INFO (Running @reboot jobs)
Sep 12 10:57:07 banana CRON[663]: (root) CMD ([842] /usr/lib/armbian/armbian-apt-updates)
Sep 12 10:57:07 banana CRON[664]: (root) CMD ([843] python3 /home/pi/TER/MQTT_Banana_Server_PY/LAV_00.py )
Sep 12 10:57:21 banana CRON[663]: (root) END ([842] /usr/lib/armbian/armbian-apt-updates)
Sep 12 11:00:01 banana CRON[1476]: (root) CMD ([1477] /usr/lib/armbian/armbian-truncate-logs)
Sep 12 11:00:01 banana CRON[1476]: (root) END ([1477] /usr/lib/armbian/armbian-truncate-logs)
Sep 12 11:05:01 banana CRON[1630]: (root) CMD ([1631] command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Sep 12 11:05:02 banana CRON[1630]: (root) END ([1631] command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Sep 12 11:05:15 banana crontab[1636]: (root) BEGIN EDIT (root)
Sep 12 11:06:02 banana crontab[1636]: (root) REPLACE (root)
Sul secondo raspberry apro crontab con
$sudo crontab -u pi -e
inserisco il comando di avvio al boot (il python NON esige l'esecuzione come root)
@reboot python3 /home/pi/TEMP/Rasp_00.py
Non parte e il file di log contiene:

Codice: Seleziona tutto

Sep 12 17:36:43 raspy cron[276]: (CRON) INFO (pidfile fd = 3)
Sep 12 17:36:43 raspy cron[276]: (CRON) INFO (Running @reboot jobs)
Sep 12 17:36:43 raspy CRON[295]: (pi) CMD ([339] python3 /home/pi/TEMP/Rasp_00.py)
Sep 12 17:36:49 raspy CRON[295]: (CRON) info (No MTA installed, discarding output)
Sep 12 17:36:49 raspy CRON[295]: (pi) END ([339] python3 /home/pi/TEMP/Rasp_00.py)
Sep 12 17:37:21 raspy systemd-timesyncd[218]: Synchronized to time server for the first time 212.45.144.88:123 (2.debian.pool.ntp.org).
il messaggio non mi aiuta.

Qualche indicazione Grazie
giocupo
Jr. Member
Jr. Member
Messaggi: 58
Iscritto il: 06/01/2019, 17:58

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggio da giocupo »

Ho risolto, con Crontab @reboot
Siccome gli script funzionano connettendosi alla rete, probabilmente al boot (con Buster) la connessione non esiste ancora e quindi non vengono avviati. (?)

E bastato per lo script in python mettere un ritardo di 10 sec.
e per lo script bash idem uno sleep 10! e tutto è OK.

Grazie per i diversi suggerimenti
Rispondi