web-dev-qa-db-fra.com

Pourquoi cron ne fonctionnerait-il pas en tant que démon?

Je suis sur Ubuntu 15.04 et connecté en tant que root, mais quand je lance

ps -ef | grep cron | grep -v grep

pour m'assurer que le démon cron fonctionne, je vois le -f, ce qui signifie qu'il s'exécute au premier plan et non pas comme un démon. Je n'ai rien changé à cron depuis la mise en place (sur DigitalOcean, à partir de leur image stock 15.04). Pourquoi ne fonctionnerait-il pas en tant que démon?

(Et oui, je sais que je devrais utiliser systemd à la place. C'était censé être une solution rapide et sale - car cron est si simple et fiable, right !? - jusqu'à ce que je puisse obtenir mon * .service fichiers débogués et fonctionnant.)

2
iconoclast

Je vois le -f, ce qui signifie qu'il s'exécute au premier plan et non pas comme un démon.

Non. Cela signifie qu'il n'a pas fait une petite danse inutile à la fourche et à la sortie quand il a commencé. Ces petites danses sont des tentatives (vaines) pour démoniser des programmes, en supposant que l'on démarre dæmons en se connectant à une session interactive et en exécutant les programmes à partir du Shell. Cela ne fonctionne pas vraiment de manière fiable et sécurisée, et est la source d'histoires de guerre au fil des ans de personnes qui ont tenté de démarrer des démons de cette façon et ont été désagréablement surpris.

cron est déjà démonifié à force d'être exécuté sous un gestionnaire de services. Il n'a rien à faire du tout pour devenir un démon. Et cela va d'inutile à activement préjudiciable au bon fonctionnement du système. Donc, la convention - grâce à un quart de siècle de gens qui veulent ce genre de chose pour exécuter dæmons sous daemontools, runit, le SRC d'IBM, etc. - est d'utiliser toutes les options de ligne de commande pour simplement désactiver ces petites danses. Une bonne gestion des services n'en a pas besoin.

Lectures complémentaires

4
JdeBP

Étant donné qu'il est exécuté par systemd, il n'est pas nécessaire qu'il se fourche en arrière-plan car il n'est pas appelé par un script Shell qui attend sa sortie (après s'être bifurqué en arrière-plan).

4
psusi