OVH Cloud OVH Cloud

un script dans un screen

9 réponses
Avatar
Joel
Bonjour,
ce que je veux faire est tres simple mais je n'y arrive pas.

Je veux faire un script (bash) qui execute exactement cela:

screen -S monscreen
ls
Ctrl-A D

Facile non ?
(linux je suis en mandrake 9.2)

Voici les tests effectué:

_____________
screen -S monscreen
ls
screen -d

RESULTAT :
mon screen est bien créé mais il attend que j'exit ou je ctrl A D pour
executer le ls


______________
screen -S monscreen ls
screen -d

RESULTAT :
mon screen est bien créé la commande ls est lancée mais le screen ce
"termine" avant le "screen -d" qui me repond qu'il n'y a pas de screen.



Bref je seche,
Merci pour vos réponses.


Joel

PS le but est de pouvoir revenir a mon screen en fesant : screen -r
monscreen

9 réponses

Avatar
Stephane Chazelas
2004-08-3, 16:22(+02), Joel:
Bonjour,
ce que je veux faire est tres simple mais je n'y arrive pas.

Je veux faire un script (bash) qui execute exactement cela:

screen -S monscreen
ls
Ctrl-A D
[...]


Si j'ai bien compris, tu veux:

- lancer un nouveau screen dans le terminal courant
- que ce screen lance un shell dans une "fenetre" screen
- que ce shell soit interactif comme d'hab mais qu'il lance (une
fois initialisé (juste apres qu'il ait affiché son prompt?)
une commande ls.
- qu'une fois cette commande terminee, screen se detache du
terminal courant.
- tout en ayant pendant ce temps acces au clavier a ce screen?

?

Ce n'est pas "tres simple".

Est-ce bien ca que tu veux faire et pourquoi ? Et quel est ton
shell ?

--
Stephane

Avatar
Philippe Delsol
Bonjour,
ce que je veux faire est tres simple mais je n'y arrive pas.


[snip]

C'est pour un cas d'école ?
Sinon j'vois pas bien l'intérêt.

Philippe

Avatar
Joel
"Stephane Chazelas" wrote in message
screen -S monscreen
ls
Ctrl-A D
[...]


Si j'ai bien compris, tu veux:

- lancer un nouveau screen dans le terminal courant
- que ce screen lance un shell dans une "fenetre" screen
- que ce shell soit interactif comme d'hab mais qu'il lance (une
fois initialisé (juste apres qu'il ait affiché son prompt?)
une commande ls.
- qu'une fois cette commande terminee, screen se detache du
terminal courant.
- tout en ayant pendant ce temps acces au clavier a ce screen?

Ce n'est pas "tres simple".

Est-ce bien ca que tu veux faire et pourquoi ? Et quel est ton
shell ?


Merci pour vos reponse, je detaille:

Prenons un logiciel quelconque genre edonkey (ce n'est pas du tout
l'utilisation que je veux en faire, mais l'exemple correspond tres bien)
nous dirons que c'est un programme qui se lance par la commande edonkey et
que son interface est textuelle.
En fait le but de la manoeuvre est de lancer au démarrage de mon serveur la
commande edonkey et de pouvoir l'utiliser de temps a autre.

Actuellement ce que je ferais ca serai:
- je demarre mon serveur
- je lance je m'identifie via ssh (shell bash)
- puis:
screen -S monscreenedonkey
- une fois dans le screen je lance ma fameuse commande:
edonkey
- et je peux maintenant lancer des telechargement (si il y en avais des en
cours, ils reprennent)
- je fais Ctrl+A - D ce qui detache mon screen de ma session.
- je bosse normalement
- je quitte ma session
- je reviens sous une autre session
- je lance:
screen -r monscreenedonkey
- et la je peux voir ou en sont mes téléchargement.

Ce que je voudrais, c'est que les 6 premiers points (jusqu'au Ctrl A D
inclu) soit fait automatiquement dans mon init.d


Voila, j'espere avoir etait plus clair

Merci

Joel


Avatar
Stephane Chazelas
2004-08-4, 11:02(+02), Joel:
[...]
Prenons un logiciel quelconque genre edonkey (ce n'est pas du tout
l'utilisation que je veux en faire, mais l'exemple correspond tres bien)
nous dirons que c'est un programme qui se lance par la commande edonkey et
que son interface est textuelle.
En fait le but de la manoeuvre est de lancer au démarrage de mon serveur la
commande edonkey et de pouvoir l'utiliser de temps a autre.
[...]


La, c'est beaucoup plus simple:

screem -mdS monscreenedonkey edonkey

Qui lance "edonkey" dans un nouveau ("-m") "screen" que l'on
detache ("-d").

--
Stephane

Avatar
Joel
La, c'est beaucoup plus simple:

screem -mdS monscreenedonkey edonkey

Qui lance "edonkey" dans un nouveau ("-m") "screen" que l'on
detache ("-d").



Merci beaucoup je savais que c'etait simple :)
Le probleme c'est que lorsque la commande se termine, le screen se ferme, et
donc avec "ls" comme test, mon screen se fermait immediatement.

D'ailleurs y'a t'il un moyen d'embecher le screen de se fermer apres la
commande ? (exemple, mon edonkey plante, et je ne veux pas que le screen se
ferme)
j'ai bien une idée, en fesant un
screen -mdS ms bash
ou truc du genre ....

Merci encore

Avatar
Stephane Chazelas
2004-08-4, 12:35(+02), Joel:
[...]
D'ailleurs y'a t'il un moyen d'embecher le screen de se fermer apres la
commande ? (exemple, mon edonkey plante, et je ne veux pas que le screen se
ferme)
[...]


Tu peux faire

screen -mdS ms bash -c 'edonkey || read -p "press enter to close"'

--
Stephane

Avatar
Joel
screen -mdS ms bash -c 'edonkey || read -p "press enter to close"'


Merci beaucoup,

derniere question, mon script dans init.d lance
screen -mdS ms edonkey

le probleme c'est que je suis pas dans le bon repertoire. Disons que edonkey
ai besoin d'etrelancer depuis le repertoire /home/edonkey pour trouver ses
repertoires et fichiers de config.

ce que j'ai fait pour palier ce probleme c'est :
un script runedonkey contenant:
cd /home/edonkey
edonkey

ce script est lancé par mon init.d
screen -mdS ms runedonkey

Cela marche mais je trouve pas ca tres elegant. Y a mieux ?

Avatar
Stephane Chazelas
2004-08-4, 16:49(+02), Joel:
screen -mdS ms bash -c 'edonkey || read -p "press enter to close"'


Merci beaucoup,

derniere question, mon script dans init.d lance
screen -mdS ms edonkey

le probleme c'est que je suis pas dans le bon repertoire. Disons que edonkey
ai besoin d'etrelancer depuis le repertoire /home/edonkey pour trouver ses
repertoires et fichiers de config.
[...]


Et

(cd /home/edonkey && screen -mdS ms edonkey)

ne marche pas ?

--
Stephane


Avatar
Joel
derniere question, mon script dans init.d lance
screen -mdS ms edonkey

le probleme c'est que je suis pas dans le bon repertoire. Disons que
edonkey


ai besoin d'etrelancer depuis le repertoire /home/edonkey pour trouver
ses


repertoires et fichiers de config.
[...]

(cd /home/edonkey && screen -mdS ms edonkey)


ne marche pas ?



Si, parfaitement merci beaucoup.