GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu předstírat množství nainstalované paměti RAM pro konkrétní program v Linuxu?

Vytvořte falešný meminfo a namontujte jej na originální /proc/meminfo :

$ mkdir fake-meminfo && cd fake-meminfo
$ cp /proc/meminfo .
$ chmod +w meminfo
$ sed -Ei 's,^MemTotal:        [0-9]+ kB,MemTotal:        8839012 kB,' meminfo   # replace 8839012 with an amount of RAM you want to pretend you have
$ free -m  # check how much RAM you have now
              total        used        free      shared  buff/cache   available
Mem:           7655        1586        3770         200        2298        5373
$ sudo mount --bind meminfo /proc/meminfo                                 
$ free -m  # check how much RAM you pretend to have after replacing /proc/meminfo
              total        used        free      shared  buff/cache   available
Mem:           8631        2531        3800         201        2299        5403
$ sudo umount /proc/meminfo # restore an original /proc/meminfo
$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7655        1549        3806         200        2299        5410

Výše uvedené příkazy můžete také spustit ve jmenném prostoru připojení izolovaném od zbytku systému. Reference:Obnovení z předstírání /proc/meminfo


Po chvíli přemýšlení jsem udělal toto:

Začíná nano /proc/meminfo

Změněno MemTotal , MemFree , MemAvailable , SwapTotal a SwapFree na požadované hodnoty a uloženy do ~./meminfo

Poskytli uživateli boinc heslo sudo passwd boinc a shell -- sudo nano /etc/passwd , našel řádek boinc:x:129:141:BOINC core client,,,:/var/lib/boinc-client:/usr/sbin/nologin a změnil /usr/sbin/nologin část na /bin/bash

Pak jsem zfalšoval informace o RAM pomocí příkladů zde Obnovení z falšování /proc/meminfo

unshare -m bash    #unshares mount spaces, for specific program "bash" only (and for whatever you want to launch from it)
mount --bind ~./meminfo /proc/meminfo      #substitutes real meminfo data with fake one

a potvrzeno free že to fungovalo

          total        used        free         shared     buff/cache  available
Mem:     2321456       21456     2300000           0           0     2300000
Swap:     5000000     1000000     4000000

Poté se přepnul na uživatele su - boinc a právě spustili program pomocí

boinc --check_all_logins --redirectio --dir /var/lib/boinc-client

BOINC Manager lze spustit jako obvykle

Naprostý úspěch, úlohy, které se dříve odmítaly spustit, se začaly stahovat a poté běžely bez komplikací


Linux
  1. /proc/[pid]/pagemaps a /proc/[pid]/maps | linux

  2. Jak nastavit ID procesu v Linuxu pro konkrétní program

  3. Jak mohu zjistit celkovou fyzickou paměť (RAM) mého linuxového boxu vhodnou k analýze pomocí skriptu shellu?

  1. Jak mohu změnit množství a velikost linuxových ramdisků (/dev/ram0 - /dev/ram15)?

  2. Jak může být klíč Magic SysRq nebezpečný pro uživatele linuxu?

  3. Jak nastavit swapnost procesu pro linux?

  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Linux – jak se liší symbolický odkaz /proc//exe od běžných symbolických odkazů?

  3. Linux – Jak získat adresu IPv4 pro rozhraní z /proc?