PDA

View Full Version : Eseguire uno script in Bash come servizio


borexino
25-09-2007, 19:54
Ciao a tutti!:)

Ho la necessità di eseguire uno script in bash come servizio per poterlo riavviare e fermare a mio piacimento!
c'è qualche soluzione in merito?
:muro:

grazie a tutti!

Psycotic
26-09-2007, 09:20
non l'hai scritto tu lo script in bash vero?

Dovresti implementargli lo start e stop all'interno dello script.. Oppure creare un nuovo script che faccia questo lavoro.

Ma dovresti dare piu' dettagli.. tipo come fai partire adesso lo script e come lo fermi adesso.

jventure
26-09-2007, 09:38
i demoni normalmente sono script bash che interpretano i parametri start|stop|restart
e attraverso uno case esac istruiscono start-stop-daemon per avviare il programma vero e proprio a seconda della configurazione.

ora non so cosa faccia il tuo script ma normalmente per terminare un programma è necessario conoscere il suo pid.
un possibile init potrebbe essere questo:

#!/bin/sh

# init script per MIOSCRIPT
# creato in data 26 settembre 2007

# configurazione

# script da avviare
SCRIPT="/usr/share/mioscript/script.sh"
# descrizione dello script
DESC="descrizione di mioscript.sh"

# log dello script
LOGDIR="/var/log/mioscript"
ERRORLOG="script-error.log"
LOG="script.log"

# pidfile
PIDFILE = "/var/run/script.pid"

# parametri script
SCRIPTOPTION="parametri da passare allo script"

# parametri demone
# - USER = utente proprietario che avvia lo script
# - GROUP = gruppo proprietario che avvia los cript
USER="utente"
GROUP="group"
DAEMONOPTION="--chuid $USER:$GROUP --group $GROUP --umask 0022 \
--nicelevel 0 --user $USER"

# controllo che lo script esista
test -e $SCRIPT || exit 0

# controllo che esista la directory di log
if [ ! -d $LOGDIR ]; then
mkdir -m 755 $LOGDIR
fi


case "$1" in
start)
echo -n "Starting $DESC "

start-stop-daemon --start $DAEMONOPTION --exec $SCRIPT --pidfile \
$PIDFILE --make-pidfile --background -- $SCRIPTOPTION \
> $LOGDIR/LOG 2> $LOGDIR/$ERRORLOG

echo "."
;;

stop)
echo -n "Stopping $DESC"
start-stop-daemon --stop --oknodo --pidfile $PIDFILE
echo "."
;;

restart)
$0 stop
$0 start
;;

*)
echo "Usa: $0 {start|stop|restart}" >&2
exit 1
;;
esac

exit 0



modifica a tuo piacimento :)
questo lo crei in /etc/init.d poi crei un link al runlevel per caricarlo all'avvio:

ln -s /etc/init.d/startscript.sh /etc/rc2.d/S99startscript

borexino
26-09-2007, 11:23
i demoni normalmente sono script bash che interpretano i parametri start|stop|restart
e attraverso uno case esac istruiscono start-stop-daemon per avviare il programma vero e proprio a seconda della configurazione.

ora non so cosa faccia il tuo script ma normalmente per terminare un programma è necessario conoscere il suo pid.
un possibile init potrebbe essere questo:

#!/bin/sh

cut cut




modifica a tuo piacimento :)
questo lo crei in /etc/init.d poi crei un link al runlevel per caricarlo all'avvio:

ln -s /etc/init.d/startscript.sh /etc/rc2.d/S99startscript


Grazie mille :sofico:
proverò a breve...!

borexino
28-09-2007, 18:19
borexino@machine:~$ sudo /etc/init.d/start_application.sh start
/etc/init.d/start_application.sh: 18: PIDFILE: not found
Starting APPLICATION .
borexino@machine:~$
borexino@machine:~$

purtroppo mi da questo errore! :doh:

e mo?