Bash

從偽造 /proc/meminfo 中恢復

  • January 27, 2016

所以,沒有想太多,我執行了這個腳本:

#!/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,即使使用 atop 或類似的東西。

謝謝閱讀。

只需解除安裝它:umount /proc/meminfo

所有這些程序(freetopatop等)都必須從某個地方獲取它們的資訊。某處是/proc/meminfo

如果您想為某個程序提供虛假資訊,請在掛載命名空間中執行它:

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

如果您只想對交換空間撒謊,請通過 FUSE 文件系統使偽造meminfo文件成為動態文件。(注意:命名管道也可以工作,但前提是它一次由一個程序訪問。)

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