[RISOLTO] Esecuzione automatica script all'avvio con BUSTER

Bash, Perl, Python, Ruby, ...

[RISOLTO] Esecuzione automatica script all'avvio con BUSTER

Messaggioda giocupo » 03/09/2019, 13:59

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.
giocupo
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 06/01/2019, 17:58

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggioda mark » 03/09/2019, 17:13

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

How to add rc.local in Debian 9
Avatar utente
mark
Hero Member
Hero Member
 
Messaggi: 728
Iscritto il: 10/01/2007, 16:53

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggioda Aki » 03/09/2019, 22:50

Vedi https://manpages.debian.org/buster/systemd/systemd-rc-local-generator.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.
Aki
Global Moderator
Global Moderator
 
Messaggi: 8663
Iscritto il: 27/12/2007, 16:59

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggioda giocupo » 05/09/2019, 10:32

Grazie per le indicazioni.
giocupo
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 06/01/2019, 17:58

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggioda Aki » 05/09/2019, 10:38

giocupo ha scritto:Grazie per le indicazioni.

Hai risolto ?
Aki
Global Moderator
Global Moderator
 
Messaggi: 8663
Iscritto il: 27/12/2007, 16:59

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggioda giocupo » 05/09/2019, 13:14

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
giocupo
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 06/01/2019, 17:58

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggioda Aki » 07/09/2019, 16:02

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
Aki
Global Moderator
Global Moderator
 
Messaggi: 8663
Iscritto il: 27/12/2007, 16:59

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggioda giocupo » 12/09/2019, 16:42

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
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 06/01/2019, 17:58

Re: Esecuzione automatica di script all'avvio debian BUSTER

Messaggioda giocupo » 19/09/2019, 18:18

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
giocupo
Newbie
Newbie
 
Messaggi: 37
Iscritto il: 06/01/2019, 17:58


Torna a Scripting

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron