Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/04/2011, 16h44   #1
Nouveau Membre du Club
 
MOREL
Étudiant
Inscription : mai 2008
Messages : 77
Détails du profil
Informations personnelles :
Nom : MOREL
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 77
Points : 29
Points : 29
Par défaut Redirection vers une console xterm

Bonjour,
je dois créer un script qui lance environ 2048 un exécutable en C.
Seul problème dans le sujet c'est que je dois faire cela :

Machine pas du tout chargée, pas d'affichage des retards à chaque appel de la fonction.
--> Donc a cette endroit là, je dois lancer mon programme seul

Affichage de résultats pendant le fonctionnement du programme dans une console linux (sans le multifenêtrage : Ctr-Alt-F1)
--> Je pensais ouvrir une terminal avec Ctrl+Alt+F1 en faisant comme ceci :
Code :
1
2
3
4
5
6
7
8
#On appuie sur les touches "Ctrl-l"+"Alt-l"+"F1"
#xsendkeycode 37 1
#xsendkeycode 64 1
#xsendkeycode 67 1
#On relache les touches "Ctrl-l"+"Alt-l"+"F1"
#xsendkeycode 37 0
#xsendkeycode 64 0
#xsendkeycode 67 0
Mais je ne sais pas si c'est possible ensuite de lancer l'affichage de mon programme qui s'exécute dans ma console dans ce terminal

Affichage de résultats pendant le fonctionnement du programme dans une console xterm
+ création de 4 gros .tar.gz
+ création de 8 gros .tar.gz

--> Pareil pour xterm, je ne sais pas comment faire afficher mes résultats dans le xterm.
Je pensais a quelque chose du genre :
Code :
./_wk/test > "$envexec"
sachant que envexec contient xterm mais ce n'est pas viable...
De plus le coup des archives à créer est un peu nébuleux pour moi car mes archives doivent être créer uniquement pendant que mes résultats se calcule et s'affiche et doivent se stopper arriver à la fin pour ne pas empiéter sur le calcul et l'affichage des valeurs suivantes.

Je ne sais pas si j'ai été très clair, j'avoues avoir du mal a expliquer mon problème.

Voilà mon script.sh si cela peut aider les personnes qui pourraient m'aider.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/bash
 
#Touche espace : code 65
#On appuie sur les touches "Ctrl-l"+"Alt-l"+"F1"
#xsendkeycode 37 1
#xsendkeycode 64 1
#xsendkeycode 67 1
#On relache les touches "Ctrl-l"+"Alt-l"+"F1"
#xsendkeycode 37 0
#xsendkeycode 64 0
#xsendkeycode 67 0
 
#login -f liszto
 
#
for l in "a" "p" 
do 
	for j in {1..4}; 
	do 
		if [ $j = '1' ]
		then
			prio="nice -n 19"			
		elif [ $j = '2' ]
		then
			prio=""
		elif [ $j = '3' ]
		then
			prio="nice -n -20"
		else
			prio="t"
		fi
		for k in {1..5};
		do
			if [ $k = '1' ]; then
				envexec="";			
			elif [ $k = '2' ]; then
				envexec="env2";
			elif [ $k = '3' ]; then
				envexec="xterm";
			elif [ $k = '4' ]; then
				envexec="tar -czf test.tar.gz ../../TP_Segmentation_Chiki";
			else
				envexec="env5";
			fi
			for i in 100 1000 10000 100000;
			do
				echo "Execution en mode $l avec une priorité $prio un environnement $envexec et une période de $i" 
				if [ "$prio"="t" ]
				then
					./_wk/test > "$envexec" 
					#./_wk/test "$prio"			
				else		
					"$envexec"		
					#"$prio" ./_wk/test			
				fi			
			done					
		done 
	done
done
P.S : Les variables contenant env2, env3, env5 sont juste la pour tester que je passe bien dedans mais ne contiennent en aucun cas ce qu'elles devraient.

Cordialement.
byakuichi est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/04/2011, 08h21   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
si il s'agit juste d'avoir l'affichage de chaque application dans son propre terminal, ton lanceur doit simplement lancer :

