GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso falsificare la quantità di RAM installata per un programma specifico in Linux?

Crea un falso meminfo e montalo su un /proc/meminfo originale :

$ 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

È inoltre possibile eseguire i comandi precedenti in uno spazio dei nomi di montaggio isolato dal resto del sistema. Riferimenti:Ripristino dalla falsificazione di /proc/meminfo


Dopo qualche riflessione, ho fatto questo:

Iniziato con nano /proc/meminfo

Modificato MemTotal , MemFree , MemAvailable , SwapTotal e SwapFree ai valori desiderati e salvati in ~./meminfo

Ha fornito all'utente boinc la password sudo passwd boinc e shell -- sudo nano /etc/passwd , ha trovato la riga boinc:x:129:141:BOINC core client,,,:/var/lib/boinc-client:/usr/sbin/nologin e cambiato il /usr/sbin/nologin parte a /bin/bash

Quindi ho falsificato le informazioni sulla RAM usando esempi da qui Recover from faking /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

e confermato con free che ha funzionato

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

Poi passato all'utente su - boinc e ho appena lanciato il programma con

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

BOINC Manager può essere avviato come al solito

Successo totale, attività che in precedenza si rifiutavano di essere eseguite, hanno iniziato a scaricarsi e poi sono state eseguite senza complicazioni


Linux
  1. /proc/[pid]/pagemaps e /proc/[pid]/maps | Linux

  2. come conoscere il numero di interrupt/GPIO per un pin specifico in Linux

  3. Come impostare l'ID processo in Linux per un programma specifico

  4. Come posso scoprire la memoria fisica totale (RAM) della mia macchina Linux adatta per essere analizzata da uno script di shell?

  5. Come posso modificare la quantità e la dimensione dei ramdisk di Linux (/dev/ram0 - /dev/ram15)?

Come trovare la versione di Redhat Linux installata

Linux:come ottenere l'indirizzo IPv4 per un'interfaccia da /proc?

Linux – Collegamento di /proc/mnt a /proc/mounts?

/proc/cpuinfo e /proc/meminfo in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

Come ottengo il percorso di un processo in Unix/Linux