12
votes

Compresser les fichiers principaux pendant la génération de base

est là comment compresser les fichiers principaux lors de la génération de benne centrale?

Si l'espace de stockage est limité dans le système, il existe un moyen de le conserver en cas de besoin de génération de benne basculante avec une compression immédiate?

Idéalement, la méthode fonctionnerait sur des versions plus anciennes de Linux tels que 2.6.x.


0 commentaires

3 Réponses :


18
votes

Le kernel Linux / proc / sys / kernel / core_pattern Fichier fera ce que vous voulez: http://www.mjmwired.net/kernel/documentation/sysctl/kernel.txt#141

Définissez le nom de fichier à quelque chose comme | / bin / gzip -1> /var/crash/core-%T-%P-%U.gz et vos fichiers principaux doivent être enregistrés compressés pour vous.


6 commentaires

Notez que cela n'est supporté que 2,6.19. Si vous avez un système intégré fonctionnant quelque chose plus tôt, cela pourrait être une inspiration de mettre à niveau ;-)


Aussi digne de note des personnes embarquées, la plupart des systèmes de fichiers flash directs (YAFFS, JFFS2, UBIFS) effectuent une compression transparente sur les fichiers, ce qui permettra d'obtenir un effet net similaire.


Le programme doit être spécifié à l'aide d'un chemin d'accès absolu. Voir noyau (5) . De plus, la redirection ">" ne semble pas fonctionner ici, vous pouvez mettre la commande gzip dans un script shell distinct comme "/root/core.sh", puis echo "| /root/core.sh"> / proc / sys / kernel / core_pattern à la place.


@Té, je suis surpris d'avoir négligé le chemin complet. Merci!


Idem pour moi sur BupéraBox: on devrait spécifier les modèles de base comme des arguments sur le script Shell, par exemple. echo "| /root/core.sh% t% p% u"> / proc / sys / kernel / core_pattern et à l'intérieur du script, vous pouvez utiliser 1 $, 2 $, 3 $: / bin / GZIP -F -> /var/crash/core-$1-$2-$.GZ


J'ai dû prendre cette étape plus loin et ajouter l'environnement Shell à Core.sh: #! / Bin / sh exécrable / usr / bin / pigz -f -> "/ carottes / noyau / noyau- $ 2- $ 3- $ 4- $ 5- $ 5.GZ " et core_pattern: | /usr/local/sbin/core.sh% e% p% h% s% t



2
votes

Pour un système Linux intégré, le changement de script fonctionne parfaitement pour générer des fichiers noyau compressés en 2 étapes

Étape 1: Créez un script

touchez /bin/gen_compress_core.sh
chmod + x /bin/gen_compress_core.sh

chat> /bin/gen_compress_core.sh #! / bin / sh EXEC / BIN / GZIP -F -> "/ VAR / CORE / CORE- $ 1. $ 2.GZ"
ctrl + d

Étape 2: Mettez à jour le fichier de modèle de base

chat> / proc / sys / kernel / core_pattern | /nuova/bin/gen_compress_core.sh% e% p ctrl + d


0 commentaires

1
votes

Comme suggéré par une autre réponse, le fichier Linux Kernel / Pro / SYS / Kernel / Core_Pattern est un bon endroit pour démarrer: http://www.mjmwired.net/kernel/documentation/sysctl/kernel.txt#141

Comme la documentation indique que vous pouvez spécifier le caractère spécial" | " qui dira au noyau de sortir le fichier au script. Comme suggéré, vous pouvez utiliser | / bin / gzip -1> /var/crash/core-%T-%P-%U.gz comme nom, mais cela ne semble pas fonctionner pour moi. Je m'attends à ce que la raison est que sur mon noyau système ne traite pas le caractère de> en tant que sortie, cela le transmet probablement comme un paramètre à GZIP. P>

Afin d'éviter ce problème, comme d'autres suggérées Vous pouvez créer votre fichier à certains emplacements que j'utilise /home//crash/core.sh, créez-le à l'aide de la commande suivante, remplaçant avec votre utilisateur. Sinon, vous pouvez également modifier évidemment le chemin entier. P>

sudo sysctl -w kernel.core_pattern="/tmp/core.dump"


0 commentaires