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


12

私はファイルにいくつかのデータ(いくつかのディレクトリからの* 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を使用しています。

回答:


18

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

おお!ありがとう。今、私は気付きましたls /usr/*confリターンを2「CONF」を含むそこには任意のファイル名以来。
ALZ 2013年

2
@ALZ、というファイルが見つからないため、2が返されることに注意してください/usr/*conf。そしてbash、そのパターンに一致するファイルを見つけることができないため、そのファイル名を渡します。のようなより優れたシェルzshは、「一致なし」エラーを返し、まったく実行さlsれませんでした。
ステファンChazelas

1

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

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

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

lnx#>ジョブ-l

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.