Exécuter une commande en tant que processus d'arrière-plan/service
J'ai une commande Shell que j'aimerais exécuter en arrière-plan et j'ai lu que cela peut être fait en suffixant un &
à la commande qui le fait exécuter en tant que processus d'arrière-plan mais j'ai besoin de plus de fonctionnalités et je me demandais comment aller à ce sujet:
- J'aimerais la commande pour démarrer et exécuter en arrière-plan chaque fois que le système redémarre.
- J'aimerais être capable de le démarrer et l'arrêter en cas de besoin tout comme on peut faire
service apache2 start
.
Comment puis-je aller à ce sujet? Est-il un outil qui me permet d'exécuter une commande en tant que service?
Je suis un peu perdu avec cette.
Grâce
Pour info, un Unix "service" est généralement appelé un daemon - sachant cela peut vous aider à trouver des informations plus facilement.
OriginalL'auteur Mridang Agarwalla | 2011-11-17
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil à la démon de commande, qui peut tourner à l'arbitraire des processus de démons. Cela permettra à votre script d'agir comme un démon, sans vous obliger à faire beaucoup de travail supplémentaire. La prochaine étape est de lancer automatiquement au démarrage. Pour connaître la bonne façon de le faire, vous aurez besoin de fournir à votre système d'exploitation (ou, pour Linux, votre distribution).
Salut À Sorpigal. Je sais que j'ai déjà accepté cette réponse, mais pourriez-vous dire comment je pourrais obtenir le démon pour démarrer au démarrage. Je suis sur Ubuntu 10.4. Merci.
Je ne suis pas très familier avec Ubuntu nouveau système d'init, mais ici et dans la Rédaction de la section des Services mis à votre démon invocation où il est dit
echo "Put bash code here"
OriginalL'auteur Sorpigal
Systèmes UNIX peut gérer autant de processus que vous avez besoin simultanément (il suffit d'ouvrir de nouvelles fenêtres de shell si vous êtes dans une interface graphique), de sorte que l'exécution d'un processus en arrière-plan n'est nécessaire que si vous avez besoin de continuer à utiliser le shell en cours de la fenêtre pour d'autres choses une fois que vous avez lancé une application ou un processus qui continue à tourner.
Pour exécuter une commande appelée commande en mode arrière-plan, vous pouvez utiliser:
C'est un caractère spécial qui vous renvoie à l'invite de commande une fois que le processus est lancé. Il y a d'autres caractères spéciaux qui font d'autres choses, plus d'infos sont disponibles ici.
Pour garder
command
en cours d'exécution après la fermeture de shell, utiliseznohup command &
OriginalL'auteur MattMatt
Fondées sur le présent article:
http://felixmilea.com/2014/12/running-bash-commands-background-properly/
...un autre bon moyen est avec
screen
par exemple:de la écran manuel:
c'est à dire que vous pouvez fermer votre terminal, le processus continuera de fonctionner (contrairement à l'
&
)avec
screen
vous pouvez aussi le rattacher à la session plus tardOriginalL'auteur Anentropic
De travail avancé de contrôle avec bash, vous devriez regarder dans les commandes
jobs
bg
etfg
.Cependant, il semble que vous n'êtes pas vraiment intéressé à l'exécution de la commande en arrière-plan. Ce que vous voulez faire est de lancer la commande au démarrage. La façon de faire varie selon le système Unix, vous pouvez utiliser, mais essayez de regarder dans les
rc
de la famille de fichiers (/etc/rc.local
par exemple sur Ubuntu). Ils contiennent des scripts qui seront exécutés après le script init.OriginalL'auteur rahmu
Utilisation nohup pour diriger la sortie vers /dev/null
nohup command &>/dev/null &
OriginalL'auteur philip mudenyo