ファイルにいくつかのデータ(いくつかのディレクトリからの* conf)を入れる演習があり、これをバックグラウンドで行う必要があります。私はそれをしました、そして私は出力メッセージの意味が何であるか疑問に思います:
[A@localhost tests]$ ls -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1 &
この行を入力してください:
[1] 2533
それはどういう意味ですか?他のEnterの後に、別のメッセージが表示されます
[A@localhost tests]$ [1]+ Exit 2 ls --color=auto -ld /etc/*conf /usr/*conf > test1_6_conf.txt 2>&1
それはどういう意味ですか? 「Exit2」とは何ですか?
チェック結果を入力してください-すべて問題ないようです。
[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]$
CentOS6.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).
その理由は、/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 main.cppp & [1] 26880 ls: cannot access main.cppp: No such file or directory [1]+ Exit 2 ls main.cppp
コメント
conf "。
/usr/*conf
。また、 bash
は、そのパターンに一致するファイルを'見つけることができないため、そのファイル名を渡します。 zsh
のような優れたシェルは、"一致しない"エラーを返し、実行されませんでしたls
まったく。回答
つまりコマンドが終了しました終了ステータスが0(成功)とは異なります。
最後に(&)を付けないようにしてください、何が起こるかを確認します。
そのコマンドの実行時に時間がかかる場合は、次のコマンドで確認できます:
lnx#>ジョブ-l
ls /usr/*conf
が2
を返すことに気付きました。 id = “eb9ec21234″>