jordav Posté(e) le 29 juin 2006 Partager Posté(e) le 29 juin 2006 Bonjour, j'aurais besoin de votre aide, s'il vous plait, concernant la commande ssh : sous linux via un shell "testdav1.sh" , je lance la commande suivante : ssh -l pandore alsace /pandore/serveur/specif/cirad/n/sh/testdav2.sh Sur ma machine alsace, le shell testdav2.sh fait juste un sleep 50. je me rends compte que lorsque je tue testdav1.sh, je me rends compte que testdav2.sh tourne toujours sur ma machine distante. Comment faire pour qu'il se tue en même temps que le père ? je vous remercie par avance, David Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 29 juin 2006 Partager Posté(e) le 29 juin 2006 il faut que tu envoies une nouvelle commande via ssh, genre killall testdav2.sh Lien vers le commentaire Partager sur d’autres sites More sharing options...
jordav Posté(e) le 29 juin 2006 Auteur Partager Posté(e) le 29 juin 2006 il faut que tu envoies une nouvelle commande via ssh, genre killall testdav2.sh ok mais tout cela est doit géré dans mon batch. Cela veut dire par exemple que lorque mon serveur tombe la nuit, je veux que les processus fils lancés par ssh soit également killés automatiquement. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 29 juin 2006 Partager Posté(e) le 29 juin 2006 et comment il s'arrête ton truc ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jordav Posté(e) le 29 juin 2006 Auteur Partager Posté(e) le 29 juin 2006 et comment il s'arrête ton truc ? mon processus père lance à distance son fils via ssh. - donc dans un situation normale, le fils s'éxécute et se termine, puis le père se termine ( cf mon premier message pour le code ) - maintenant si je kill mon père ( je le kill pour simuler ( = tester ) un incident technique tel que le serveur qui tombe ), je me rends compte que le fils tourne toujours. Hors je voudrais que le fils se kill également .... en même temps que le père. Voilà mon souci ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 29 juin 2006 Partager Posté(e) le 29 juin 2006 mhmm, en fait, tu voudrais un connection permanente entre les deux processus... j'ai une solution hyper bourrine : sur chacune des machine tu sotck le pid de ton process (/var/run), et tu fais un démon qui check chroniquement que ce processus existe sur l'autre machine (ssh ps $(cat /var/run/monpid) par exemple). si ps ne renvois rien alors il kill le processus local (kill -9 $(cat /var/run/monpid) par exemple) mais tu n'auras pas la synchro exacte (tout dépend du rafraichissement du démon) Lien vers le commentaire Partager sur d’autres sites More sharing options...
jordav Posté(e) le 29 juin 2006 Auteur Partager Posté(e) le 29 juin 2006 mhmm, en fait, tu voudrais un connection permanente entre les deux processus... j'ai une solution hyper bourrine : sur chacune des machine tu sotck le pid de ton process (/var/run), et tu fais un démon qui check chroniquement que ce processus existe sur l'autre machine (ssh ps $(cat /var/run/monpid) par exemple). si ps ne renvois rien alors il kill le processus local (kill -9 $(cat /var/run/monpid) par exemple) mais tu n'auras pas la synchro exacte (tout dépend du rafraichissement du démon) c'est en effet une solution, aussi bourrine soit elle, ca reste une solution ... Bizarre qu'il n'y ait pas d'option avec le ssh ... en tout cas merci pour ton aide Lien vers le commentaire Partager sur d’autres sites More sharing options...
nofun Posté(e) le 29 juin 2006 Partager Posté(e) le 29 juin 2006 le problème c'est que par défaut la connexion ssh est persistante sur le serveur (option TCPKeepAlive de ssh_config et sshd_config). Enfin en général c'est pratique : s'il y a une coupure momentanée de la connexion, la liaison ssh ne tombe pas. Dans ton cas ça ajoute de la latence. Mais tu peux placer cette option à 'no' et l'option ServerAliveInterval et ClientAliveInterval au nombre de secondes désirées (man ssh_config et man sshd_config). Comme commandes il y a pgrep et pkill qui peuvent être utiles. pgrep -f "sshd: pandore" # sur le serveur SSH ou pgrep -f "ssh -l pandore alsace /pandore/serveur/specif/cirad/n/sh/testdav2.sh" # sur le client SSH pkill -f "sshd: pandore" # ... édit: je vois ça dans le cadre d'un test sur le serveur SSH : if ! pgrep -f "sshd: pandore" then pkill ma_commande fi Je me demande si l'option -O de ssh ne correspondrait pas à tes besoins -O ctl_cmd Control an active connection multiplexing master process. When the -O option is specified, the ctl_cmd argument is interpreted and passed to the master process. Valid commands are: ``check'' (check that the master process is running) and ``exit'' (request the master to exit). Mais là c'est pas très clair ... à creuser. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 30 juin 2006 Partager Posté(e) le 30 juin 2006 oui ? Rien, j'ai fait du ménage (theo) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.