web-dev-qa-db-ja.com

/ proc / meminfoの偽造から回復する

したがって、あまり考えずに、次のスクリプトを実行しました。

#!/bin/bash
SWAP="${1:-512}"
NEW="$[SWAP*1024]"; TEMP="${NEW//?/ }"; OLD="${TEMP:1}0"
sed "/^Swap\(Total\|Free\):/s,$OLD,$NEW," /proc/meminfo > /etc/fake_meminfo
mount --bind /etc/fake_meminfo /proc/meminfo

ここから: http://linux-problem-solver.blogspot.com.ee/2013/08/create-fake-swap-in-openvz-vps-if-you-get-swapon-failed-operation -not-permitted-error.html

それは私のスワップスペースについて嘘をつくのに本当にうまくいきました、しかし今私は

free -m

再び動作しますが、/ proc/meminfoは完全に空であり、サーバーはそれについて何も知らないようですRAMは、上などでも。

読んでくれてありがとう。

2
Lauri Elias

マウントを解除するだけです:umount /proc/meminfo

これらすべてのプログラム(freetopatopなど)は、どこかから情報を取得する必要があります。そしてそれはどこかに/proc/meminfo

1つのプログラムに偽の情報を提供する場合は、それを マウント名前空間 で実行します。

$ unshare -m bash
$$ mount --bind … /proc/meminfo
$$ myprogram

スワップスペースについてのみ嘘をつきたい場合は、偽のmeminfoファイルを Fuseファイルシステムを介した動的ファイル にします。 (注:名前付きパイプも機能しますが、一度に1つのプログラムからアクセスされる場合に限ります。)