Script Da Eseguire all'avvio kill pid + spawn processo

Bash, Perl, Python, Ruby, ...

Script Da Eseguire all'avvio kill pid + spawn processo

Messaggioda wifino » 14/04/2017, 10:58

Ciao a tutti dopo svariate ricerche su questo forum e su internet sono giunto ad un punto morto.
Dovrei realizzare uno script che ad ogni reboot/avvio esegua questi due comandi:

ps aux | grep dnsdist | awk '{print $2}' | xargs kill
dnsdist --local=ip:porta --daemon

Questi comandi sono stati ovviamente testati, lanciandoli da console subito dopo l'avvio fanno il loro dovere.
(ip:porta sono ovviamente sotituiti da ip e porta giusti).

Per ora ho scritto questo script:
Codice: Seleziona tutto
#!/bin/sh
#
### BEGIN INIT INFO
# Provides:          spawnadnsdistcorrettamente
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.  This example start a
#                    single forking daemon capable of writing a pid
#                    file.  To get other behavoirs, implemend
#                    do_start(), do_stop() or other functions to
#                    override the defaults in /lib/init/init-d-script.
### END INIT INFO

# Author: Niccolo
#

do_start()
{
ps aux | grep dnsdist | awk '{print $2}' | xargs kill
dnsdist --local=mioip:porta --daemon
}


Ma purtroppo non fa il suo dovere.
Sono abbastanza sicuro che sbaglio i parametri passati a INIT, sapreste indicarmi quelli corretti?
Grazie in anticipo :)
wifino
Newbie
Newbie
 
Messaggi: 1
Iscritto il: 14/04/2017, 10:32

Re: Script Da Eseguire all'avvio kill pid + spawn processo

Messaggioda s3v » 14/04/2017, 14:47

Benvenuto.

Se usi systemd:
1) Ti crei uno script (chiamato ad esempio "nome.sh"):
Codice: Seleziona tutto
#!/bin/sh
ps aux | grep dnsdist | awk '{print $2}' | xargs kill
dnsdist --local=mioip:porta --daemon

e gli assegni i permessi di esecuzione:
Codice: Seleziona tutto
# chmod a+x nome.sh

2)
Crei una unit chiamandola ad esempio "nome.service":
Codice: Seleziona tutto
[Unit]
Description=blahblahblah
 
[Service]
ExecStart=/percorso/dello/script/nome.sh
 
[Install]
WantedBy=default.target

Quindi le assegni i permessi di esecuzione e la sposti in "/etc/systemd/system":
Codice: Seleziona tutto
# chmod a+x nome.service
# cp nome.service /etc/systemd/system

3)
Controlli se funziona:
Codice: Seleziona tutto
# systemctl start nome.service

e poi la abiliti:
Codice: Seleziona tutto
# systemctl enable nome.service


Nota che la unit è davvero essenziale e non presuppone che sia stato avviato alcun altro servizio per essere avviata. In altre parole, il comando "dnsdist --local=mioip:porta --daemon" potrebbe fallire se non è stato avviato prima qualche altro servizio (ad esempio proprio "dnsdist").
Siccome dnsdist non c'è in Debian, non ho idea se esista un dnsdist.service.
Avatar utente
s3v
Global Moderator
Global Moderator
 
Messaggi: 5449
Iscritto il: 31/12/2008, 11:54

Re: Script Da Eseguire all'avvio kill pid + spawn processo

Messaggioda Ombra » 16/04/2017, 10:04

Tutto giusto quello che dice s3v, aggiungo solo, puramente ad uso e consumo degli highlander che ancora usano sysv come init, che lo script proposto da wifino manca di parti essenziali ed è normale che se eseguito da sysv non faccia niente.
Manca completamente la parte in cui si definisce cosa fanno el azioni start e stop (sono il minimo sindacale, volendo ci sarebbero anche restart reload etc).
Allo script andrebbe quindi aggiunta una parte tipo questa ( non ho testato, è giusto un esempio)
Codice: Seleziona tutto
case "$1" in
  start)
    echo -n "Starting myscript: "
    do_start
    echo "Ok"
    ;;
  stop)
    echo -n "Stopping myscript: nothing to do here "
    ;;
esac

exit 0


Ovviamnte poi lo sript va messo in /etc/init.d/ , reso eseguibile e poi inserito nei vari runlevel con update.rc.d.
Maggiori dettagli si trovano nella guida (tratta sia sysv che systemd)
Ombra
wiki member
wiki member
 
Messaggi: 467
Iscritto il: 11/08/2007, 18:06
Località: Bologna


Torna a Scripting

Chi c’è in linea

Visitano il forum: Yahoo [Bot] e 1 ospite