Bash – What is ‘Exit 2’ from Finished Background Job?

background-processbashcommand lineexitjob-control

I have an exercise to put in a file some data (*conf from some directories) and need to do this in background. I did it and I am wondering what is the meaning of output messages:

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

Enter rises this row:

[1] 2533

what does it mean?
After other Enter, another messages appear

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

What does it mean? What is "Exit 2"?

Enter an check results – seems to be all OK.

[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]$ 

I am using CentOS 6.4, Gnome Terminal Emulator.

Best Answer

What does it mean? What is "Exit 2"?

It is exit status of ls. See man for 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).

I guess the reason is that you have lots of *conf files in /etc and no *conf files in /usr. In fact ls -ld /usr/*conf; would have had the same effect.

So If I do on my computer ls for an existing file:

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

And for a file that does not exists:

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

Or as a background process ls for a a file that does not exists:

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