Forum Linux.général Vidage de Ram ou suppression des Traces [==Résolu==]

Posté par  . Licence CC By‑SA.
Étiquettes :
-1
17
fév.
2016

Bonjours a toute la communauté du libre

alors voila j'ai besoins pour une raison diverse de vidé le cache mémoire

donc on procédé de cette maniéré, on va écrire dans le fichier drop_caches, 3 à la place de 0 si je comprend bien … ( echo "texte" > [chemin] )

mais pourquoi sa vide le cache quand on modifie juste le fichier drop_caches ???


sinon il y a un autre truc qui me perturbe …

sync

echo "3" > /proc/sys/vm/drop_caches

jusque là sa va … du moins je préfère la commande

sync && echo 3 | tee /proc/sys/vm/drop_caches

là ou je pige pas, ou on dit qu'il faut désactive l'option et remettre 0 dans drop_caches
alors on fait :

echo "0" > /proc/sys/vm/drop_caches

la machine me répond que l'argument est invalide

idem pour

sync && echo 0 | tee /proc/sys/vm/drop_caches

idem si on fait :

sync && sysctl -w vm.drop_caches=3

sync && sysctl -w vm.drop_caches=0

enfaîte je comprend pas a quoi sert la dernier commande

exemple avant de vidé votre cache mémoire, aller voir drop_caches

nano /proc/sys/vm/drop_caches

il est a 0
si on fait

echo "3" > /proc/sys/vm/drop_caches
echo "0" > /proc/sys/vm/drop_caches

il reste a 3 …

ces normale car il nous dit que l'argument n'est pas bon ….
alors à quoi sert la dernière commande.

serait t'il possible que c'est du fait que je suis en virtuel ???
merci d'avance de votre partage de connaissance

Cordialement Saturne.fr

