update - strong> vous me donnez une idée, merci beaucoup | p>
7 Réponses :
Je ne connais aucun enregistrement de signaux envoyés aux processus, à moins que le Oom Killer ne le fait. P>
@retracile - Lire sur SA code>,
ACCT code> et
acon code> dans les pages manuelles Linux.
... mieux adapté comme un commentaire.
Si vous utilisez En ce qui concerne l'enregistrement de la raison, un processus a été tué, je n'ai pas encore vu de programme psychique. P>
Le piratage du noyau n'est pas pour les faibles de cœur, mais Hella Fun. Vous auriez besoin de corriger les routines d'expédition de signal pour connecter des informations à l'aide de . 9) quand tuer (3) , SIGSEND (2) ou similaire est appelé. Lire " Le modèle de gestion des signaux Linux " Pour plus d'informations sur la manière dont les signaux sont manipulés. P > sudo code>, il sera enregistré. Outre cela, le processus tué peut enregistrer certaines informations (à moins que cela ne soit terminé avec des préjugés extrêmes). Vous pouvez même pirater le noyau pour enregistrer des signaux. P>
1 - Où peut-on les informations sur le journal des processus «tués»? Syslog? 2 - Comment le noyau peut-il être "piraté" pour enregistrer des signaux? Merci...
Eh bien, c'est la question n'est pas ça. Si c'est tué, il ne peut pas très bien écrire sur quoi que ce soit pour que le noyau doit être celui pour interpréter le signal. Mais tuer est assez normal pour que le noyau ne soigne pas réellement que quelque chose a été tué, vous devez donc vous brancher un module pour lui dire d'attraper le signal et les soins. Il y a des programmes d'emballage C réellement celles qui font cela si si vous le faites, je suggérerai certainement de poster sur superutilisateur
Si vous écrivez votre propre programme, vous pouvez attraper le signal de tuer et écrire dans un fichier de logfile avant de mourir réellement. Cela ne fonctionne pas avec Kill -9 cependant, juste la nature normale. p>
Vous pouvez voir des détails sur ifroway . P>
Si le processus l'obtient via Si le processus l'obtient via tuer (2), code>, à moins que le processus ne soit déjà connecté, la seule trace externe serait un MOD de noyau. C'est assez simple; Il suffit de faire un
imprimante () code>, c'est comme
printf (). code> Recherchez la sortie dans
dmesg code>. P>
/ bin / kill code>, il s'agirait donc d'une matière relativement facile d'installer un exécutable d'emballage qui s'est connecté. Mais ceci (livraison de signaux via
/ bin / kill code>) est peu probable car tuer est également une bash intégrée. P>
La famille * printf code> peut être problématique. Le noyau Linux offre
imprimante code> ( LinuxGrill.com/anonymous/fire/netfilter/... ) comme une alternative. Il y a aussi Syslog ( Linux.die.net/man/3/syslog )
Gratter syslog code>; Il n'est pas sûr d'appeler d'un contexte de noyau.
Selon CAF forte> et Stephen C Strong> S. > original em> p> Le meilleur moyen d'attraper le signal de tuer est que vous devez utiliser un gestionnaire de signal pour gérer quelques signaux aussi, voir ici pour un exemple de comment Pour utiliser un gestionnaire de signal à l'aide de la fonction code> Sigaction code>. p> Ce serait aussi une bonne idée d'adopter l'utilisation de la fonction Lorsque la fonction C Un exemple d'utilisation de J'espère que cela t'aides,
Meilleures salutations,
Tom. P> p>
atexit < / Code>, et j'ai décrit dans le code, cela aurait dû être
Quitter (0); Code> .. Ooops Merci FRCA! LI>
ol>
, pas seulement < Code> SIGKILL CODE> SIMPLE suffira, Strike> SIGABRT CODE> (ABORT),
SIGQUIT CODE> (Terminal Program Quit),
SIGSTOP Code> Strike> et
Sighup CODE> (HANGUP). Ces signaux ensemble sont ce qui attirerait la commande
tuer code> sur la ligne de commande. Le gestionnaire de signal peut ensuite enregistrer les informations stockées dans
/ var / log / messages code> (dépendant de l'environnement ou de la distribution Linux). Pour plus de référence, voir ici . p>
Atexit code>, puis lorsque le code EXIT STRAND> S au moment de l'exécution, l'exécution exécutera la dernière fonction avant de revenir à la ligne de commande. Référence pour
atexit code> est ici . < / P>
EXIT CODE> est utilisée et exécutée, la fonction
Atexit code> exécutera le pointeur de fonction lorsqu'il est appliqué comme dans l'exemple ci-dessous. - merci CAF fort> pour cela! P>
Atexit code> comme indiqué: p>
Deux signaux ne peuvent pas i> être pris - sigkill code> et
sigstop code>. Fonctions enregistrées avec
Atexit code> ne sont exécutées que si le processus se déroule via Calling
Quitter code> ou revenir depuis
Main code>.
FAUX - Le noyau se soucie si vous avez l'option de comptabilité de processus BSD activée dans votre noyau.
@CAF: Je vais modifier la modification en conséquence et merci pour les têtes rapides / rappel!
@Stephen C: Je vais modifier la modification en conséquence! Il montre juste qu'il y a des choses sous Linux que je ne me dérange jamais avec ... :)
Si votre noyau Linux est compilé avec la comptabilité de processus ( (ce genre de choses n'est pas largement connu / utilisé ces jours-ci, mais je me souviens toujours de cela des jours de 4.x BSD sur Vaxes ...) P> config_bsd_process_act code>) Option activée, vous pouvez démarrer l'enregistrement des informations de comptabilité des processus à l'aide de la commande
Accton (8) Code> et utilisez < Code> SA (8) code> Pour accéder aux informations enregistrées. Les informations enregistrées incluent le code de sortie 32 bits qui inclut le numéro de signal. P>
Au fait, si un processus est tué avec un signal est annoncé par le noyau au processus parent via de
Cela pourrait être mieux demandé sur SuperUserer, si vous êtes surtout curieux des solutions existantes.
@JOSH: Cela pourrait être lié à la programmation, si Aaron est intéressé par la manière de mettre en œuvre la journalisation de tuer. S'il veut juste savoir s'il est possible avec les technologies existantes, alors vous avez raison.