Correct, c'est parce que vous vérifiez l'état de deux types de service, l'un est Upstart ntive (isc-dhcp-server) et les deux autres sont Système V style init scripts. L'un de ces SysV scripts (atftpd) ne supporte pas la commande status. Le site status
n'est pas une commande obligatoire d'init script, à la différence de la commande start
y stop
.
La raison pour laquelle Apache n'a pas été converti à Upstart est la façon dont il bifurque les processus. En bref, Upstart utilise la fonction ptrace() du noyau pour suivre les bifurcations, mais il ne suit que les bifurcations et pas les sorties, il suppose que le processus parent a disparu. Pour faire court, cela n'est pas compatible avec la façon dont certains démons gèrent les bifurcations, comme apache2 et postfix.
Ces deux anciens bugs pour entrer dans le vif du sujet sur le plan technique.
Certaines personnes ont eu un peu de succès en écrivant leurs propres jobs Upstart et en démarrant Apache avec une option "no detach", mais ceci n'est pas supporté et si vous n'êtes pas prudent, une mise à jour de paquet pourrait clobber vos changements. Les Init scripts et les Upstart jobs ne sont pas destinés à être modifiés par l'utilisateur. Dpkg considère cela comme un conflit et vous le signalera lors de la mise à niveau. Si vous n'avez pas de raison spécifique de passer d'Apache à un job Upstart natif, je m'en tiendrais à l'init scripts. Note : la façon de correctement pour modifier les tâches Upstart, il faut créer un fichier .override [cf. man 5 init ].
Dans le futur, Upstart pourrait passer de ptrace() à l'utilisation de cgroups pour gérer les groupes de processus, ce qui supprimerait ce type de problème. Mais c'est encore loin de l'horizon, je crois.