-----------------EDIT : Titre de poste Modifier-----------------------

  • # Tout est fichier !

    Posté par  (Mastodon) . Évalué à 2.

    Salut Saturne,

    En fait, sous UNIX (et Linux est +- un UNIX), tout est fichier, et particulièrement l'interface de communication du noyau. En fait, lors de son lancement, le noyau Linux "rempli" (populate ?) un système de fichier virtuel, en général dans le dossier "proc" (héhé)

    Ton ficher "/proc/sys/vm/drop_caches" est donc un paramètre du noyau Linux présenté comme un fichier, voila pourquoi tu peux en lire la valeur et y écrire comme dans un fichier (cat / echo / …).

    Quand tu fais sysctl -w vm.drop_caches=3, tu passes directement la commande au noyau, c'est la même chose que de modifier le fichier…

    Bon courage !

    • [^] # Re: Tout est fichier !

      Posté par  . Évalué à 0.

      Bonsoir François

      donc si je comprend bien ce que tu m'explique, on va dire que linux à était bouté et virtualisé, avec initramfs ( image du noyau dans le boot ) dans "proc" , sa je comprend !

      ensuite, je comprend bien que toute est fichier sur UNIX que sa part de la racine "/" …

      1* mais alors pourquoi la valeur dans drop_caches n'a pas rechanger à 0 quand on utilise ( echo ) ,
      vue que toute est fichier, on doit avoir la valeur à 0 avant la première commande, ensuite à 3 après la première commande, et à 0 après la deuxième commande … hors là j'ai le résultat 0; 3; 3 …
      donc la dernière commande sysctl -w vm.drop_caches=0 ne sert à rien …
      car linux à était virtualisé, et donc le fichier "drop_cache", ne change pas vraiment, ? heuuuu … si je te suis bien …

      2* ensuite, tu me dit que si je modifie moi même le fichier drop_caches par exemple avec nano donc que je lui donne la valeur 3 j'enregistre, et j'ouvre de nouveaux pour lui redonner la valeur 0, alors sa reviendra à faire c'est deux commande, le cache mémoire seras vidé !!!

      excuse moi, mais si tu pourrais me détaillé ton explication, je suis vraiment désoler François mais je ne tes pas compris !

      cordialement Saturne.Fr

      • [^] # Re: Tout est fichier !

        Posté par  . Évalué à 2.

        Tout est fichier, mais pas fichier comme tu le conçois.
        Le noyau est en ram en permanence, quand tu tente (peut importe la méthode) une écriture ou lecture dans /dev ou /proc tu n’accède pas à des fichiers proprement dis mais a une interface de communication entre le noyeau et l'utilisateur.

        /proc sert surtout aux paramètrage des drivers (et en lecture à des variable d'état) /dev sert à la fonction de base du driver.

        Lorsque tu va ouvrir avec nano ton fichier dans /proc tu va récupérer l'état actuel du paramètre du driver à l'instant de l'ouverture et quand tu sauvegardera alors aura lieu l'indication de demande du changement du paramètre au driver correspondant.

        Mais l'écriture ne sera qu'une demande de modification du comportement du driver, si il n'as pas envie que son paramètre soit modifié, lors de la lecture suivante tu aura l'impression que ton fichier n'as pas été modifié alors que c'est le driver qui as décidé que le paramètre demandé n'était pas applicable et conserve son ancien paramètrage.

        C'est plus clair ?

        • [^] # Re: Tout est fichier !

          Posté par  . Évalué à 1.

          Ah oki Dac

          je comprend beaucoup mieux merci

          bon ben ce poste est résolu alors ;-)

          il est bien foutu le manchot quand même :-D

          Merci à tous

          Cordialement Saturne.Fr

  • # Moi ya toujours un truc que je ne comprends pas

    Posté par  . Évalué à 2.

    Pourquoi 0 est une valeur valide avant qu’on la passe à 3 et qu’ensuite elle est invalide lorsque l’on veut la remettre à 0 ?

    • [^] # Re: Moi ya toujours un truc que je ne comprends pas

      Posté par  . Évalué à 3.

      Je suppose(*) que c'est un paramètre trigger et non pas persistant. L'action d'écriture "echo 3" provoque l'action de vidage des caches en mémoire.Quand c'est fini c'est fini, le relire ne sert qu'a savoir la dernière action réalisée (0 correspondant à aucune action donc au boot).
      Ce paramètre ne modifie pas le futur comportement du gestionnaire mémoire,il déclenche seulement une action, je suppose qu'en faisant "echo 1" ensuite, on relirait "1".

      *(mais il faudrait lire le code de vm pour le confirmer)

      • [^] # Re: Moi ya toujours un truc que je ne comprends pas

        Posté par  . Évalué à 1.

        Oui je pense que TheBreton n'a pas totalement tort, je pense qu'il a raison
        simplement quand tu reboute l'OS la valeur est de nouveaux 0, donc 0 est aucune action

        quand on tape echo "3" > /proc/sys/vm/drop_caches
        il prend on compte immédiatement le changement, quand il a fini il le remet à 0 par défaut ( car il y a plus d'action ! )
        mais comme le fichier texte drop_caches ( est un instantanée ) il reste à la valeur 3

        voila pourquoi quand on veux lui données la valeur 0 il ne veux pas parce-que en faite le noyau, est déjà reparti à 0 ( aucune valeur en faite ) automatiquement après la valeur 3, voila pourquoi il invalide quand on le change, car elle existe déjà cette valeur pour le noyau !

        donc d’après moi, effectivement la dernière commande echo "0" > /proc/sys/vm/drop_caches qui traîne sur le web disant de remettre a 0 ne sert a rien !
        car le noyau ce remet par défaut automatiquement sur la valeur 0

        cordialement Saturne.Fr

        • [^] # Re: Moi ya toujours un truc que je ne comprends pas

          Posté par  . Évalué à 1.

          Surtout, quant on prend la doc de vm, on lit pour drop_caches :

          Because of this, use outside of a testing or debugging environment is not recommended.

          Donc, bon, c'est une option de test/debug… pas une solution à utiliser.

          Matricule 23415

          • [^] # Re: Moi ya toujours un truc que je ne comprends pas

            Posté par  . Évalué à 0. Dernière modification le 18 février 2016 à 14:45.

            en faite en ce qui me concerne
            je cherchais une solution pour supprimer les traces ( si je peux dire physique pense pas ce c'est le mot approprié ) dans la mémoire rapide une fois la machine éteinte !

            la méthode ci-dessus, libère au mieux juste l'espace RAM pouvant être libéré … ( mémé si c'est pas la meilleur méthode, j'en connais pas d'autre !! )

            éclairé moi, si je me trompe !

            la RAM est comme un support de stockage, sauf que la rapidité de transfère est beaucoup plus importante
            donc si on fait une recherche de fichier supprimer dans la RAM, ( je pense que sa doit être possible )

            avec foremost, … ou autre…,
            on pourrais retrouvé des codes de l'OS ou d'application, ( enfin tout ce qui passe dans la RAM )

            je voudrais savoir si il y a possibilité par exemple d'utilisé dd pour effacé définitivement les traces dans la mémoire vive

            je dit peut être n'importe quoi !!!
            il y a peux être plus de trace dans la RAM quand elle est déchargé d’électricité !
            mais j'aimerais savoir ?

            cordialement Saturne.Fr

            • [^] # Re: Moi ya toujours un truc que je ne comprends pas

              Posté par  . Évalué à 3. Dernière modification le 18 février 2016 à 15:20.

              Si la donnée est en cache, une mise en hibernation doit la supprimer ( méthode simple ) ou faire un programme qui bouffe le plus de mémoire possible et la réécrit ( méthode barbare et non sûre ).
              Si la donnée est dans la mémoire d'un processus ( suite à un malloc ), il faut la réécrire avant de la libéré. Si tu la libére comme cela, elle sera à coup sûre réutilisée par un autre processus. Et là, il sera plus difficile de s'assurer qu'elle soit bien réécrite.

              Bien entendu, ceci est utile seulement si ta donnée n'est pas en clair sur tes disques.

              Après, c'est tellement le foutoire la gestion de la mémoire dans un PC, il ne faut pas oublier tout les caches, les swap, que la mémoire peut bouger de place, etc… Si tu ne peux pas faire confiance à la machine pour cela, alors déporte ta donnée sensible sur une autre machine.

            • [^] # Re: Moi ya toujours un truc que je ne comprends pas

              Posté par  . Évalué à 2.

              je cherchais une solution pour supprimer les traces ( si je peux dire physique pense pas ce c'est le mot approprié ) dans la mémoire rapide une fois la machine éteinte !

              La RAM est volatile, c'est à dire que les informations sont perdues quand elle n'est plus alimentée. C'est d'ailleurs la raison d'être des disques durs.
              Il est peut-être possible de récupérer des informations une fois l'alimentation coupée, mais… pas avec un vulgaire logiciel, si jamais c'est possible, il faut sûrement avoir recours à du matériel de cinglé. Du même type que le matos nécessaire pour récupérer des données sur un disque quand elles ont déjà été écrasées.

              Du coup, je pense que tu te prends la tête pour rien. Une fois le système éteint, le seul endroit ou il est relativement aisé de récupérer des données de RAM, c'est le swap. Et pour régler le problème, c'est simple: # swapoff -a avant de faire un truc sensible. Et si, comme moi, tu considères que le swap ne sert à rien, tu peux juste supprimer ça de façon permanente de /etc/fstab.

              • [^] # Re: Moi ya toujours un truc que je ne comprends pas

                Posté par  . Évalué à 2.

                il faut sûrement avoir recours à du matériel de cinglé

                Il me semble que certains ont réussis à le faire avec de l’azote liquide, pour… retarder la « décharge » des barrettes de RAM…

                Donc oui… faut vraiment avoir des secrets de ouf à cacher… Parce que pour le commun des fouineurs, aller lire ce qu’il y avait dans ta RAM une fois qu’elle n’est plus alimentée c’est de la pure science-fiction…

                Et sinon pour être sûr de chez sûr. À chaque fois que tu éteinds ton ordinateur tu prends le soin de rebooter pour lancer un memtest, ça va labourer la RAM méthodiquement. T’es tranquille ;)

                • [^] # Re: Moi ya toujours un truc que je ne comprends pas

                  Posté par  . Évalué à 1.

                  Oki merci de toute ces informations les Gars, je suis curieux, j'aime savoir des choses ;-)

                  vous m'aviez amplement aidé :-D

                  je vous remercie

                  Vive la communauté du libre
                  le manchot vaincra … ( un jours …, si ce n'est déjà fait ) :-D XD

                  • [^] # Re: Moi ya toujours un truc que je ne comprends pas

                    Posté par  . Évalué à 4.

                    Tsss… les meilleurs du monde libre, ce sont les gens pragmatiques.

                    Linus Torvalds à accepté l'intégration de binaires fermé dans le noyau, parce que, justement, la communauté du libre ne sait pas tout faire.

                    Par contre, certains éléments savent:

                    1. se documenter
                    2. faire la part des choses
                    3. vanner et insulter comme il faut

                    Bref, la communauté du libre, c'est avant tout la liberté de penser, et pour ça, il faut penser par soi-même, et pas forcément par stallman.

                    Mais, si tu es curieux, n'hésites surtout pas à troller avec nous, c'est en se faisant contredire que l'on apprend le plus. Et bien sûr, en acceptant la critique.

              • [^] # Re: Moi ya toujours un truc que je ne comprends pas

                Posté par  (site web personnel) . Évalué à 2.

                La RAM est volatile, c'est à dire que les informations sont perdues quand elle n'est plus alimentée. C'est d'ailleurs la raison d'être des disques durs.
                Il est peut-être possible de récupérer des informations une fois l'alimentation coupée

                Cherche "Attaque froide".
                Pas besoin d'azote liquide, une simple bombe de neige carbonique fait déjà des miracles.

                Ensuite, lire la mémoire n'est pas difficile pour un développeur.

                A+

                Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

                • [^] # Re: Moi ya toujours un truc que je ne comprends pas

                  Posté par  . Évalué à 2. Dernière modification le 19 février 2016 à 02:21.

                  Hum. 2 choses à dire.

                  1. il faut un accès physique.
                  2. tu me fais chercher, plutôt que fournir un lien. Serait-ce plus difficile que ce que tu fais supposer de par ton message? Je suis prêt à être convaincu, pas à être persuadé.

                  M'enfin, tu dois savoir qu'ici, on demande des trucs un peu plus détaillés que des théories fumeuses, alors j'attends avec impatience tes liens.

                  • [^] # Re: Moi ya toujours un truc que je ne comprends pas

                    Posté par  (site web personnel) . Évalué à 2.

                    Au moment où j'écrivais le commentaire, j'avais trop de trucs sur les 2 CPU pour me permettre de surfer sur le web (linuxfr est un léger par rapport à beaucoup d'autres).

                    https://fr.wikipedia.org/wiki/Attaque_par_d%C3%A9marrage_%C3%A0_froid

                    http://korben.info/cold-boot-android.html
                    Heureusement que sur certains appareils le retrait de la batterie est difficile… (humours)

                    PS : j'utilise en ce moment une cubietruck, dans un pays avec des restrictions Internet par la méthode 'ça marchouille quand ça veut' (Les tunnels améliorent la situation, mais il y a du lag et c'est très lent (QOS))

                    Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

                    • [^] # Re: Moi ya toujours un truc que je ne comprends pas

                      Posté par  . Évalué à 3. Dernière modification le 27 février 2016 à 14:05.

                      Pour les curieux je partage ;-)


                      • nettoyer la mémoire vive

                      ( libéré l'espace, qui peut être libéré, qui n'est pas vitale dans la RAM )

                      free -m
                      sync && echo "3" > /proc/sys/vm/drop_caches
                      free -m

                      • vide la mémoire vive

                      ( cette méthode fait freezer l'OS ( le fait planté ), et supprime les données non protégé )

                      mkdir /[chemin du fichier]
                      mount -t ramfs /dev/mem /[chemin du fichier] `
                      dd if=/dev/zero > /chemin du fichier]/[non du fichier de donnée aléatoire généré]

                      • voir ce qu'il y a dans la RAM
                      dd if=/dev/mem of=/[chemin du fichier à enregistré] bs=1024

                      utilisé votre éditeur de texte favori pour le lire


                      ( en hexadécimal )

                      dd if=/proc/kcore | hexdump -C | less

                      ( voir l'état de la RAM )

                      dd if=/proc/meminfo | hexdump -C | less

                      Amusez-vous bien ;-)

                      Cordialement Saturne.Fr

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.