Bonjour Bonjour,

je voulais savoir comment pourrait on avoir les différentes heures de démarrage et d'arrêt d'une machine, afin que je puisse m'assurer des heures d'utilisation de la machine.
je crois avoir deja vu ca dans un fichier log, mais je me souviens plus du chemin 🙁.
je crois avoir tous vu
/var/log/messages
boot.log

Si qq'un pourrait m'aider en proposant une solution !!
Merci Merci

Machine sous Fedora 8 bien sur 🙂
La commande
who -b
permet de connaître la date/heure du dernier boot, mais pas celle d'un arrêt non encore exécuté puisque le système tourne.

Par contre des grep/egrep sur /var/log/messages :

egrep 'Kernel logging .proc. stopped|Initializing cgroup subsys cpuset' messages


Il suffit de repérer un message significatif de chaque arrêt et de chaque démarrage (ces messages peuvent dépendre de F8/F9 et/ou du mode de démarrage.
dans le fichier /var/log/messages j'ai repéré ces lignes :

Jul 28 09:19:40 Serveur pcscd: readerfactory.c:1350:RFCleanupReaders() entering cleaning function
Jul 28 09:19:40 Serveur pcscd: pcscdaemon.c:489:at_exit() cleaning /var/run
Jul 28 09:19:40 Serveur kernel: Kernel logging (proc) stopped.
Jul 28 09:19:40 Serveur kernel: Kernel log daemon terminating.
Jul 28 09:19:41 Serveur exiting on signal 15 <===================


Est ce que ca pourrait être ça???
L'exemple que je t'ai donné fonctionne sous F8 ou F9 sur ma machine.

la syntaxe de egrep :
egrep 'expression_réguliere_1|expression_reguliere_2|.......' nom_fichier_1 [nom_fichier_2 ...]
rémidoubi wrote:dans le fichier /var/log/messages j'ai repéré ces lignes :

Jul 28 09:19:40 Serveur pcscd: readerfactory.c:1350:RFCleanupReaders() entering cleaning function
Jul 28 09:19:40 Serveur pcscd: pcscdaemon.c:489:at_exit() cleaning /var/run
Jul 28 09:19:40 Serveur kernel: Kernel logging (proc) stopped.
Jul 28 09:19:40 Serveur kernel: Kernel log daemon terminating.
Jul 28 09:19:41 Serveur exiting on signal 15 <===================


Est ce que ca pourrait être ça???
Ca c'est un signal d'arret de processus, mais comme on ne sait pas ce qu'il y a avant ni après, impossible de déterminer s'il s'agit d'un arrêt machine.

Un démarrage se traduit dans /var/log/messages par un truc du genre "syslogd 1.4.2: restart". De toutes façons comme tu as les heures de chaque évènement, pas dur de voir où tu as un intervalle de temps long, pendant lequel la machine a dû être arrêtée.
Merci d'avoir répondu aussi rapidement à mon message,

Donc je viens de redémarrer, et dans /var/log/messages :


Jul 28 12:20:53 Serveur kernel: Kernel logging (proc) stopped.
Jul 28 12:20:53 Serveur kernel: Kernel log daemon terminating. <= puisque les logs du noyau se termine donc on pourrait pas dire que c'est
Jul 28 12:20:54 Serveur exiting on signal 15 a ce moment que la machine a été éteinte ???

1 min d'intervalle chose que je devrais par la suite calculer automatiquement...
Mais là, histoire à suivre ...


Jul 28 12:21:55 Serveur syslogd 1.4.1: restart. <= et la on retrouve se que tu viens de me dire donc démarrage de la machine.
Jul 28 12:21:56 Serveur audispd: starting audispd
Jul 28 12:21:56 Serveur kernel: klogd 1.4.1, log source = /proc/kmsg started.


1- n'est il pas plus simple de repérer quelquepart un "init 5" pour le démarrage et un "init 6 ou init 0" pour démarrage ou arrêt de la machine???
2- comment je pourrait faire pour avoir les différentes heures a l'aide de grep ??(Si possible)


Merci encore,
Bonjour,

le plus simple à mon avis est de te faire un service qui loggue le start et le stop des machines et de le mettre en level 99
Pour éviter de convertir les heures du log, et si tu désire avoir une notion de durée, utilise dans le service à créer un
logger "Boot=$(date +'%s')"
logger "Halt=$(date +'%s')"

Il te suffira de récupérer Boot=xxx et Halt=yyy pour pouvoir cauculer le nombre de secondes entre boot et halt.


Voici ce que pourrait contenir le script à mettre en pseudo-service
#!/bin/bash
case $1 in
  start ) logger "Boot=$(date +'%s')" ;;
  stop ) logger "Halt=$(date +'%s')' ;;
  *)      logger "Argument $1 inconnu" ;;
