web-dev-qa-db-ja.com

終了したバックグラウンドジョブステータスの「終了2」とは何ですか?

私はファイルにいくつかのデータ(いくつかのディレクトリからの* conf)を入れる練習をしていて、これをバックグラウンドで行う必要があります。私はそれをしました、そして私は出力メッセージの意味が何であるかと思っています:

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

Enterはこの行を上昇させます:

[1] 2533

どういう意味ですか?他のEnterの後に、別のメッセージが表示されます

[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 Terminal Emulatorを使用しています。

12
ALZ

どういう意味ですか? 「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).

理由は、/etcに多数の* confファイルがあり、/ 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
18
user17530

つまり、コマンドは0(成功)以外の終了ステータスで終了しました。

最後に(&)を付けないようにして、どうなるか確認してください。

実行時にそのコマンドに時間がかかる場合は、次のコマンドで確認できます。

lnx#>ジョブ-l

1