Thoát khỏi 2 đỉnh là gì từ tình trạng công việc nền đã hoàn thành?


12

Tôi có một bài tập để đưa vào một tập tin một số dữ liệu (* conf từ một số thư mục) và cần phải làm điều này trong nền. Tôi đã làm điều đó và tôi tự hỏi ý nghĩa của các thông điệp đầu ra là gì:

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

Nhập tăng hàng này:

[1] 2533

nó có nghĩa là gì? Sau khi Enter khác, một thông báo khác xuất hiện

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

Nó có nghĩa là gì? "Lối ra 2" là gì?

Nhập kết quả kiểm tra - dường như tất cả đều ổn.

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

Tôi đang sử dụng CentOS 6.4, Trình giả lập thiết bị đầu cuối Gnome.

Câu trả lời:


18

Nó có nghĩa là gì? "Lối ra 2" là gì?

Đây là trạng thái thoát của ls. Xem người đàn ông cho 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).

Tôi đoán lý do là bạn có rất nhiều tệp * conf trong /etcvà không có tệp * conf trong / usr. Trong thực tế ls -ld /usr/*conf;sẽ có tác dụng tương tự.

Vì vậy, nếu tôi làm trên máy tính của tôi lscho một tệp hiện có:

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

Và đối với một tệp không tồn tại:

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

Hoặc như một quá trình nền ls cho tệp aa không tồn tại:

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

Ôi! Cảm ơn. Bây giờ tôi đã nhận ra rằng sự ls /usr/*conftrở lại 2vì không có tên tập tin nào chứa "conf".
ALZ

2
@ALZ, lưu ý rằng nó trả về 2 vì không thể tìm thấy tệp được gọi /usr/*conf. Và bashđang chuyển tên tệp đó bởi vì nó không thể tìm thấy các tệp khớp với mẫu đó. Các shell tốt hơn như zshđã trả về lỗi "không khớp" và hoàn toàn không chạy ls.
Stéphane Chazelas

1

Điều đó có nghĩa là lệnh đã kết thúc với trạng thái thoát khác 0 (thành công).

Cố gắng không đặt (&) ở cuối, để xem điều gì xảy ra.

Nếu lệnh đó mất nhiều khi chạy, bạn có thể kiểm tra nó bằng:

lnx #> việc làm -l

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.