Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
pidof interne et externe différents

Bonjour

Dans le but de suspendre proprement l'éxécution de
#!/bin/bash

   ## Disconnects Idle Virtual_terminals Automatically

export LC_TIME=C

pidof -x $0 >/var/run/$(basename $0).pid

while :
do
 idle_tty2stop=$(who -u | awk -F" " '$6 ~/5$/ { print $7 }')
 tty2watch=$(who -u | awk -F" " '$6 ~/5$/ { print $6 }' | cut -d: -f2)
 for i in $tty2watch; do
  [ $tty2watch -gt "4" ] && tput reset
  kill -s TERM $idle_tty2stop > /dev/null 2>&1
 done
 sleep 60
done &
j'ai adapté le skeleton disponible dans /etc/init.d.

DIVA se lance au démarrage de la machine, et s'éxécute correctement (au bout de 5mn d'inactivité, les terminaux virtuels sont déconnectés).
Mais, lorsque j'entre `/etc/init.d/diva stop` rien ne se passe. Et pour cause!
pidof -x /usr/sbin/diva
3330
cat /var/run/diva.pid
3328

Je ne comprend pas pourquoi il y a une différence de PID selon qu'il est demandé depuis le script, ou depuis le shell...
?


Poste le Thursday 26 June 2008 12:49:59
Répondre     Citer    
Re: pidof interne et externe différents

Bon, je crois avoir trouvé ce qui ne va pas. Ce serait le "done &".

Si j'ai bien compris, pour passer en arrière-plan, un script se duplique, donc forcément, le pid envoyé à /var/run/script.pid au début du script ne correspond pas à celui de son éxécution en arrière-plan...
?

J'ai supprimé le "&", ajouté --background à la function do_start dans l'adaptation du /etc/init.d/skeleton pour faire passer le script en arrière-plan, et ça semble rouler (pidof -x /usr/sbin/diva, et cat /var/run/diva.pid coïncident désormais !).

/etc/init.d/diva stop # arrête le daemon : je vais pouvoir monitorer pendant des heures sans être interrompu toutes les 5mn...^^

"Il est content, Gaëtan !!!"

Poste le Thursday 26 June 2008 18:05:14
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
pidof interne et externe différents
Un problème avec une commande du shell ? Comment utiliser la crontab ? Vous avez des soucis pour la gestion réseau sous Linux ? Pour vous la gestion des utilisateurs/groupes est du chinois ? Etc... Posez donc vos questions ici.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons