GNU/Linux >> Linux Esercitazione >  >> Linux

Lo script Init.d non viene eseguito all'avvio?

Il mio script non è in esecuzione all'avvio in una scatola vagante sotto Ubuntu.

Il mio script è simile a questo –

#!/bin/bash
# /etc/init.d/mailcatcher
### 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
mailcatcher --http-ip 192.168.50.10

Le mie autorizzazioni sul file sono simili a questa –

-rwxr-xr-x 1 root root 352 Apr 30 09:59 mailcatcher.sh

Eseguo il comando –

sudo update-rc.d "mailcatcher.sh" defaults

Se eseguo lo script manualmente, funziona e avvia mailcatcher. Se riavvio il computer, il demone mailcatcher non si avvia. Mi sono perso qualcosa?

Risposta accettata:

E ora le risposte di Ubuntu.

Questa è una domanda su Ubuntu Linux e ora è stata rilasciata la versione 15. Il mondo Ubuntu ora ha systemd. Ma anche prima della versione 15 il mondo di Ubuntu era parvenu. Non c'è davvero un motivo per scrivere System 5 rc script; e di certo non c'è una buona ragione per iniziare da lì.

Sia upstart che systemd eseguono tutti i "controlli di servizio". Tutto quello che devi fare è descrivere il servizio .

sistema di sistema

Un'unità di servizio systemd, da inserire in /etc/systemd/system/mailcatcher.service , è

[Unit]
Description=Ruby MailCatcher
Documentation=http://mailcatcher.me/

[Service]
# Ubuntu/Debian convention:
EnvironmentFile=-/etc/default/mailcatcher
Type=simple
ExecStart=/usr/bin/mailcatcher --foreground --http-ip 192.168.50.10

[Install]
WantedBy=multi-user.target

Questo ottiene automaticamente uno di tutti i controlli di sistema, come:

  • systemctl enable mailcatcher.service per impostare l'avvio automatico del servizio all'avvio.
  • systemctl preset mailcatcher.service per impostare l'avvio automatico del servizio all'avvio, se la politica locale lo consente.
  • systemctl start mailcatcher.service per avviare il servizio manualmente.
  • systemctl status mailcatcher.service per vedere lo stato del servizio.

partenza

Upstart è simile e la modifica del file di lavoro upstart di Fideloper LLC a questa domanda fornisce questo per /etc/init/mailcatcher.conf :

description "Mailcatcher"

start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec /usr/bin/mailcatcher --foreground --http-ip=192.168.50.10

Questo ottiene automaticamente uno di tutti i controlli upstart, come:

  • initctl start mailcatcher per avviare il servizio manualmente.
  • initctl status mailcatcher per vedere lo stato del servizio.

Sezione bonus demontools

Per i calci, per l'intrattenimento di tutte le persone che utilizzano la famiglia di daemontools che lo raggiungono tramite una ricerca sul WWW e per dimostrare un altro motivo per cui non iniziare da System 5 rc script, ho eseguito quell'unità di servizio systemd tramite convert-systemd-units del set di strumenti nosh comando per produrre il seguente script daemontools-family run:

#!/bin/nosh
#Run file generated from ./mailcatcher.service
#Ruby MailCatcher
chdir /
read-conf --oknofile /etc/default/mailcatcher
/usr/bin/mailcatcher --foreground --http-ip 192.168.50.10

In realtà, le convert-systemd-units il comando genera un intero pacchetto di servizi nosh directory. Con quella directory, che specifica la dipendenza e le informazioni sull'ordine, installata come /var/sv/mailcatcher in un sistema con il nosh service-manager si ottengono tutti i controlli nosh, come:

  • system-control enable mailcatcher.service per impostare l'avvio automatico del servizio all'avvio.
  • system-control start mailcatcher.service per avviare il servizio manualmente.
  • system-control status mailcatcher.service per vedere lo stato del servizio.
  • system-control preset mailcatcher.service per impostare il servizio in modo che si avvii automaticamente all'avvio, se la configurazione locale (preimpostazioni in stile systemd o /etc/rc.conf{,.local} ) lo consente.
Correlati:Disabilitazione dell'avvio ibrido in Windows 8?

Non iniziare con System 5 rc file.

Guarda questo modello utilizzato da SaltStack per System 5 rc script. Anche con la parametrizzazione SaltStack eliminata, si tratta di 59 righe di codice script di shell, la maggior parte delle quali è un generico standard che dovresti reinventare e riscrivere. Ancora. E Celada ha già fatto notare dove l'hai reinventato male.

Il file dell'unità systemd è lungo 11 righe. Il file di lavoro upstart è di 8 righe. Il nosh run lo script è 6. E fanno per te tutte le meccaniche di avvio/arresto/stato. Non iniziare con System V rc , specialmente non su Ubuntu Linux.

Ulteriori letture

  • Impostazione di Mailcatcher . 2014-10-21. Server per hacker. Fideloper LLC.
  • James Hunt e Clint Byrum (2014). "Utilità". Ricettario di Upstart .
  • Jonathan de Boyne Pollard (2014). Uno sguardo fianco a fianco sugli script di esecuzione e sulle unità di servizio. . Risposte frequenti.

Linux
  1. Script della shell:condizione "se il file non viene utilizzato"?

  2. Servizio del sistema operativo Linux 'scsi_reserve'

  3. Come far funzionare uno script Python come un servizio o un demone in Linux

  4. Esegui lo script php come processo daemon

  5. Script Ruby come servizio

script di avvio utorrent / esegui utorrent all'avvio – Ubuntu 14.04 / 14.10

Come eseguire uno script all'avvio in Debian 11

Come eseguire lo script della shell come servizio SystemD in Linux

Come eseguire uno script Bash

Esegui lo script bash come demone

Esegui uno script bash dopo l'avvio dell'istanza EC2