11
votes

Comment exécuter une script infini en arrière-plan sur Linux?

J'ai un script PHP avec une boucle infinie. J'ai besoin de ce script en cours d'exécution pour toujours. Donc, je cours xxx

et cela fonctionne en arrière-plan dans le contexte de sécurité de mon utilisateur actuel. Mais lorsque je ferme la fenêtre du terminal (déconnexion), Centos Linux tue mon programme.

Je vois deux suppositions: courir d'un autre utilisateur en arrière-plan ou faire un démon. J'ai besoin d'aide dans chaque situation.

Merci beaucoup!


1 commentaires

5 Réponses :


25
votes

NOHUP est votre ami.

nohup command &


0 commentaires

6
votes

Je pense que la solution générale à celle-ci est NOHUP : < / p>

NOHUP est une commande POSIX pour ignorer le signal HUP (Hangup), permettant à la commande de continuer à courir après que l'utilisateur qui délivre la commande a déconnecté. Le signal HUP (Hangup) est par convention comme un terminal avertit en fonction des processus de déconnexion.

NOHUP est le plus souvent utilisé pour exécuter des commandes en arrière-plan comme des démons. Sortie qui irait normalement au terminal va dans un fichier appelé nohup.out s'il n'a pas déjà été redirigé. Cette commande est très utile lorsqu'il est nécessaire d'exécuter de nombreux travaux de lots inter-dépendants.


0 commentaires

1
votes

NOHUP est votre ami.


0 commentaires

1
votes

vous pourriez:

  • Installez l'écran et exécutez la commande à partir de là. L'écran est une session de terminal persistante que vous pouvez partir en cours d'exécution.
  • Écrivez un script init / upstart (tout ce que vous utilisez) afin qu'il se charge au démarrage
  • Utilisez la poire lib lib system_daemon
  • Utilisez Cron si le travail par lots convient mieux au scénario (rappelez-vous simplement de vérifier les instances d'exécution avant de lancer une autre, la concurrence de l'IFF est un problème)
  • EDIT: ou comme tout le monde et leur frère vient de dire, nohup

0 commentaires

0
votes

Utiliser la commande

nohup votre_command &

Par exemple
Nohup Phantomjs Highcharts-Convert.js -host 127.0.0.1 -Port 3003 &

Ici "Phantomjs Highcharts-Convert.js -host 127.0.0.1 -Port 3003" était ma commande


0 commentaires