jordav Posted June 29, 2006 Share Posted June 29, 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 Link to comment Share on other sites More sharing options...
lorinc Posted June 29, 2006 Share Posted June 29, 2006 il faut que tu envoies une nouvelle commande via ssh, genre killall testdav2.sh Link to comment Share on other sites More sharing options...
jordav Posted June 29, 2006 Author Share Posted June 29, 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. Link to comment Share on other sites More sharing options...
lorinc Posted June 29, 2006 Share Posted June 29, 2006 et comment il s'arrête ton truc ? Link to comment Share on other sites More sharing options...
jordav Posted June 29, 2006 Author Share Posted June 29, 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 ... Link to comment Share on other sites More sharing options...
lorinc Posted June 29, 2006 Share Posted June 29, 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) Link to comment Share on other sites More sharing options...
jordav Posted June 29, 2006 Author Share Posted June 29, 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 Link to comment Share on other sites More sharing options...
nofun Posted June 29, 2006 Share Posted June 29, 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. Link to comment Share on other sites More sharing options...
lorinc Posted June 30, 2006 Share Posted June 30, 2006 oui ? Rien, j'ai fait du ménage (theo) Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.