sh sys-snap.sh &
C'est quoi sh
? C'est quoi sys-snap.sh
? Pourquoi je devrais mettre &
au bout de la ligne? Quelqu'un peut-il expliquer la syntaxe?
Sans le &
script, le message ne reviendra pas à l'invite tant que je n'aurai pas appuyé sur Ctrl+ C. Avec &
je peux appuyer sur entrer et ça marche.
&&
différente d'une seule esperluette&
?Réponses:
sh
est le shell compatible Bourne par défaut (généralement bash ou dash)sys-snap.sh
est un script shell, qui contient des commandes quish
s'exécutent. Comme vous ne postez pas son contenu, je ne peux que deviner par son nom ce qu’il fait. Je peux trouver un script lié à CPanel avec le même nom de fichier, qui crée un fichier journal avec tous les processus en cours, l'utilisation actuelle de la mémoire, l'état de la base de données, etc. Si le script commence par une ligne shebang (#!/bin/sh
ou similaire), vous pouvez le rendre exécutable. avecchmod +x sys-snap.sh
et démarrez-le directement en utilisant./sys-snap.sh
s’il se trouve dans le répertoire en cours.Avec
&
le processus commence en arrière-plan, vous pouvez donc continuer à utiliser le shell sans avoir à attendre que le script soit terminé. Si vous l'oubliez, vous pouvez arrêter le processus en cours avecCtrl-Z
et le poursuivre en arrière-plan avecbg
(ou au premier plan avecfg
). Pour plus d'informations, voir Contrôle du travail.la source
sh
généralementbash
ou uniquementdash
sur des systèmes Linux (ou OS / X récents). Sur les BSD, il s’agit généralement d’une autre variante de Ash (dash est basé sur NetBSD sh, lui-même basé sur le shell d’Almquist) ou sur un dérivé de pdksh. Sur les Unices commerciaux, il s’agit généralement de ksh88.&
et donc en arrière-plan, vous obtenez uniquement une nouvelle invite du shell.&&
différente d'une seule esperluette&
?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 lasys-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 lafg
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 pausesys-snap.sh
et vous ramènera à votre invite. Vous pouvez ensuite fond (comme si vous aviez publié ce avec le&
) avec labg
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
):Vous pouvez arrière - plan et de premier plan en les utilisant leur numéro de travail,
%1
vous serezsys-snap.sh
et%2
serezanother-script.sh
. Si vous utilisezfg
oubg
sans arguments, la commande sera exécutée sur le travail marqué par+
dans lejobs
résultat ci-dessus.fg %1
sera remis
sys-snap.sh
au premier plan, tout en laissantanother-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, vouskill %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 queperl
ouphp
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 laless
commande) est le Shebang . Sur la première ligne, vous trouverez probablement l'un des suivants: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écutablechmod
pour que vous puissiez l'exécuter en tant que commande. Si les autorisations n'étaient pas définies, alors leshebang
n'a aucun effet, car vous obtiendriez soit l'erreur:ou si vous l'avez exécuté par chemin explicite
./sys-snap.sh
(.
c'est-à-dire le répertoire de travail actuel), vous obtiendrez:L'autre alternative est de le laisser sans les autorisations d'exécution et de demander explicitement à / bin / sh de l'exécuter:
la source
nohup
que cela signifie, car il est souvent utilisé conjointement avec&
pour démarrer un processus et être capable de tuer le shell qui l'a lancé sans tuer le processus.jobs
cela retournera toujours vide si c'est la première commande?&
à la fin d'une commande ne fait que détacherstdin
(mais passtdout
oustderr
) ce qui implique que si votre commande / script s'exécute en arrière-plan mais écrit dansstdout
, vous risquez de vous retrouver dans une situation oùCtrl + c
la sortie ne s'arrêtera pas mais vous pourrez taper des commandes. En effet, le processus d'arrière-plan écrit surstdout
mais vous ne pouvez pas l'arrêter car il ne s'exécute pas au premier plan. Plus d'infos ici .sh
est une coquille. Quel shell dépend exactement du système. Exemple pour un système utilisantbash
comme shell standard:sys-snap.sh
sera un script shell, doncsh sys-snap.sh
exécutera le script shell.&
provoquera l'exécution du processus shell en arrière-plan. Sans&
cela, il restera au premier plan jusqu'à la fin du script. Le script fonctionnera dans les deux cas. Il suffit d'attendre que le script se termine ou non avant d'exécuter d'autres commandes.la source
Votre serveur est-il en hostgator?
Le script
sys-snap.sh
est un script spécial écrit par l'équipe hostgator pour collecter tous les fichiers journaux et les données du système. Il utilise donc sa sortie pour surveiller et collecter les informations système.la source