【发布时间】:2011-07-13 17:51:46
【问题描述】:
我正在运行一个 Perl 脚本来读取远程机器上的多个文件。我的代码如下所示:
open HANDLE, "/usr/bin/ssh $host cat /home/log_1.log /home/log_2.log 2>>./errorLog.log |"
基本上我将文件内容存储到 HANDLE 中,所有错误都进入 errorLog.log 文件。但是在我的 errorLog.log 文件中,我一直看到“选择:错误的文件描述符”。我不确定是什么原因造成的,谷歌搜索并没有太大帮助。所以我的问题是:这个错误是什么意思,我该如何解决?
编辑:在上述命令中,远程机器中可能不存在 log_2.log。在这种情况下,我想将错误消息输出到 errorLog.log 中。因此,当我的脚本发现机器中不存在 log_2.log 文件时,它应该记录“cat: /home/log_2.log: No such file or directory”但有时我会看到“cat: /home/log_2.log : 没有这样的文件或目录选择:错误的文件描述符”(没有换行符的两个错误消息)。
【问题讨论】:
-
尝试一次
open HANDLE, "/usr/bin/ssh $host cat /home/log_1.log /home/log_2.log 2>>errorLog.log |" -
您可以尝试使用
strace来查找导致错误的文件描述符。您是否关闭了 fd 0、1 或 2? -
你说的这个 fd 到底是什么?