Ho scritto uno script Perl che fungerà da demone, quindi mi piacerebbe lasciare che il sistema operativo (nel mio caso, Ubuntu Linux) esegua automaticamente il mio script Perl dopo che è stato avviato.
Come lo posso fare?
Ho scritto uno script Perl che fungerà da demone, quindi mi piacerebbe lasciare che il sistema operativo (nel mio caso, Ubuntu Linux) esegua automaticamente il mio script Perl dopo che è stato avviato.
Come lo posso fare?
Risposte:
Crea un wrapper di shell shell per il tuo script perl
#!/bin/sh - script.sh
# your perl program goes here
/bin/perl /path/to/foobar.pl
Assicurati di aver dato il permesso eseguibile usando
chmod +x script.sh
ed eseguire quanto segue,
sudo update-rc.d script.sh defaults
Questo eseguirà script perl ad ogni avvio.
Le cose sono cambiate un po 'negli ultimi 7 anni. In Ubuntu 16.04, il percorso verso perl è diverso. Inoltre, è necessario fornire un mucchio di informazioni di configurazione nel tuo script /etc/init.d/foobar.sh:
#!/bin/sh foobar.sh
### BEGIN INIT INFO
# Provides: foobar
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: forbarsvr
# Description: foobar daemon for widget serving
### END INIT INFO
sudo -u foobarusr perl /path/to/foobar.pl &
Questa forma di richiamo perl consente di eseguire come utente (dando un dominio di sicurezza vincolato) piuttosto che root; per eseguire come root, rimuovere il -u foobarusr. Se stai eseguendo come utente non root, assicurati che l'utente abbia le autorizzazioni su tutte le risorse richieste, come lo stesso script perl.
Il finale & spara il tuo script perl come un compito in corso (fino alla fine); simile a un deamon se non termina per qualsiasi motivo.
Rendi il tuo programma di lancio di foobar:
sudo chmod +x /etc/init.d/foobar.sh
Aggiungi il tuo script nella sequenza di avvio:
sudo update-rc.d foobar.sh defaults
Nota che non esiste alcun percorso per lo script.