Proc

如何通過 SSHFS 訪問 /proc/ 文件(procfs)

  • January 20, 2021

使用帶有 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.

引用自:https://unix.stackexchange.com/questions/630005