Qu'est-ce que «Quitter 2» du statut de tâche d'arrière-plan terminée?

12

J'ai un exercice pour mettre dans un fichier des données (* conf de certains répertoires) et je dois le faire en arrière-plan. Je l'ai fait et je me demande quelle est la signification des messages de sortie:

[A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 &

Entrez monte cette ligne:

[1] 2533

Qu'est-ce que ça veut dire? Après une autre entrée, un autre message apparaît

[A@localhost tests]$
[1]+  Exit 2                  ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1

Qu'est-ce que ça veut dire? Qu'est-ce que "Sortie 2"?

Entrez un résultat de vérification - semble être tout va bien.

[A@localhost tests]$
[A@localhost tests]$ ls -l test1_6_conf.txt
-rw-rw-r--. 1 A A 2641 Nov 22 14:19 test1_6_conf.txt
[A@localhost tests]$ 

J'utilise CentOS 6.4, Gnome Terminal Emulator.

ALZ
la source

Réponses:

18

Qu'est-ce que ça veut dire? Qu'est-ce que "Sortie 2"?

C'est l'état de sortie de ls. Voir l'homme pour ls:

   Exit status:
       0      if OK,

       1      if minor problems (e.g., cannot access subdirectory),

       2      if serious trouble (e.g., cannot access command-line argument).

Je suppose que la raison en est que vous avez beaucoup de fichiers * conf /etcet aucun fichier * conf dans / usr. En fait, ls -ld /usr/*conf;cela aurait eu le même effet.

Donc, si je le fais sur mon ordinateur lspour un fichier existant:

ls main.cpp; echo $?
main.cpp
0

Et pour un fichier qui n'existe pas:

ls main.cppp; echo $?
ls: cannot access main.cppp: No such file or directory
2

Ou en tant que processus d'arrière-plan ls pour un fichier qui n'existe pas:

>ls main.cppp &
[1] 26880
ls: cannot access main.cppp: No such file or directory
[1]+  Exit 2                  ls main.cppp

la source
Oh! Merci. Maintenant, j'ai réalisé ce ls /usr/*confretour 2puisqu'il n'y a aucun nom de fichier contenant "conf".
ALZ
2
@ALZ, notez qu'il renvoie 2 car il ne trouve pas le fichier appelé /usr/*conf. Et bashlui passe ce nom de fichier car il ne peut pas trouver les fichiers qui correspondent à ce modèle. De meilleurs shells comme zshauraient renvoyé une erreur "pas de correspondance" et ne fonctionneraient pas lsdu tout.
Stéphane Chazelas
1

Cela signifie que la commande s'est terminée avec un état de sortie différent de 0 (succès).

Essayez de ne pas mettre (&) à la fin, pour voir ce qui se passe.

Si cette commande prend beaucoup de temps lors de son exécution, vous pouvez la vérifier avec:

lnx #> jobs -l

Vitalie Ghelbert
la source