Mon script ne s'exécute pas au démarrage dans une boîte vagabonde sous Ubuntu.
Mon script ressemble à ceci –
#!/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
Mes autorisations sur le fichier ressemblent à ceci –
-rwxr-xr-x 1 root root 352 Apr 30 09:59 mailcatcher.sh
Je lance la commande -
sudo update-rc.d "mailcatcher.sh" defaults
Si j'exécute le script manuellement, cela fonctionne et démarre mailcatcher. Si je redémarre l'ordinateur, le démon mailcatcher ne démarre pas. Ai-je raté quelque chose ?
Réponse acceptée :
Et maintenant pour les réponses d'Ubuntu.
Il s'agit d'une question Ubuntu Linux, et la version 15 est maintenant disponible. Le monde Ubuntu a maintenant systemd. Mais même avant la version 15, le monde Ubuntu avait commencé. Il n'y a vraiment aucune raison d'écrire System 5 rc
scripts ; et il n'y a certainement aucune bonne raison de commencer à partir de là.
Upstart et systemd effectuent tous les "contrôles de service". Tout ce que vous avez à faire est de décrire le service .
systemed
Une unité de service systemd, à placer dans /etc/systemd/system/mailcatcher.service
, est
[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
Cela obtient automatiquement tous les contrôles systemd, tels que :
systemctl enable mailcatcher.service
pour configurer le service pour qu'il démarre automatiquement au démarrage.systemctl preset mailcatcher.service
pour configurer le service pour qu'il démarre automatiquement au démarrage, si la politique locale le permet.systemctl start mailcatcher.service
pour démarrer le service manuellement.systemctl status mailcatcher.service
pour voir l'état du service.
arriviste
Upstart est similaire, et la modification du fichier de travail upstart de Fideloper LLC à cette question donne ceci pour /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
Cela obtient automatiquement l'un de tous les contrôles parvenus, tels que :
initctl start mailcatcher
pour démarrer le service manuellement.initctl status mailcatcher
pour voir l'état du service.
Section des outils démon bonus
Pour le plaisir, pour le divertissement de toute personne utilisant la famille daemontools qui y accède via une recherche WWW, et pour démontrer une autre raison de ne pas commencer au System 5 rc
scripts, j'ai exécuté cette unité de service systemd via les convert-systemd-units
de l'ensemble d'outils nosh pour produire le script d'exécution suivant de la famille 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
En fait, le convert-systemd-units
la commande génère un ensemble de services nosh entier annuaire. Avec ce répertoire, qui spécifie les dépendances et les informations de commande, installé en tant que /var/sv/mailcatcher
dans un système avec le nosh service-manager
on obtient tous les contrôles nosh, tels que :
system-control enable mailcatcher.service
pour configurer le service pour qu'il démarre automatiquement au démarrage.system-control start mailcatcher.service
pour démarrer le service manuellement.system-control status mailcatcher.service
pour voir l'état du service.system-control preset mailcatcher.service
pour définir le service à démarrer automatiquement au démarrage, si la configuration locale (préréglages de style systemd ou/etc/rc.conf{,.local}
) le permet.
Ne commencez même pas avec System 5 rc
fichiers.
Regardez ce modèle utilisé par SaltStack pour System 5 rc
scripts. Même avec l'élimination du paramétrage de SaltStack, cela représente 59 lignes de code de script shell, dont la plupart sont des passe-partout génériques que vous auriez à réinventer et à réécrire. De nouveau. Et Celada a déjà souligné où vous l'avez mal réinventé.
Le fichier d'unité systemd fait 11 lignes. Le fichier de travail parvenu est de 8 lignes. Le nosh run
script est 6. Et ils font tous les mécanismes de démarrage/arrêt/état pour vous. Ne commencez pas avec System V rc
, surtout pas sur Ubuntu Linux.
Autres lectures
- Configuration de Mailcatcher . 2014-10-21. Serveurs pour les pirates. Fideloper LLC.
- James Hunt et Clint Byrum (2014). "Utilitaires". Livre de cuisine pour débutant .
- Jonathan de Boyne Pollard (2014). Un aperçu côte à côte des scripts d'exécution et des unités de service. . Réponses fréquemment données.