Disons qu'un (très) gros processus se bloque et vide le noyau, et que nous en connaissons la cause grâce à d'autres informations (peut-être un message assert, peut-être autre chose).
Existe-t-il un moyen d'empêcher la génération complète du core dump, car c'est un gaspillage dans ce cas ?
Par exemple, le kill -9 d'un processus de vidage de noyau interromprait-il la génération du corefile ?
Évidemment, si nous savions à l'avance que nous ne voulons pas de vidage du noyau, nous pourrions définir l'ulimit de manière appropriée ou utiliser les divers utilitaires de contrôle des fichiers du noyau du système d'exploitation.
Mais cette question concerne l'étape "vidage du noyau déjà en cours"...
(Par exemple, imaginez que je suis le demandeur dans le cadre du projet https://stackoverflow.com/questions/18368242/how-to-bypass-a-2tb-core-dump-file-system-limit et je ne veux pas gaspiller 5-6 TB d'espace disque :) )
0 votes
Sous Linux, vous pouvez désactiver la génération du core dump... est-ce une option ?
0 votes
Non - les vidages du noyau sont nécessaires en général, mais nous cherchons juste un moyen de les arrêter dans les cas où nous savons quel est le problème sans avoir besoin du noyau, pour gagner du temps/de l'espace disque/etc..... Bien sûr, nous pouvons simplement supprimer le noyau une fois qu'il a terminé le dump (ou même le délier avant), mais il n'y a aucune raison de bloquer quelques gigaoctets d'espace sur le disque si nous pouvons simplement tuer le dump du noyau plus tôt.
0 votes
Vous pourriez éventuellement utiliser "cat /dev/null > <path_to_core>" dans le script appelant le programme lorsqu'une certaine condition est remplie, donc tant que l'entrée /proc/<pid> existe, sleep toutes les quelques secondes et exécuter la copie /dev/null vers le fichier core. Cela le mettra à zéro. Je ne suis pas sûr du contexte complet derrière la question, mais cela peut fonctionner.
0 votes
Schrute, cela aurait le même effet que de délier le noyau, n'est-ce pas ? L'espace disque et les ressources système seraient toujours consommés jusqu'à ce que le noyau termine l'écriture - la taille du fichier ne serait simplement pas visible dans du ou ls.
0 votes
Ressources oui, mais c'est une méthode courante pour traiter un gros fichier tel que le fichier core/log et ne pas arrêter le PID. Cela dépend simplement de l'objectif recherché.