Apa itu "Keluar 2" dari status pekerjaan latar belakang jadi?

12

Saya memiliki latihan untuk memasukkan file beberapa data (* conf dari beberapa direktori) dan perlu melakukan ini di latar belakang. Saya melakukannya dan saya bertanya-tanya apa arti dari pesan keluaran:

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

Enter naik baris ini:

[1] 2533

apa artinya? Setelah Enter lainnya, pesan lain muncul

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

Apa artinya? Apa itu "Keluar 2"?

Masukkan hasil cek - sepertinya semuanya 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]$ 

Saya menggunakan CentOS 6.4, Gnome Terminal Emulator.

ALZ
sumber

Jawaban:

18

Apa artinya? Apa itu "Keluar 2"?

Ini adalah status keluar dari ls. Lihat 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).

Saya kira alasannya adalah bahwa Anda memiliki banyak file * conf di /etcdan tidak ada * conf file di / usr. Bahkan ls -ld /usr/*conf;akan memiliki efek yang sama.

Jadi Jika saya lakukan di komputer saya lsuntuk file yang ada:

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

Dan untuk file yang tidak ada:

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

Atau sebagai proses latar belakang ls untuk file yang tidak ada:

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

sumber
Hai! Terima kasih. Sekarang saya sudah menyadari bahwa ls /usr/*confkembali 2karena tidak ada nama file yang mengandung "conf".
ALZ
2
@ALZ, perhatikan bahwa ia mengembalikan 2 karena tidak dapat menemukan file yang dipanggil /usr/*conf. Dan bashmemberikan nama file itu karena tidak dapat menemukan file yang cocok dengan pola itu. Kerang yang lebih baik seperti zshakan mengembalikan kesalahan "tidak cocok" dan tidak berjalan lssama sekali.
Stéphane Chazelas
1

Itu berarti perintah telah selesai dengan status keluar berbeda dari 0 (berhasil).

Cobalah untuk tidak menaruh (&) di bagian akhir, untuk melihat apa yang terjadi.

Jika perintah itu membutuhkan banyak waktu saat berjalan, Anda dapat memeriksanya dengan:

lnx #> pekerjaan -l

Vitalie Ghelbert
sumber