Ceci est connu sous le nom job control
unix. Il &
informe le shell de mettre la commande en arrière-plan. Cela signifie qu'il continue à exécuter la sys-snap.sh
commande mais vous ramène à votre shell pour vous permettre de continuer à exécuter des commandes parallèles.
Vous pouvez voir la liste des tâches en cours d'exécution avec la jobs
commande. Vous pouvez revenir à la commande (mettre au premier plan) en utilisant la fg
commande. Ce qui ramène la commande à l'état où vous ne voyez aucune invite et vous devez émettre Ctrl- Cpour tuer le processus. Vous pouvez cependant suspendre (mettre en pause) ce processus en lançant Ctrl- Z. Cela fera une pause sys-snap.sh
et vous ramènera à votre invite. Vous pouvez ensuite fond (comme si vous aviez publié ce avec le &
) avec la bg
commande, et il repreniez en cours d' exécution à partir de son état , le mis en pause Ctrl- Zil avait mis.
Notez que vous pouvez avoir plusieurs emplois à la fois (comme indiqué par jobs
):
[1]- Running sys-snap.sh &
[2]+ Running another-script.sh &
Vous pouvez arrière - plan et de premier plan en les utilisant leur numéro de travail, %1
vous serez sys-snap.sh
et %2
serez another-script.sh
. Si vous utilisez fg
ou bg
sans arguments, la commande sera exécutée sur le travail marqué par +
dans le jobs
résultat ci-dessus.
fg %1
sera remis sys-snap.sh
au premier plan, tout en laissant another-script.sh
à l'arrière-plan.
Vous pouvez utiliser la séquence Ctrl- Cpour exécuter des tâches sans avoir à les mettre en avant avec la kill
commande, vous kill %1
enverrez l'équivalent de Ctrl- Cà sys-snap.sh
.
Si vous utilisez bash shell, la man bash
commande comporte une section détaillée dans la section intitulée "CONTRÔLE DES TRAVAUX" pour aller plus en détail.
En ce qui concerne le nom de sys-snap.sh
, les noms de fichiers sous unix sont arbitraires (à quelques exceptions près, comme les fichiers de chargeur dynamique). Il n'y a pas d' obligation pour eux d'avoir extentions de fichiers spécifiques pour les faire fonctionner comme un script shell, appeler d' autres commandes telles que perl
ou php
etc. Il est généralement utilisé pour fournir la clarté, que dans ce cas, il est .sh
un script shell en utilisant le Bourne Shell /bin/sh
.
La partie fonctionnelle de sys-snap.sh
(quand vous regardez son contenu avec quelque chose comme la less
commande) est le Shebang . Sur la première ligne, vous trouverez probablement l'un des suivants:
#! /bin/sh
#! /bin/bash
#! /usr/local/bin/bash
ou similaire. En termes simples, une commande après le #!
(telle que /bin/sh
) est exécutée et le contenu du reste du fichier de script lui est transmis ligne par ligne. Notez que le fichier doit également être défini comme exécutable chmod
pour que vous puissiez l'exécuter en tant que commande. Si les autorisations n'étaient pas définies, alors le shebang
n'a aucun effet, car vous obtiendriez soit l'erreur:
bash: sys-snap.sh: command not found
ou si vous l'avez exécuté par chemin explicite ./sys-snap.sh
( .
c'est-à-dire le répertoire de travail actuel), vous obtiendrez:
bash: ./sys-snap.sh: Permission denied
L'autre alternative est de le laisser sans les autorisations d'exécution et de demander explicitement à / bin / sh de l'exécuter:
/bin/sh sys-snap.sh &
&&
différente d'une seule esperluette&
?