2010-11-12 7 views
2

Je cherche une ou plusieurs commandes qui pourraient faire que mon ordinateur Linux utilise beaucoup de RAM? Des pointeurs?Comment faire pour que mon ordinateur utilise beaucoup de RAM?

Je veux exécuter cela dans le fond et faire une autre tâche qui nécessite déjà une utilisation élevée de la RAM.

Merci!

+2

Écrivez un programme C, appelez malloc (un MILLION mégaoctets). –

+0

Je dois le faire dans bash .. désolé. – abc

+0

@Travis Dr. Evil - c'est vous? – Josephine

Répondre

6

Que l'on causera la mémoire de plus en plus utilisation par bash:

while read f; do arr[$((i++))]=$f; done < /dev/urandom 

Un autre moyen difficile pourrait être (être c areful):

while read f; do arr="$arr:$arr:$arr:$arr:$f"; done < /dev/urandom 

version plus souple:

while read f; do arr="$arr:$f"; done < /dev/urandom 

pour récupérer les parties de l'appel de la mémoire:

unset arr 

Vous pouvez aussi mélanger avec une bombe fourchette ... mais je l'éviter

+0

Merci, son linux intégré et les tableaux ne fonctionnent pas! :( – abc

+0

mis à jour, utiliser des chaînes si aucun tableau disponible – mpapis

+0

Merci cela aide !! – abc

0

ulimit -m peut être utilisé pour imposer une limite de mémoire artificielle à un processus.

+0

Merci, mais je suis à la recherche d'une commande/logique qui pourrait obliger l'ordinateur à utiliser beaucoup de RAM. Il serait difficile d'utiliser ulimit avec ma tâche. – abc

0

Utilisez ce à vos propres risques:

:() {: |: &}

;:

=> Explosion dans votre bélier

+1

que l'on va plutôt prendre la puissance du processeur pas le bélier lui-même ... mais peut-être que je me trompe – mpapis

+0

De toute façon, ce n'est pas ce que "abc" besoin:/ – malletjo

+1

Oui, cela ne résoudra pas le but. Je suis embarqué sur linux, alors la bombe fourche complètement le cpu et je ne peux rien faire. De plus, le shell n'a pas de tableaux implémentés. – abc

1

La réponse actuelle essayera d'employer plus de RAM jusqu'à ce qu'il soit simplement complètement en RAM. Pour une approche plus contrôlée, si vous avez des outils de base GNU, vous pouvez le faire:

yes | tr \\n x | head -c $BYTES | grep n 
# Protip: use `head -c $((1024*1024*2))` to calculate 2MB easily 

Cela fonctionne parce que grep charge toute la ligne de données dans la RAM. La ligne, générée par yes, en remplaçant les nouvelles lignes, sera infiniment longue, mais est limitée par head à $BYTES octets, ainsi grep chargera $ BYTES en mémoire. Grep lui-même utilise comme 100-200KB pour moi, vous pourriez avoir besoin de soustraire cela pour une quantité plus précise.

Si vous souhaitez ajouter une contrainte de temps, cela peut se faire assez facilement dans bash (ne fonctionne pas dans sh):

cat <(yes | tr \\n x | head -c $BYTES) <(sleep $SECONDS) | grep n 

La chose <(command) semble être peu connu, mais est souvent très utile plus d'info sur le sujet ici: http://tldp.org/LDP/abs/html/process-sub.html

Si vous avez pv et que vous voulez augmenter lentement l'utilisation de la RAM:

yes | tr \\n x | head -c $BYTES | pv -L $BYTESPERSEC | grep n 

Par exemple:

yes | tr \\n x | head -c $((1024*1024*1024)) | pv -L $((1024*1024)) | grep n 

Utilisera jusqu'à un giga-octet à un taux de 1 Mo par seconde. En bonus, pv vous montrera le taux d'utilisation actuel et l'utilisation totale jusqu'à présent.Bien sûr, cela peut aussi se faire avec des variantes précédentes:

yes | tr \\n x | head -c $BYTES | pv | grep n 

Juste insérer la partie | pv | vous montrera l'état actuel (débit total et, par défaut, je pense - sinon voir la page de manuel (manuel)).

Questions connexes