GNU/Linux >> Tutoriels Linux >  >> Linux

Le script Init.d n'est pas exécuté au démarrage ?

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.
Connexes :Désactiver le démarrage hybride dans Windows 8 ?

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.

Linux
  1. Cron Job pour vérifier si le script Php est en cours d'exécution, sinon, exécutez-le ?

  2. Script Shell :Condition "si le fichier n'est pas utilisé" ?

  3. service :commande introuvable

  4. Comment faire fonctionner un script Python comme un service ou un démon sous Linux

  5. Exécuter le script php en tant que processus démon

Script de démarrage utorrent / exécuter utorrent au démarrage – Ubuntu 14.04 / 14.10

Comment exécuter un script au démarrage dans Debian 11

Comment exécuter un script Shell en tant que service SystemD sous Linux

Comment exécuter un script bash

Exécuter le script bash en tant que démon

Upstart :exécuter le service en tant qu'utilisateur non privilégié et pré-démarrer le script en tant que root