Ubuntu 16.04(アップデート提案を提供しないでください)がインストールされているシステムを使用して、/proc/
Raspberry Pi 3B +(Linuxカーネルバージョン4.19.88)にSSHFS経由でインストールしました。
sshfs [email protected]:/proc ~/procAtPi
ls -la ~/procAtPi
SSH経由で直接接続したように、ls
Piのすべてのファイルは問題なく表示されます。/proc
しかし、 を使ってファイルを読み込もうとすると、cat
ここには何も表示されません。ファイル内容は、以下を介して直接接続した場合にのみ出力されます。
user@remote:~$ ssh [email protected]
[email protected]:~$ 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 ... [email protected]:~$ ls -lai /proc/ ... 2035700 dr-xr-xr-x 8 pi pi 0 Jan 20 09:18 11045 ...
Piのsysfs()
/sys/
にあるファイルへのリモートアクセスが正しく機能しているようです。
/proc/stat
現在のソリューションは、データを読み取ってTCP経由で使用できるようにするPiでサーバーを実行することです。ただし、これを行うには毎回手動でサーバーを起動する必要があります(必ずしも必要ではないため、自動起動を望まない)。私のPiクラスタを監視する同様のプログラムproc/stat
にアクセスする必要があります。htop
答え1
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
は、サイズがゼロの通常のファイルとして表示されますが、空ではなく読み取り時にデータが含まれることです。
この問題はSFTPプロトコルによるものではなく、限定されていませんsshfs
。