Donc, un point des emplois parvenus est d'être simple à écrire.
Il y a beaucoup de magie de script shell dans les scripts init.d qui se répète encore et encore. Déclarations de cas, suivi de pidfile, lignes de commentaires LSB. Ce n'est pas très clair comment écrire un bon script init.d sans en avoir lu un.
Si vous avez déjà eu du mal à écrire tout cela, alors vous n'avez pas besoin d'un travail parvenu à moins que, comme je l'ai mentionné dans un autre commentaire, vous ne dépendiez d'un autre travail / événement parvenu.
Mais vraiment, le parvenu rend les choses vraiment simples. Vous ne devriez pas avoir besoin d'un pré-démarrage, sauf si vous devez configurer des choses comme tmpdirs, ulimits ou arguments d'exécution. Vous ne devriez pas avoir besoin d'un post-stop, sauf si vous voulez vous assurer de bien ranger après un service (le service devrait vraiment se nettoyer après lui-même à la sortie normale).
Souvent, un script init.d géant avec de nombreuses options se résume à un travail de démarrage de 10 à 15 lignes. Les scripts init.d les plus complexes peuvent avoir la plupart de leur logique déversée dans les pré-démarrages. La clé est que ce n'est qu'un petit extrait de code pour configurer l'environnement du processus, et non une logique de gestion de démarrage / arrêt / réapparition / etc.
La partie la plus difficile, et celle que les gens se trompent le plus souvent, est de savoir quand commencer / arrêter leur travail. start on runlevel [2345]
semble logique, mais ignore le fait que le réseau monte en parallèle à ce stade, tout comme les montages de systèmes de fichiers locaux. L'essentiel est d'essayer de déterminer exactement le minimum dont vous avez besoin (autres services, systèmes de fichiers, réseau, etc.) pour démarrer et de commencer lorsque cela est fait. La plupart des services réseau traditionnels devraient faire l'affaire start on (local-filesystems and net-device-up IFACE!=lo)
.