Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fermer ssh sans arreter la commande

8 réponses
Avatar
frandicz
Bonjour,

J'aimerais savoir s'il est possible de lancer un programme depuis une
connexion ssh en acces distant, et de fermer la connexion ssh sans
fermer le programme. Le but est de pouvoir lancer depuis un client putty
une commande qui prend deux heures a s'executer sur le serveur ssh, et
de pouvoir arreter putty immediatement, sans arreter la commande. (putty
est un client ssh pour windows).

Il existe des solutions complexes comme creer une tache pour crond en
utilisant juste un editeur par ssh, mais j'aimerais le faire plus
facilement.

Merci.

8 réponses

Avatar
Melmoth
Dans l'article ,
On Sun, 24 Oct 2004 19:59:33 +0200, frandicz wrote:

Bonjour,


Bonjour

J'aimerais savoir s'il est possible de lancer un programme depuis une
connexion ssh en acces distant, et de fermer la connexion ssh sans
fermer le programme.




installes screen


Avatar
Nicolas George
Rakotomandimby Mihamina wrote in message
:
En utilisant l'opérateur '&' à la fin de l'instruction à executer.
Attention si tu as une ligne du genre :

updatedb ; find / -name toto.txt &

tu devra attendre la fin de updatedb .


Et tu perds aussi la sortie du find. Il faut penser à rediriger les sorties
dans ce cas.

D'ailleurs, selon les cas, OpenSSH ne considèrera pas la session terminée
avant que tous les file-descriptors sur le terminal n'aient été fermés.

dans ce genre de cas, moi, je mets ces deux trucs dans un script et c'est
le scritp que je lance avec '&' ...


Tu peux écrire ça « { commande1; commande2; } & ».

Sinon, il y a screen qui peut être intéressant, avec les possibilités de
détacher la session. man screen.

Avatar
dominique becaert

J'aimerais savoir s'il est possible de lancer un programme depuis une
connexion ssh en acces distant, et de fermer la connexion ssh sans
fermer le programme. Le but est de pouvoir lancer depuis un client putty
une commande qui prend deux heures a s'executer sur le serveur ssh, et
de pouvoir arreter putty immediatement, sans arreter la commande. (putty
est un client ssh pour windows).


Voir la commande screen. Notamment l'option detach.
Une petite URL : http://linuxfr.org/tips/133.html
--
Jusqu'ici, tout va bien ...

Avatar
Rakotomandimby Mihamina
On Sun, 24 Oct 2004 19:59:33 +0200, frandicz wrote:

Bonjour,


Bonjour

J'aimerais savoir s'il est possible de lancer un programme depuis une
connexion ssh en acces distant, et de fermer la connexion ssh sans
fermer le programme.


Oui,
En utilisant l'opérateur '&' à la fin de l'instruction à executer.
Attention si tu as une ligne du genre :

updatedb ; find / -name toto.txt &

tu devra attendre la fin de updatedb .
dans ce genre de cas, moi, je mets ces deux trucs dans un script et c'est
le scritp que je lance avec '&' ...

En gros:
mets un & apres ta commande, elle s'executera en background.

Fais des tests ...
--
ASPO Infogérance - http://aspo.rktmb.org/activites/infogerance
Unofficial FAQ fcolc - http://faq.fcolc.eu.org/
Linux User Group sur Orléans et alentours.
Tél: + 33 2 38 76 43 65 (France)

Avatar
Bruno Mathieu
frandicz wrote:

Bonjour,

J'aimerais savoir s'il est possible de lancer un programme depuis une
connexion ssh en acces distant, et de fermer la connexion ssh sans
fermer le programme.


Sans installer screen :

Une solution simple est d'utiliser & pour lancer en tâche de fond, en
redirigeant les sorties (1>sortie 2>erreur) et en faisant précéder la
commande de nohup (info coreutils nohup) :

`nohup' runs the given COMMAND with hangup signals ignored, so that
the command can continue running in the background after you log out.
Synopsis:

nohup COMMAND [ARG]...

ça donne

bash # nohup commandelongue >sortie 2>erreur &
bash # logout

--
Bruno

Avatar
Nicolas George
Bruno Mathieu wrote in message
<dxTed.8628$:
bash # nohup commandelongue >sortie 2>erreur &


En l'occurence, c'est plus le & que le nohup qui a un effet, en fait.
L'utilité de nohup est assez négligeable.

Avatar
Moulin Mathieu
Nicolas George wrote:

En l'occurence, c'est plus le & que le nohup qui a un effet, en fait.
L'utilité de nohup est assez négligeable.


Nan ...
Si on ferme la session ssh, le process est tué dans la foulée avec un &,
mais il es détaché visuellement de la console.

Avec un nohup, la fermeture de ssh ne se répercute pas sur le process en
question.

Tout dépend de ce qu'on veut.
Si tu vas dans un cyber pour lancer ta commande et qu'elle met 2 heures à
tourner, t'es obligé d'y rester, sauf si tu fais un nohup.
Si tu lance des commandes qui prennent 2 minutes et que tu veux faire des
trucs à côté, alors un & suffit.

----------------
Mathieu Moulin - lemathou at free point fr
Linux ? Ma liberté ...

Avatar
Nicolas George
Moulin Mathieu wrote in message
<417c4e87$0$29506$:
Nan ...
Si on ferme la session ssh, le process est tué dans la foulée avec un &,
mais il es détaché visuellement de la console.


Tant pis pour toi, tu l'auras voulu :-Þ

Les processus sont groupés d'abord par sessions, puis par groupe. Chaque
session peut (ou pas) avoir un terminal de contrôle, et un terminal ne peut
contrôler au plus qu'une session. Quand un terminal est associé à une
session, l'un des groupes de cette session est désigné comme groupe d'avant
plan, les autres commes groupes d'arrière plan. Lorsque le terminal est
fermé (notion qui n'est pas forcément clair dans tous les cas, mais n'a pas
d'ambiguïté pour un pseudo-terminal), le noyau synthétise un SIGHUP pour :

- le processus leader de session, s'il existe ;

- le groupe d'avant plan.

En particulier, les groupes d'arrière plan ne reçoivent pas de signaux.

Si le shell fait bien son boulot, toute commande lancée l'est dans son
propre process group, d'avant plan en général, d'arrière plan avec &. Dans
ces conditions, un processus lancé avec & (et non ré-attaché ensuite) est
dans un groupe d'arrière plan et n'est pas concerné par le SIGHUP.

En revanche, certains shells prennent sur eux d'envoyer eux-mêmes, quand ils
se terminent, un SUGHUP aux groupes d'arrière plan qu'ils pensent contrôler.

Si tu veux lancer un processus et fermer le terminal, il suffit :

- d'éventuellement rediriger les entrées-sorties ;

- de le lancer en arrière plan ;

- de faire en sorte que le shell le laisse tranquile (avec zsh, c'est la
builtin disown).

Il ne se prendra pas de SIGHUP. Et nohup n'a servi à rien.