【发布时间】:2014-11-10 10:00:58
【问题描述】:
我有一个遍历一组目录的 perl 脚本,当它遇到其中一个时,它会因无效参数而爆炸,我希望能够以编程方式跳过它。我以为我可以从使用 file 命令找出文件类型开始,但它也像这样爆炸:
$ file /sys/devices/virtual/net/br-ex/speed
/sys/devices/virtual/net/br-ex/speed: ERROR: cannot read `/sys/devices/virtual/net/br-ex/speed' (Invalid argument)
如果我使用 perl 或 python stat 函数打印出文件的模式,它会告诉我 33060,但我不确定所有位的含义,我希望某个特定的位会告诉我不要尝试查看里面。有什么建议吗?
【问题讨论】:
-
如果您查看带有
ls -l的/sys/devices/virtual/net/br-ex目录会发生什么?该文件的权限是什么?我怀疑这不是一个真实的文件(很像/dev/null不是 real 文件)。我打赌你会看到类似crw-rw-rw或brw-rw-rw的东西,这意味着它是一个特殊文件。 -
/sys是一个虚拟文件系统,通过文件系统提供内核存储的硬件信息。但是,这些条目与真实文件不对应。但是,元数据具有误导性,因为即使stat也将此类文件报告为常规文件。 -
可以安全地假设
/sys是您将看到用于sysfs的唯一名称,因此您可以硬编码您的脚本以忽略它。