Proc
如何通過 SSHFS 訪問 /proc/ 文件(procfs)
使用帶有 Ubuntu 16.04 的電腦(請不要更新建議)我
/proc/
通過 SSHFS 安裝在我的 Raspberry Pi 3B +(Linux 核心版本 4.19.88)上:sshfs pi@192.168.0.4:/proc ~/procAtPi ls -la ~/procAtPi
這裡
ls
向我展示了 Pi 中的所有文件,/proc
沒有任何問題,就像我直接通過 ssh 連接一樣。但是當我嘗試使用 讀取文件時cat
,這裡沒有顯示任何內容。文件內容僅在我通過直接連接時輸出給我user@remote:~$ ssh pi@192.168.0.4 pi@192.168.0.4:~$ cat /proc/stat
如何從通過 SSHFS 訪問的 procfs 中讀取文件?
我還做了一些觀察:
- 使用
sudo cat ~/procAtPi/stat
導致Access denied
(所以root似乎比普通使用者擁有更少的訪問權限?)但文件所有者是root:user@remote:~$ ls -lai ~/procAtPi/stat 16 -r--r--r-- 1 root root 0 Dez 24 00:00 stat
- 顯示的所有者因訪問權限而異:
user@remote:~$ ls -lai ~/procAtPi/ ... 171 dr-xr-xr-x 1 user user 0 Jan 20 09:18 11045 ... pi@192.168.0.4:~$ ls -lai /proc/ ... 2035700 dr-xr-xr-x 8 pi pi 0 Jan 20 09:18 11045 ...
- 遠端訪問 Pi 的 sysfs (
/sys/
) 中的文件似乎工作正常。目前的解決方法是在 Pi 上執行一個伺服器,該伺服器從中讀取數據
/proc/stat
並通過 TCP 使其可用。但是,為此,我必須每次都手動啟動伺服器(我不想要自動啟動,因為我並不總是需要它)。我需要訪問proc/stat
一個htop
應該監視我的 Pi 集群的類似程序。
ls
向我顯示 Pi 中的所有文件/proc
沒有任何問題,就像我直接通過ssh
. 但是當我嘗試使用 讀取文件時cat
,這裡沒有顯示任何內容。作為一種解決方法,請使用以下
-o direct_io
選項sshfs
:# sshfs localhost:/proc /mnt/tmp root@localhost's password: # cat /mnt/tmp/self/stat <nothing!> # umount /mnt/tmp # sshfs -o direct_io localhost:/proc /mnt/tmp root@localhost's password: # cat /mnt/tmp/self/stat 8242 (sftp-server) R 8236 8242 8242 0 -1 4194560 335 0 0 0 0 0 0 0 20 0 1 0 1846105 2506752 441 18446744073709551615 94732486082560 94732486157085 140730261312560 0 0 0 0 0 0 0 0 0 17 3 0 0 0 0 0 94732486190800 94732486194248 94732486483968 140730261319328 140730261319357 140730261319357 140730261319643 0
有關該選項的作用的描述,請參見此處。
這些文件的問題
/proc
在於它們顯示為大小 = 0 的正常文件,但它們不是空的並且在讀取時包含數據。請注意,此問題不是由 SFTP 協議引起的,也不是特定於
sshfs
.