リモートマシン上の複数のファイルから読み込むPerlスクリプトを実行しています。"cat:"を使用した後にLinuxが "select:Bad file descriptor"エラーを返す
open HANDLE, "/usr/bin/ssh $host cat /home/log_1.log /home/log_2.log 2>>./errorLog.log |"
は基本的に私は、ハンドルにファイルの内容を格納していますし、すべてのエラーがerrorLog.logファイルに移動します。私のコードは次のようになります。しかし、私のerrorLog.logファイルでは、 "select:Bad file descriptor"が表示されています。私はこれを引き起こしているのかわからないし、Googleの検索はあまり役に立たなかった。だから私の質問は:このエラーはどういう意味ですか、どうすれば解決できますか?
EDIT:上記のコマンドでは、log_2.logがリモートマシンに存在しない可能性があります。その場合、errorLog.logにエラーメッセージを出力したかったのです。だから私のスクリプトは、マシンにlog_2.logファイルが存在しないと判断した場合、 "cat:/home/log_2.log:そのようなファイルやディレクトリはありません"と記録しますが、 "cat:/home/log_2.log :そのようなファイルまたはディレクトリセレクトはありません:不正なファイル記述子 "(改行なしの2つのエラーメッセージ)。
オープンハンドル、「は/ usr/binに/ sshを$ホスト猫/home/log_1.log /ホーム/ log_2 '一度試してみてくださいます。 log 2 >> errorLog.log | "' – Rahul
'strace'を使ってどのファイル記述子がエラーになるのか調べることができます。おそらくfd 0,1または2を閉じましたか? – ikegami
あなたが話しているこのfdはなんですか? – Dan