web-dev-qa-db-fra.com

Comment modifier le modèle de vidage principal sans désactiver la répartition?

Actuellement, j'ai activé les vidages mémoire en éditant /etc/limits.conf et en ajoutant * soft core unlimited, ainsi qu'en utilisant ulimit -c unlimited.

Mais le core_pattern est le suivant:

kernel.core_pattern = |/usr/share/apport/apport %p %s %c %P

Donc, le noyau est transmis à répartir. Cela ne me dérange pas, et je ne veux pas gâcher avec apport (je me souviens de quelque chose qui ne va pas une fois), de plus, bien génère un fichier core dans le répertoire de mon binaire quand il le des accidents.

Existe-t-il un moyen de modifier l’emplacement dans lequel apport enregistre le noyau ou son nom de fichier (au lieu d’un simple core)? Semblable à ce que je pouvais faire en désactivant apport et en modifiant le core_pattern, mais sans désactiver apport.

6
coyotte508

J'ai trouvé un meilleur moyen de le faire car apporter des modifications à la répartition signifie que chaque fois que nous améliorons la répartition, nous devrons ajouter nos modifications.

Linux vous permet de fournir un script Shell en tant que programme à exécuter chaque fois qu'un noyau est généré. Dans ce fichier de base, vous pouvez appeler comme d'habitude, puis personnaliser vos tâches. Cela inclut la modification du nom et de l'emplacement du fichier principal.

Pour trouver le chemin du noyau généré par apport, vous pouvez utiliser le chemin suivant:

core_dir=realpath '/proc/$1/cwd'
1
Abhishek Jain

Pour ce faire, vous pouvez modifier le fichier apport python. Changer l’emplacement du noyau est simple: au lieu de

core_path = os.path.join(cwd, 'core') 

tu peux mettre

core_path = os.path.join('my_custom_path, 'core)

le nom peut également être modifié de la même manière, à savoir:

core_path += '.' + str(pid)

à

core_path += '.' + str(my_custom_name) + '.' + str(pid)

notez que si vous voulez ajouter le nom binaire au fichier core, vous devrez le transmettre pour utiliser le core_pattern, c.-à-d. quelque chose comme:

|/usr/share/apport/apport %p %s %c %d %P %e

Notez le %e ci-dessus qui passe le nom de l'exécutable au script de répartition

N'oubliez pas de redémarrer le service de répartition après une modification du script

3
Abhishek Jain