Bash
從偽造 /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
它對我的交換空間撒謊非常有效,但現在我想要好的舊命令,比如
free -m
再次工作,但 /proc/meminfo 完全是空的,伺服器似乎不再了解它的 RAM,即使使用 atop 或類似的東西。
謝謝閱讀。
只需解除安裝它:
umount /proc/meminfo
所有這些程序(
free
、top
、atop
等)都必須從某個地方獲取它們的資訊。某處是/proc/meminfo
。如果您想為某個程序提供虛假資訊,請在掛載命名空間中執行它:
$ unshare -m bash $$ mount --bind … /proc/meminfo $$ myprogram
如果您只想對交換空間撒謊,請通過 FUSE 文件系統使偽造
meminfo
文件成為動態文件。(注意:命名管道也可以工作,但前提是它一次由一個程序訪問。)