ファイルは/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
修正する:
私の考えでは、スクリプトで次の2つのチェックを組み合わせる必要があると思います。 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