文件/proc/
似乎是世界可读的,但返回权限被拒绝:
$ ls -lh /proc/5589/smaps
-r--r--r-- 1 root root 0 Mar 18 13:11 /proc/5589/smaps
$ cat /proc/5589/smaps
cat: /proc/5589/smaps: Permission denied
我想避免读取此类文件,但-r
检查通过:
$ if [ -r /proc/5589/smaps ] ; then echo readable ; fi
readable
如何检查文件是否确实可读?
答案1
if cat /proc/5589/smaps 2>/dev/null 1>/dev/null; then
echo readable ;
fi
或者少读书
if head -n 1 /proc/5589/smaps 2>/dev/null 1>/dev/null; then
echo readable ;
fi
更新:
我认为你需要在脚本中结合这两项检查: 1) if [ -r /proc/5589/smaps ] 2) if cat /proc/5589/smaps 2>/dev/null 1>/dev/null;
因此,首先检查文件权限,然后检查读取 proc 文件的结果。例如:
filename="/proc/5589/smaps"
if test -r "$filename" && cat "$filename" 2>/dev/null 1>/dev/null; then
echo readable
else
echo not readable
fi