Come posso eseguire automaticamente uno script Perl dopo l'avvio di un server Ubuntu?


3

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:


3

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.


0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.