Debian: Come eseguire uno script all'avvio senza dover scrivere 30 righe di script di shell?


20

Ho un server Debian e ho solo bisogno di eseguire uno script all'avvio.

Ho letto che: https://www.debian-administration.org/article/28/Making_scripts_run_at_boot_time_with_Debian

Ora ho: insserv: avvertimento: script 'tag LSB mancanti e sostituzioni

quindi sembra che devo aggiungere ora:

### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

Ora sembra folle: come 30 righe di script solo per eseguire un programma all'avvio.

Esiste uno strumento che consente di farlo in modo semplice?

Saluti


Che tipo di sceneggiatura è? Hai provato a eseguirlo da /etc/rc.local? È possibile inserire il percorso dello script nel file rc.local e verrà eseguito all'avvio.
Diamant,

un semplice script che avvia un processo di nodo, avvia un php ecc ...
yarek

Conto 9 righe, non 30. E sono commenti, non script di shell (e non script SSH).
wurtel,

Sono intestazioni LSB (vedi wiki.debian.org/LSBInitScripts ) e una piastra di script di script init LSB è a nord di 70 righe (vedi cose come github.com/fhd/init-script-template/blob/master/template ). Se vuoi che un singolo comando eseguito manualmente venga gestito all'avvio dal computer tramite alcuni file in / etc, sembra una cerimonia piuttosto elaborata!
kristopolous,

Risposte:


29

Se il tuo script è "solo uno script" e non avvia un demone, considera l'utilizzo di /etc/rc.local(eseguito come root) o crontab(eseguito come utente di tua scelta).

Due esempi:

  • /etc/rc.local

    #!/bin/sh -e
    #(Multiple lines of comments removed.)
    /usr/local/bin/your-script.sh
    exit 0
    
  • crontab(modificato tramite, ad esempio, crontab -e)

    #(Multiple lines of comments removed.)
    @reboot /usr/local/bin/your-script.sh
    

Modifica 1: basta leggere il tuo commento: se il tuo script avvia demoni, che dovrebbero essere eseguiti continuamente, sconsiglierei di usare rc.localo crontab, e invece di scrivere uno o più init.dscript corretti . In questo modo tu / il tuo sistema è in grado di riavviare / ricaricare / avviare / arrestare in modo pulito i demoni.

Modifica 2: lo chiami pazzo, ma LSB tagsfornisci un valore: "Documentando le dipendenze di runtime per gli script init.d, diventa possibile verificare l'ordine di avvio corrente, ordinare l'avvio utilizzando queste dipendenze ed eseguire gli script di avvio in parallelo per accelerare il processo di avvio. " Per maggiori dettagli, vai al wiki di Debian .

(A proposito: è un avvertimento, quindi in realtà dipende da te, come e cosa fare con questo.)


Mi piace la versione crontab .. ma non credo che @reboot funzioni su debian!
yarek,

@yarek: Funziona usando questo me stesso (per gli script, che sono solo script).
gf_11

2
funziona, ma penso che sia solo per l'utente root, quindi devi farlo@reboot root /usr/local/bin/your-script.sh
Froggiz

a proposito stavo parlando di debian!
Froggiz,

Sono ancora piuttosto confuso: cron consente di eseguire anyscript al riavvio del server, non aprendo le sessioni come root.
yarek,

0

supervisord è anche un'opzione. Scriverai di nuovo alcune righe per avviare il tuo node.js e roba PHP, ma saranno meno.


0

Puoi usare monitd per questo, basta scrivere qualche definizione di monit e avvierà demoni per te. Ma perché non usi il modo corretto con gli script LSB? Non è così difficile scriverlo (lo stai scrivendo solo una volta) ed è il modo più pulito e prezioso per raggiungere questo obiettivo.

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.