Connaitre toutes les execution d'une commande

Bonjour,

Je voudrais savoir toutes les exécutions effectuer d'une commande situé dans :
/usr/bin/cm15

Y a t'il un moyen de savoir toutes les commande executer via
/usr/bin/cm15
genre comme un log ?

Es-ce que les système linux peut récupérer les commande exécuter et les mettre dans un fichier texte ?

Merci.

4 réponses

  1. Modérateur
    Qu'entends-tu par "toutes les exécutions effectuer d'une commande " ?
    Connaître les appels système effectués par le binaire ?

    Si c'est le cas , dirige-toi vers strace
    Un exemple: rechercher tous les essaisd'ouverture de la commande mdir n:
    johand@osiris: ~/tmp $ strace -o mdir.log mdir n: 
     Volume in drive N is ARCHOS 2    
     Volume Serial Number is E86A-0002 
    Directory for N:/ 
    
    PHOTO        <DIR>     1980-00-00   0:00  
    MUSIC        <DIR>     2012-05-11  18:12  
    VIDEO        <DIR>     1980-00-00   0:00  
    RECORD       <DIR>     1980-00-00   0:00  
            4 files          11 663 312 bytes 
                         15 732 834 304 bytes free 
    
    johand@osiris: ~/tmp $ grep open mdir.log  
    open("/etc/ld.so.cache", O_RDONLY)      = 3 
    open("/lib/x86_64-linux-gnu/libnsl.so.1", O_RDONLY) = 3 
    open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3 
    open("/usr/lib/locale/locale-archive", O_RDONLY) = 3 
    open("/etc/mtools.conf", O_RDONLY)      = 3 
    open("/etc/default/mtools.conf", O_RDONLY) = -1 ENOENT (No such file or directory) 
    open("/etc/mtools.conf", O_RDONLY)      = 3 
    open("/home/johand/.mtoolsrc", O_RDONLY) = -1 ENOENT (No such file or directory) 
    open("/dev/disk/by-uuid/E86A-0002", O_RDONLY|O_EXCL) = 3 
    open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 4 
    open("/usr/lib/x86_64-linux-gnu/gconv/IBM850.so", O_RDONLY) = 4 
    open("/etc/localtime", O_RDONLY)


    Donc: man 1 strace
    Gates gave ^H sold you the windows.
    GNU gave us the whole house.(Alexandrin)
    1. Bonsoir,

      C'est pour un projet.
      J'ai besoin de récupèrer toutes les exécution qui ont était réalisé avec la commande
      cm15
      situé dans
      /usr/bin/


      Exemple : si un utilisateur tape :
      cm15 A1 on
      cm15 E1 off
      cm15 P16 on

      uniquement pour cette commande, je veux pouvoir le voir dans un fichier log
      du genre :

      03-06-2012 - 07:16:47 - cm15 A1 on
      03-06-2012 - 16:16:47 - cm15 E1 off
      03-06-2012 - 18:16:47 - cm15 P16 on


      la question est comment faire ?

      Merci.
      1. Modérateur
        Ecris un script du genre :
        johand@osiris: ~/tmp $ cat ls-log.sh    
        #!/bin/bash   
        CMD=/bin/ls   
        LOGFILE=/home/johand/log/$(basename $CMD ).log   
        NOW=$(date)
        # ou plus rapide  NOW=$(printf '%(%x %X)T' -1)
        # puisque printf est une commande interne de bash
        
        cat >> $LOGFILE <<LOGITEM   
        $NOW: $@   
        LOGITEM   
        
        exec $CMD $@   
        johand@osiris: ~/tmp $ cat ls-log.sh    
        #!/bin/bash   
        CMD=/bin/ls   
        LOGFILE=/home/johand/log/$(basename $CMD ).log   
        NOW=$(date)   
        
        cat >> $LOGFILE <<LOGITEM   
        $NOW: $@   
        LOGITEM   
        
        exec $CMD $@   
        johand@osiris: ~/tmp $ ./ls-log.sh /tmp /usr > /dev/null    
        johand@osiris: ~/tmp $ cat ~/log/ls.log    
        dimanche 3 juin 2012, 20:45:11 (UTC+0200): /tmp /usr


        Evidemment, si tu possèdes les sources du binaire, rien ne t'empêche d'ajouter une fonction de journalisation.

        Gates gave ^H sold you the windows.
        GNU gave us the whole house.(Alexandrin)