Bash

已完成後台作業狀態的“退出 2”是什麼?

  • November 22, 2013

我有一個練習可以在文件中放入一些數據(來自某些目錄的 *conf),並且需要在後台執行此操作。我做到了,我想知道輸出消息的含義是什麼:

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

Enter 上升這一行:

[1] 2533

這是什麼意思?其他輸入後,出現另一條消息

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

這是什麼意思?什麼是“出口 2”?

輸入一個檢查結果——似乎一切正常。

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

我正在使用 CentOS 6.4,Gnome 終端模擬器。

這是什麼意思?什麼是“出口 2”?

它是 的退出狀態ls。ls 見 man:

  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).

我猜原因是你有很多 *conf 文件,/etc而 /usr 中沒有 *conf 文件。事實上ls -ld /usr/*conf;會產生同樣的效果。

因此,如果我在電腦上ls為現有文件執行以下操作:

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

對於不存在的文件:

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

或者作為不存在的文件的後台程序 ls :

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

引用自:https://unix.stackexchange.com/questions/102201