esac
Pourrais tu plus éclaircir les choses ??je ne suis pas très expert en la matiere, je sais que syslogd peut enregistrer les logs dans un fichier spécifique mais pour enregistrer les logs de boot et d'arrêt, je crains que je puisse pas faire ça tout seul avec se que j'ai en tête 🙁.
Tu crées le fichier /etc/init.d/tracing contenant :
#!/bin/sh
#
# chkconfig: - 99 99
# description: Logs start and stop
#
# pidfile: /var/run/tracing/tracing.pid


RETVAL=0

case $1 in
start)
logger "Boot=$(date +'%s')"
;;
stop)
logger "Halt=$(date +'%s')"
;;
*)
logger "Argument $1 inconnu" ;;
esac

exit $?
Puis tu fais :
su -
chkconfig --add tracing
très bonne idée,Merci vraiment pour ton aide!!

une derniere chose,ou est ce que je récupère les données ecrites par logger?
rémidoubi wrote:comment je pourrait faire pour avoir les différentes heures a l'aide de grep ??(Si possible)

Merci encore,
grep "syslogd 1.4.1: restart" /var/log/messages
remidoubi wrote:ou est ce que je récupère se que les données ecrites par logger?
Si tun ne connais pas une commane, alors la seule commande à connaître est 'man nom_commande' donc
man logger


Par défaut logger écrit tout naturellement dans /var/log/messages

Si tu veux avoir ton propre fichier, le plus simple est de faire un
echo "Boot=....." >>/var/log/mon_fichier
et
echo "Halt=...." >>/var/log/mon_fichier

Mais il faudra prévoir une remise à zéro du fichier (avec messages les rotations sont automatiques).
rémidoubi wrote:très bonne idée,Merci vraiment pour ton aide!!

une derniere chose,ou est ce que je récupère les données ecrites par logger?
Par défaut, la fonction logger écrit dans /var/log/messages

EDIT : too late !!
Donc Le script devrais ressembler a jun truc pareille :


case $1 in
start)
logger "Boot=$(date +'%s')"
echo "Boot=$(date +'%s')" >Tracing_F
;;
stop)
logger "Halt=$(date +'%s')"
echo "Halt=$(date +'%s')" >Tracing_F
;;
*)
logger "Argument $1 inconnu" ;;
esac

exit $?


et si je veux garder le même fichier "ajouter les nouveaux echo au ancien" ; un seul fichier qui comporte à la fois les halt et les boot? est ce que ce que j'ai ajouté est correct ? ou faut 'il employé des tails et autres ?.....?
2 choses :
- pense à mettre les commentaires au début pour que chkconfig retrouve ses petits.
- pour ne pas récréer le fichier à chaque fois , il faut mettre >> Tracing_F
Bon voila,Comme solution au problème, et si jamais quelqu'un se retrouve face au même problème un jour....Voici la solution

========================================================//Mon_Script
case $1 in
start)
echo "Boot = $(date +'%s'' ''%H:%M:%S'' ''%Y/%m/%d')" >>Tracing_F
;;
stop)
echo "Halt = $(date +'%s'' ''%H:%M:%S'' ''%Y/%m/%d')" >>Tracing_F
;;
*)
printf "Service Start | Stop \n"
exit 1;
esac

exit $?
========================================================//

Puis:
su -
chkconfig --add Mon_Script


bon Aprés des que le fichier est rempli par un Boot , Halt , Boot pour Calculer le temps d'inactivité il suffit de faire : (chose que j'ai pas encore faite mais dés que ca sera fais je posterai le code 🙂 )


on récupère le deuxieme champs '%s' relatif a un nombre de seconde à partir du 01-01-1970 00:00 d'un Halt et d'un Boot,
Donc deux nombres,
le premier relatif a Halt
le deuxieme relatif a Boot

on soustrait le second du premier on obtient un nombre de seconde relatifs au temps d'inactivité.
si on veut trouver le nombre de minutes, rien de plus facile

1min -> 60sec
X -> (nombre de secondes obtenues par la soustraction)

Régle de trois et c bon 😃

Exemple :

Boot 1217260188
Halt 1217260585

la soustraction donne 397 => 6min 37sec

et voila,j'espère que ceci facilitra la tache aux nombreux bidouilleurs que nous sommes 🙂
Super, et hormis la prouesse technique (?), où se trouve l'intérêt ?
nouvo09 wrote:Super, et hormis la prouesse technique (?), où se trouve l'intérêt ?
:hammer:
Bonjour Bonjour,

L'intérêt en faite (dans un futur proche :p) et de calculer le taux d'inactivité d'un serveur (entre un halt et un boot pour la solution proposée)

et avoir les deux derniers boot et halt (avec un tail -2 nom du fichier) pour calculer le nombre de min et par la suite le taux en %.

mais j'aimerais pouvoir extraire le nombre de seconde

1217333533 12:12:13 2008/07/29
1217333539 12:12:19 2008/07/29

je sais que linux peut faire ca,mais je trouve pas de solution!!

N.B : j'ai lu comme quoi MRTG propose un solution avec des graphes mais seulement pour les routeurs !!!
je sais pas si vous connaissez un peu le soft,mais si vous pouvez me proposer meilleur solution,je suis preneur...
Merci