Problema creazione servizio

5 risposte [Ultimo contenuto]
Ritratto di rdie77
rdie77
(Junior)
Offline
Junior
Iscritto: 18/12/2018
Messaggi: 12

Salve a tutti
ho un raspberry P3, con installato openhabian (Raspbian GNU/Linux 9 (stretch)).
Ho creato uno script in C ed un relativo servizio così impostato

#!/bin/sh
### BEGIN INIT INFO
# Provides:          startReadTemp
# Required-Start:    $network $remote_fs $syslog
# Required-Stop:     $network $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: startReadTemp
### END INIT INFO
 
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/var/www/script/script_c
[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions
 
do_start() {
  log_begin_msg "Start startReadTemp"
  /var/www/script/script_c/readTemp > /dev/null &
  log_end_msg $?
}
 
case "$1" in
    start)
 do_start
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        killall -9 testLog
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

Il problema è che quando fermo il servizio ricevo questo errore:

Dec 18 16:11:15 raspy systemd[1]: Stopping LSB: startReadTemp...
Dec 18 16:11:15 raspy startReadTemp[2698]: testLog: no process found
Dec 18 16:11:15 raspy systemd[1]: startReadTemp.service: Control process exited, code=exited status=1
Dec 18 16:11:15 raspy systemd[1]: Stopped LSB: startReadTemp.
Dec 18 16:11:15 raspy systemd[1]: startReadTemp.service: Unit entered failed state.
Dec 18 16:11:15 raspy systemd[1]: startReadTemp.service: Failed with result 'exit-code'.

Quale può essere il problema?

Ritratto di badroot
badroot
(Guru)
Offline
Guru
Iscritto: 22/08/2008
Messaggi: 2059

Citazione:

Dec 18 16:11:15 raspy startReadTemp[2698]: testLog: no process found

Per non saper ne leggere ne scrivere direi che è piuttosto chiaro ..... stai killando un processo che non è in esecuzione e quindi da errore.
Nella "start" indichi un eseguibile/script che si chiama "readTemp" quindi perchè poi vuoi stoppare un processo che si chiama "testLog" ?

Ritratto di rdie77
rdie77
(Junior)
Offline
Junior
Iscritto: 18/12/2018
Messaggi: 12

badroot ha scritto:

Citazione:

Dec 18 16:11:15 raspy startReadTemp[2698]: testLog: no process found

Per non saper ne leggere ne scrivere direi che è piuttosto chiaro ..... stai killando un processo che non è in esecuzione e quindi da errore.
Nella "start" indichi un eseguibile/script che si chiama "readTemp" quindi perchè poi vuoi stoppare un processo che si chiama "testLog" ?

Grazie mille Wink
errore di copia ed incolla. Messo il nome dello script corretto e funziona.

Ora però ho un piccolo problema. Quando avvio il mio raspberry, probabilmente quando lo script parte in avvio, mysql non è ancora del tutto disponibile, ed ho questo errore di accesso:
Dec 18 21:16:18 raspy startReadTemp[430]: Can't connect to MySQL server on '127.0.0.1' (111 "Connection refused")

Facendo stop e start del serviziom il problema di connessione si risolve.

Come posso ritardare lo start del servizio in avvio, anche per soli 5 secondi?

Grazie ancora

Ritratto di badroot
badroot
(Guru)
Offline
Guru
Iscritto: 22/08/2008
Messaggi: 2059

Non vorrei dire un'eresia ma dovrebbe bastare modificare lo script :

# Required-Start:    $network $remote_fs $syslog mysql

poi esegui

sudo insserv -d

in questo modo il tuo script si avvia solo se è avviato mysql.

Potresti anche considerare l'idea di rivedere lo script riscrivendolo per systemd ..... anche se sono dell'idea che squadra che vince non si cambia Big Grin

Ritratto di rdie77
rdie77
(Junior)
Offline
Junior
Iscritto: 18/12/2018
Messaggi: 12

badroot ha scritto:

Non vorrei dire un'eresia ma dovrebbe bastare modificare lo script :

# Required-Start:    $network $remote_fs $syslog mysql

poi esegui

sudo insserv -d

in questo modo il tuo script si avvia solo se è avviato mysql.

Potresti anche considerare l'idea di rivedere lo script riscrivendolo per systemd ..... anche se sono dell'idea che squadra che vince non si cambia Big Grin

infatti avevo creato il servizio con systemd...ma mi dava problemi.

Seguendo le tue modifiche da apportare, il seguente comando mi dice che non esiste

[22:35:14] root@raspy:/etc/init.d# sudo insserv -d
sudo: insserv: command not found

Ritratto di rdie77
rdie77
(Junior)
Offline
Junior
Iscritto: 18/12/2018
Messaggi: 12

risolto installando
 apt-get install insserv