Pages : 1
#1 Le 04/09/2008, à 11:11
- ®om
gnome-terminal -e ??
Salut,
Il est possible de lancer un gnome-terminal en lui passant des paramètres.
Par exemple :
gnome-terminal -t 'Un titre' -e 'unecommande'
Ça marche bien.
Le problème, c'est que je voudrais une commande un peu plus complexe, sans pour autant exécuter un script.
En l'occurrence, je voudrais :
gnome-terminal -t 'Un titre' -e 'unscript ; sleep 3'
(exécuter un script, et attendre 3 secondes avant de fermer le terminal, pour avoir le temps de lire les retours)
Et là, ça n'exécute que la première commande.
Comment exécuter plusieurs commandes à la suite en paramètre de gnome-terminal?
Ça m'embête de créer un script juste pour faire un sleep juste après l'exécution d'un autre script.
Hors ligne
#2 Le 04/09/2008, à 11:34
- Alain.g
Re : gnome-terminal -e ??
Salut
Je n'utilise pas gnome-terminal mais en tout cas ça fonctionne avec xterm
testé avec :
xterm -e 'date ; sleep 3'
D'ailleurs faudrait voir s'il n'y a pas une option appropriée d'xterm, je sais par exemple qu'il y a -hold pour maintenir ouvert.
Dernière modification par Alain.g (Le 04/09/2008, à 11:35)
Xubuntu Karmic !
Hors ligne
#3 Le 04/09/2008, à 12:51
- rniamo
Re : gnome-terminal -e ??
gnome-terminal -x = xterm -e
sinon tu peux utiliser && pour faire ton script non ?
gnome-terminal -x cmd && sleep 3
Dernière modification par rniamo (Le 04/09/2008, à 12:52)
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#4 Le 04/09/2008, à 13:28
- ®om
Re : gnome-terminal -e ??
Salut
Je n'utilise pas gnome-terminal mais en tout cas ça fonctionne avec xterm
testé avec :xterm -e 'date ; sleep 3'
D'ailleurs faudrait voir s'il n'y a pas une option appropriée d'xterm, je sais par exemple qu'il y a -hold pour maintenir ouvert.
Merci beaucoup, j'ai donc utilisé xterm au lieu de gnome-terminal.
Pour info, c'est pour monter les répertoires de mon fixe sur mon portable, j'ai deux scripts respectivement pour monter et démonter les répertoires distants :
sshfs-mount :
#!/bin/sh
echo mounting rom-desktop...
sshfs -C rom-desktop:/ /net/.rom-desktop
sshfs-umount :
#!/bin/sh
echo umounting rom-desktop...
fusermount -u /net/.rom-desktop
Depuis longtemps, j'avais un lanceur dans la barre du haut de gnome (d'ailleurs, quel est son nom? "barre des tâches"?), qui se contentait d'exécuter le script, ça marchait bien, mais je n'avais aucun retour.
J'ai donc modifié les lanceurs, maintenant :
xterm -T 'SSHFS mount' -e 'sshfs-mount; sleep 2'
xterm -T 'SSHFS umount' -e 'sshfs-umount; sleep 2'
Et maintenant, c'est nickel (sauf que xterm c'est pas très design, mais bon)
Hors ligne
#5 Le 04/09/2008, à 13:31
- ®om
Re : gnome-terminal -e ??
gnome-terminal -x = xterm -e
sinon tu peux utiliser && pour faire ton script non ?
gnome-terminal -x cmd && sleep 3
Malheureusement ça ne marche pas.
Ça exécute cmd dans le nouveau gnome-terminal, et une fois que c'est fait, ça attend 3 seconde (ça n'est pas le nouveau gnome-terminal qui attend 3 secondes).
J'ai essayé :
gnome-terminal -x 'echo salut && sleep 3'
Mais ça ne marche pas non plus : Il y a eu une erreur lors de la création du processus fils pour ce terminal.
Dernière modification par ®om (Le 04/09/2008, à 13:32)
Hors ligne
#6 Le 04/09/2008, à 18:26
- ®om
Re : gnome-terminal -e ??
Arf, en fait ça marche pas comme je veux avec xterm, ça exécute bien sshfs-mount, mais dès que le sleep est passé, et que le xterm se ferme, les dossiers sont démontés o_O
Hors ligne
#7 Le 04/09/2008, à 19:08
- ®om
Re : gnome-terminal -e ??
Ça me fait pareil si je rajoute le sleep 2 dans sshfs-mount, et que j'appelle :
gnome-terminal -e sshfs-mount
ou encore
gnome-terminal -x sshfs-mount
Et c'est pareil aussi si dans mon lanceur j'indique "application dans un terminal" et que la commande est simplement sshfs-mount.
sshfs n'a pas l'air d'apprécier quand le terminal à partir duquel il a été lancé se ferme... Mais ça le fait pas quand je le lance manuellement, donc c'est étonnant. Mystère...
Dernière modification par ®om (Le 04/09/2008, à 19:16)
Hors ligne
#8 Le 04/09/2008, à 19:16
- Totor
Re : gnome-terminal -e ??
Voici une solution :
xterm -T 'SSHFS mount' -e 'nohup sshfs-mount && tail -f nohup.out' &
mais il y a une contrainte :
il te faut faire un CTRL+C pour arrêter l'affichage du contenu du fichier nohup.out et donc fermer le xterm.
-- Lucid Lynx --
Hors ligne
#9 Le 04/09/2008, à 19:20
- ®om
Re : gnome-terminal -e ??
OK, mais dès que je fais ça (Ctrl+C), les dossiers sont démontés également...
Je ne comprends pas le problème en fait. Un bug de sshfs (un descripteur de fichier non fermé?)?
Dernière modification par ®om (Le 04/09/2008, à 19:33)
Hors ligne
#10 Le 04/09/2008, à 19:28
- Totor
Re : gnome-terminal -e ??
c'est étonnant car nohup te permet d'exécuter ton script complètement indépendamment du process xterm et du bash qu'ouvre xterm. Du coup, le process sshfs-mount pour montage des FS est censé ne plus avoir de lien avec le process xterm (qui n'est pas son père).
-- Lucid Lynx --
Hors ligne
#11 Le 04/09/2008, à 19:37
- ®om
Re : gnome-terminal -e ??
Le nohup sshfs-mount ça marche, mais si je Ctrl+C pendant le tail, ça démonte...
Hors ligne
#12 Le 04/09/2008, à 19:54
- Totor
Re : gnome-terminal -e ??
et ceci :
xterm -T 'SSHFS mount' -e '(rm nohup.out && nohup sshfs-mount &); (sleep 1;tail -f nohup.out)' &
Dernière modification par Totor (Le 04/09/2008, à 20:17)
-- Lucid Lynx --
Hors ligne
#13 Le 04/09/2008, à 20:04
- ®om
Re : gnome-terminal -e ??
Ah ouais, là ça marche, merci (vive la bidouille ^^).
Mais ça me dérange encore qu'il faille faire Ctrl+C.
Je souhaiterais juste que la feêtre s'affiche le temps du démarrage, et se ferme toute seule.
Hors ligne
#14 Le 04/09/2008, à 20:15
- Totor
Re : gnome-terminal -e ??
Ton fichier sshfs-mount est à changer comme suit :
#!/bin/sh
echo mounting rom-desktop...
sshfs -C rom-desktop:/ /net/.rom-desktop
if [ $? -eq 0 ]; then
echo ok
else
echo ko
fi
et ensuite, à la place du tail -f nohup.out :
while [ -z "$(egrep 'ok|ko' nohup.out)" ]; do sleep 1;done; cat nohup.out;sleep 2
biensûr, adapte à ta guise
Dernière modification par Totor (Le 04/09/2008, à 20:16)
-- Lucid Lynx --
Hors ligne
#15 Le 04/09/2008, à 20:35
- ®om
Re : gnome-terminal -e ??
OK, merci, c'est un peu de la bidouille quand même
Mais la source du problème c'est quoi? Ça devrait être corrigé dans sshfs?
Hors ligne
#16 Le 04/09/2008, à 20:49
- Totor
Re : gnome-terminal -e ??
Je ne connais pas le fonctionnement de sshfs mais je suppose qu'il doit rester en mémoire. Et donc, le process doit tourner tel un "daemon". Or si tu ne le détache pas du processus père, dès que ce dernier se termine, il tue tous ses fils.
C'est pourquoi il faut le lancer en "nohup".
EDIT : après, dans ton cas, la difficulté était que tu souhaitais que ton term se ferme sur fin du montage ...c'était donc un événement à détecter (d'où les modifs dans ton script) et la boucle while. le rm du fichier nohup.out est nécessaire car nohup n'écrase pas le fichier s'il existe déjà.
Dernière modification par Totor (Le 04/09/2008, à 20:55)
-- Lucid Lynx --
Hors ligne
Pages : 1