したがって、あまり考えずに、次のスクリプトを実行しました。
#!/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
それは私のスワップスペースについて嘘をつくのに本当にうまくいきました、しかし今私は
free -m
再び動作しますが、/ proc/meminfoは完全に空であり、サーバーはそれについて何も知らないようですRAMは、上などでも。
読んでくれてありがとう。
マウントを解除するだけです:umount /proc/meminfo
これらすべてのプログラム(free
、top
、atop
など)は、どこかから情報を取得する必要があります。そしてそれはどこかに/proc/meminfo
。
1つのプログラムに偽の情報を提供する場合は、それを マウント名前空間 で実行します。
$ unshare -m bash
$$ mount --bind … /proc/meminfo
$$ myprogram
スワップスペースについてのみ嘘をつきたい場合は、偽のmeminfo
ファイルを Fuseファイルシステムを介した動的ファイル にします。 (注:名前付きパイプも機能しますが、一度に1つのプログラムからアクセスされる場合に限ります。)