Code :
1
2
xterm -e appli_numero_1 arguments
xterm -e appli_numero_2 arguments
etc....


ainsi chaque programme à son terminal et son affichage.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 09h55   #3
Membre éclairé
 
Avatar de FRUiT
 
Homme
Inscription : février 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2011
Messages : 83
Points : 326
Points : 326
Si tu es logué dans la console virtuelle 1 :
Code :
1
2
 
echo "foo bar" >/dev/tty1
Si ce n'est pas le cas :
Code :
1
2
 
echo "foo bar" | sudo tee /dev/tty1 >/dev/null
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
FRUiT est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 06/04/2011, 12h41   #4
Nouveau Membre du Club
 
MOREL
Étudiant
Inscription : mai 2008
Messages : 77
Détails du profil
Informations personnelles :
Nom : MOREL
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 77
Points : 29
Points : 29
@FRUIT :
Merci, ta solution marche à merveille et correspond tout à fait à ce que je voulais faire

@frp31 :
J'aimerais faire en fait comme la solution de FRUIT mais pour xterm, cela n'est pas possible ?
byakuichi est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/04/2011, 13h13   #5
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
si mais c'est plus complexe il faut jouer avec les noms des xterm
sur le même principe en utilisant le device
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 13h28   #6
Nouveau Membre du Club
 
MOREL
Étudiant
Inscription : mai 2008
Messages : 77
Détails du profil
Informations personnelles :
Nom : MOREL
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 77
Points : 29
Points : 29
A priori, je n'ouvrirais qu'un seul xterm et c'est dans celui-ci que je redirigerais l'affichage de mon programme que je lance en boucle dans mon script.
Donc au niveau gestion des noms de mes xterms, il n'y en aurait qu'un seul.
byakuichi est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/04/2011, 13h38   #7
Membre éclairé
 
Avatar de FRUiT
 
Homme
Inscription : février 2011
Messages : 83
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2011
Messages : 83
Points : 326
Points : 326
Solution qui redirige dans le premier xterm ouvert :
Code :
1
2
3
4
xpid=$(ps ax | awk '/[x]term/ { print $1 ; exit }')
xtty="/dev/$(ps --ppid $xpid --no-headers | awk '{ print $2 }')"
 
echo "foo bar" >$xtty
__________________
Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
FRUiT est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 07/04/2011, 09h54   #8
Nouveau Membre du Club
 
MOREL
Étudiant
Inscription : mai 2008
Messages : 77
Détails du profil
Informations personnelles :
Nom : MOREL
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2008
Messages : 77
Points : 29
Points : 29
Je vous remercies pour votre aide qui m'aura été précieuse !

Juste une dernière question et après j'aurai terminé avec mes questions de débutants

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
else
    if [ "$envexec" = "console"  ]; then
        "$prio" ./_wk/test >/dev/tty1
    elif [ "$envexec" = "xterm"  ]; then
        for m in {1..3};
        do
            if [ $m = '1' ]; then
                "$prio" ./_wk/test >$xtty        
            elif [ $m = '2' ]; then
                for a in {1..4}; do                                
                    tar zcvf test"$a".tar.gz ../*.JPG &
                done
                "$prio" ./_wk/test >$xtty        
            else
                for a in {1..8}; do                                
                    tar zcvf test"$a".tar.gz ../*.JPG &
                done
                    "$prio" ./_wk/test >$xtty        
            fi                        
        done
    else
    "$prio" ./_wk/test >$xtty
    fi                        
fi
L'aperçu de code ci-dessus est la fin de mon script et je dois faire en sorte que lorsque je redirige l'affichage de mon programme dans xterm, je dois le lancer de la façon suivant
Une fois dans xterm seulement
Une fois dans xterm avec création de 4 tar.gz
Une fois dans xterm avec création de 8 tar.gz

Ma question est la suivante :

Est-il possible de dire stop à la création de mes tar.gz une fois que l'affichage dans xterm est fini ? Car si les tar.gz durent plus longtemps ils vont se créer sur des tests de performance de mon programme où ils ne doivent pas surcharger la machine en écriture disque et par conséquent fausser mes résultats.
byakuichi est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h55.


 
 
 
 
Partenaires

Hébergement Web