GNU/Linux >> Znalost Linux >  >> Linux

Skript Init.d není spuštěn při spouštění?

Můj skript neběží při bootování v tulákovské krabici pod Ubuntu.

Můj skript vypadá takto –

#!/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

Moje oprávnění k souboru vypadají takto –

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

Spustím příkaz –

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

Pokud skript spustím ručně, funguje a spustí se mailcatcher. Pokud restartuji počítač, démon mailcatcher se nespustí. Uniká mi něco?

Přijatá odpověď:

A teď k odpovědím Ubuntu.

Toto je otázka Ubuntu Linux a verze 15 je nyní vydána. Svět Ubuntu má nyní systemd. Ale ještě před verzí 15 byl svět Ubuntu na vzestupu. Opravdu není důvod psát System 5 rc skripty; a rozhodně není dobrý důvod začínat odtud.

Jak upstart, tak systemd provádějí všechny „servisní kontroly“. Vše, co musíte udělat, je popsat službu .

systemd

Systémová servisní jednotka, která má být umístěna v /etc/systemd/system/mailcatcher.service , je

[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

Tím se automaticky získá jeden ze všech systémových ovládacích prvků, jako například:

  • systemctl enable mailcatcher.service pro nastavení automatického spouštění služby při bootování.
  • systemctl preset mailcatcher.service pro nastavení automatického spouštění služby při bootování, pokud to místní politika umožňuje.
  • systemctl start mailcatcher.service pro ruční spuštění služby.
  • systemctl status mailcatcher.service zobrazíte stav služby.

začátečník

Upstart je podobný a úprava souboru úlohy upstart společnosti Fideloper LLC na tuto otázku dává toto pro /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

Tím se automaticky získá jeden ze všech počátečních ovládacích prvků, jako například:

  • initctl start mailcatcher pro ruční spuštění služby.
  • initctl status mailcatcher zobrazíte stav služby.

Sekce bonusových daemontools

Pro nakopnutí, pro zábavu všech lidí používajících daemontools-rodiny, kteří se k tomu dostanou přes WWW vyhledávání, a pro demonstraci dalšího důvodu, proč nezačít na System 5 rc skripty, spustil jsem servisní jednotku systemd prostřednictvím convert-systemd-units sady nástrojů nosh příkaz k vytvoření následujícího skriptu pro spuštění rodiny daemontools:

#!/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

Vlastně convert-systemd-units příkaz vygeneruje celý nosh balíček služeb adresář. S tímto adresářem, který určuje závislost a informace o objednávání, nainstalovaný jako /var/sv/mailcatcher v systému s nosh service-manager získáte všechny ovládací prvky Nosh, jako například:

  • system-control enable mailcatcher.service pro nastavení automatického spouštění služby při bootování.
  • system-control start mailcatcher.service pro ruční spuštění služby.
  • system-control status mailcatcher.service zobrazíte stav služby.
  • system-control preset mailcatcher.service pro nastavení automatického spouštění služby při bootování, pokud je místní konfigurace (přednastavení ve stylu systemd nebo /etc/rc.conf{,.local} ) to umožňuje.
Související:Zakázání hybridního spouštění ve Windows 8?

Ani nezačínejte se systémem 5 rc soubory.

Podívejte se na tuto šablonu, kterou používá SaltStack pro System 5 rc skripty. I když byla eliminována parametrizace SaltStack, to je 59 řádků kódu skriptu shellu, z nichž většina je obecný vzor, ​​který byste museli znovu vymýšlet a přepisovat. Znovu. A Celada už poukázal na to, kde jsi to špatně vynalezl.

Soubor systemd unit má 11 řádků. Soubor počáteční úlohy má 8 řádků. Nosh run script je 6. A všechny mechaniky start/stop/stav dělají za vás. Nezačínejte s System V rc , zejména ne na Ubuntu Linux.

Další čtení

  • Nastavení Mailcatcheru . 2014-10-21. Servery pro hackery. Fideloper LLC.
  • James Hunt a Clint Byrum (2014). "Utility". Kuchařka pro začátečníky .
  • Jonathan de Boyne Pollard (2014). Pohled vedle sebe na spouštěcí skripty a servisní jednotky. . Často uváděné odpovědi.

Linux
  1. CentOS / RHEL 7 :Jak vytvořit vlastní skript, který se automaticky spustí během bootování

  2. Služba OS Linux „scsi_reserve“

  3. služba:příkaz nenalezen

  1. Jak spustit příkaz jako konkrétní uživatel ve skriptu init?

  2. Upstart:Spusťte službu jako neprivilegovaný uživatel a skript před spuštěním jako root

  3. Po spuštění instance EC2 spusťte bash skript

  1. spouštěcí skript utorrent / spouštění utorrentu při spouštění – Ubuntu 14.04 / 14.10

  2. Úloha Cron zkontrolovat, zda skript PHP běží, pokud ne, pak spustit?

  3. Shell Script:Stav „pokud se soubor nepoužívá“?