30

marrant comme systeme smile
avatar

31

sinon orion_ nohup c'est pour détacher ton process de ta console

si tu lances une séquence de "ssh machine commande" dans un script ca se fera séquentiellement même si t'appelles des machines différentes.

A la limite "ssh machine commande &" mais ca reste attaché à ta session

le best c'est donc "nohup ssh machine commande > stdout.machine.txt &" comme ça en plus tu détaches; tu rediriges ta sortie sur un fichier et c'est pas le bordayl sur ton terminal.

32

ben non, c'est pas ce qu'il veut faire...
la si la connexion était perdue par exemple la commande serait terminée, et meme en supposant la connexion parfaite ca ferait tjs un processus inutile qui tourne ; il pourrait plutot faire un truc du style "ssh machine nohup commande", mais ca fait encore un processus inutile qui tourne (qu'on peut en fait killer des que le programme a commencé a s'exécuter)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

33

puisque dans les deux cas ca ferait un processus inutile, autant faire nohup ssh machine commande comme ça tu peux lancer plusieurs tâches en parallèle depuis la machine qui distribue, pake avec

#!/bin/sh
ssh machine1 commande
ssh machine2 commande

le script va attendre que la commande soit finie sur machine 1 avant de la lancer sur machine 2 triso vachement parallèle comme truc!

34

bah ca c'est orthogonal, tu peux rajouter un & si tu veux dans le script qui appelle ssh, mais il FAUT rajouter un nohup a l'intérieur de la commande ssh pour pas qu'une perte de connexion termine le processus...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

35

ah oui je vois ce que tu veux dire mainant. donc faut deux détachements grin

36

pas forcément, tu peux tres bien faire un script qui lance ssh, et qui rend la main en killant le processus ssh des que le programme s'est correctement lancé, c'est mille fois plus propre (tu perds juste qqs secondes au lancement si tu les lances pas en parallele, mais meme si tu lances en parallele t'es plus obligé de les détacher, et il vaut mieux meme éviter de les détacher pour savoir si tout s'est bien lancé correctement : si ton script de lancement termine sans faire d'erreur, tu es sur que tout s'est bien lancé, alors que si tu détaches les ssh, t'as pas la moindre garantie)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

37

squale92 :
y'a pas un moyen de lancer un programme en arrière plan de façon à ce qu'il ne soit pas tué quand son père (ta console ouverture via ssh) meurt ?
de la sorte, tu te connectes, tu lance ton prog en arrière-plan, tu te déconnectes, et le prog continue à tourner jusqu'à ce qu'il ait fini...

Les programmes ne sont pas tués quand le père meurt.
C'est ton shell qui les tue volontairement.

Dans le cas de bash, tu peux détacher bash d'un programme avec la pseudocommande disown

38

Ah sinon, quel est l'intérêt exact d'utiliser nohup au lieu de faire une simple redirection des entrées-sorties ?

39

détacher directement le processus au lieu de le laisser attacher au shell triso (le ppid devient 1[init])

40

[cross]
DESCRIPTION Run COMMAND, ignoring hangup signals.

Ce qui revient au meme que de faire un disown, avec la différence que ca demande pas un shell spécial comme bash/zsh, et que c'est plus simple en non-interactif... (ssh machine "nohup commande", alors que ca doit etre pas mal plus compliqué avec disown)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

41

./37> ah, ok
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

42

squalyl^2> sauf que ceci n'a pas le moindre intérêt à moins que le programme exécuté utilise son ppid (c'est très rare)
Pollux> de toutes façons les shells qui n'ont pas d'équivalent de disown n'envoient pas de SIGHUP aux programmes qu'ils ont lancés.

ssh etherstream 'tail -f </dev>/dev/null 2>&1 &'Donne le résultat escompté (ssh termine immédiatement, et tail continue de tourner sur la machine distante)