Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 29-04-2012 22:19:50

daan
Membre
Distrib. : Wheezy
Noyau : 3.2.0-4-686-pae
(G)UI : openbox
Inscription : 03-03-2012
Messages : 44

[résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Bonjour,

je cherche a rédiger un petit script qui me permettrait de mettre en place rapidement l'un de mes designs de bureau.
Par design j'entends: lancement d'un ou plusieurs fichiers tint2 et lancement d'un ou plusieurs fichiers conky.
Dans l'idée j'adapterai ce scripte a mes différents designs et je lancerait les différentes variantes a l'aide d'une entrée dans le menu « clic droit » d'openbox.

Pour ce faire je pensais déclarer 3 variables pour tint2 et 3 variables pour conky :

PremierTint2=''
DeuxiemeTint2= ''
TroisiemeTint2=''
PremierConky=''
DeuxiemeConky= ''
TroisiemeConky=''

ces variables serraient renseignés par mes soins en fonction de ce que je souhaite voir apparaître sur mon bureau.
Dans mon idée je pensais mettre 0 aux variables non utilisées  ce qui m'amenait a un truc du style :

if [ ''$PremierTint2 '' != ''0'' ]
then
tint2 -c $HOME/.config/tint2/$PremierTint2
fi

if [ ''$DeuxiemeTint2 '' != ''0'' ]
then
tint2 -c $HOME/.config/tint2/$DeuxiemeTint2
fi

if [ ''$TroisiemeTint2 '' != ''0'' ]
then
tint2 -c $HOME/.config/tint2/$TroisiemeTint2
fi

et pareil pour conky.
Le probleme c'est que quand je lance le premier « tint2 » (tint2 -c $HOME/.config/tint2/$PremierTint2) cela empêche le lancement des suivants.

Pour que cela fonctionne il faudrait des « & » entre les différents « lancement »
exemple :

tint2 -c $HOME/.config/tint2/$PremierTint2 & tint2 -c $HOME/.config/tint2/$DeuxiemeTint2 & tint2 -c $HOME/.config/tint2/$TroisiemeTint2 & conky -c $HOME/.config/conky/$Premierconky &....

ainsi de suite.

Auriez vous une idée qui me permette a la fois de tester si il y a zéro dans la variable et qui me permettrait en même temps de lancer tous les tint2 et tous les conky en une seul ligne séparée par de « & » ?

d'avance merci pour votre aide.
Daan

Dernière modification par daan (10-05-2012 22:15:21)

Hors ligne

#2 30-04-2012 07:45:45

Thuban
Modérateur
Distrib. : stable
Noyau : 3.2
(G)UI : xfce ou dwm
Inscription : 09-01-2009
Messages : 1 120
Site Web

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Sur une même ligne de commande, c'est pas plutôt && qu'il faut mettre?

Sinon, essaie comme ça dans le script :

if [ ''$PremierTint2 '' != '''' ]
then
tint2 -c $HOME/.config/tint2/$PremierTint2 &
fi

if [ ''$DeuxiemeTint2 '' != '''' ]
then
tint2 -c $HOME/.config/tint2/$DeuxiemeTint2 &
fi

if [ ''$TroisiemeTint2 '' != '''' ]
then
tint2 -c $HOME/.config/tint2/$TroisiemeTint2 &
fi


Adhérent april 8505
Auto-hébergez vous! - aide mémoire LaTeX
Debian wheezy, dwm ou fluxbox, suckless-tools

Hors ligne

#3 30-04-2012 08:12:40

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : squeeze 6.0.7 backports wheezy 7.2 jessie
Noyau : 2.6.32-5-amd64 3.2.0-4-amd64 3.11-2-amd64
(G)UI : gnome 2.30.2 - 3.4.2 - awesome 3.4.15
Inscription : 21-10-2008
Messages : 11 071
Site Web

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Il me semble que le double && permet de passer outre à l'échec de la commande associée qui précède. smile

"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges

Hors ligne

#4 30-04-2012 08:35:11

bendia
Mots des Rateurs
Lieu : 72
Distrib. : Wheezy
Noyau : 3.2.0-4-amd64
(G)UI : Gnome + XFCE + LXDE
Inscription : 20-03-2012
Messages : 1 659
Site Web

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

smolski a écrit :

Il me semble que le double && permet de passer outre à l'échec de la commande associée qui précède. smile


A mon avis, c'est plutôt || (ou logique) pour passer outre l'echec de la première commande.
cmd1 && cmd2 : cmd2 est exécutée si le retour de cmd1 est égal à 0 (en général commande executée sans échec)

cmd1 || cmd2 : cmd2 est exécutée si le retour de cmd1 est différent de 0 (en général échec de la commande)

cmd1 & : permet de lancer cmd1 en arrière plan. Donc, une suite de cmd & lance les commandes les unes après les autres sans attendre les retours. C'est pour cela que le script fonctionne avec les simple & selon moi.

Ben


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#5 30-04-2012 10:21:37

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010
Messages : 778

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Yep!

C'est possible de raccourcir la commande en utilisant un contrôle booléan avec "!" (NOT) ou sans :

if [$PremierTint2]
then
tint2 -c $HOME/.config/tint2/$PremierTint2 &
fi

Le & simple permet de détacher la commande du shell en cours.
Le && double permet de détacher la commande et de passer à la suivante, ce n'est pas un ET logique.
Le || est bien un OU logique.

Pour les opérations logiques et afin de clarifier au mieux les scripts, l'utilisation des opérateurs -a et -o, respectivement AND et OU, entre les variables à tester est préferables.

if [$PremierTint2 -a $DeuxiemeTint2]; then...

Si j'ai $PremierTint2 ET $DeuxièmeTint2 ALORS...

Pour tester les fonctions logiques, essayez de créer un compteur simple et voyez les résultats :

#!/bin/bash

n=10
m=20

while ([ $m -gt 0 ] & [ $n -gt 0 ]);
 do
   echo "$n et $m"
   n=$(( $n - 1 ))
   m=$(( $m - 1 ))
done

Vous vous apercevrez qu'il n'y a pas de fonction logique ici.

Quelques combinaisons possibles :

#!/bin/sh

a=10
b=20

if [ $a != $b ]
then
   echo "$a != $b : a is not equal to b"
else
   echo "$a != $b: a is equal to b"
fi

if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a -lt 100 -a $b -gt 15 : returns true"
else
   echo "$a -lt 100 -a $b -gt 15 : returns false"
fi

if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : returns true"
else
   echo "$a -lt 100 -o $b -gt 100 : returns false"
fi

if [ $a -lt 5 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : returns true"
else
   echo "$a -lt 100 -o $b -gt 100 : returns false"
fi

Devrez vous donner :

10 != 20 : a is not equal to b
10 -lt 100 -a 20 -gt 15 : returns true
10 -lt 100 -o 20 -gt 100 : returns true
10 -lt 5 -o 20 -gt 100 : returns false

Dans notre cas ici présent, l'ideal serait de créer une structure sous forme de tableau et d'itérer chaque membre afin d'executer ou non une commande. Le répertoire de Tint2 ainsi que celui de conky étant constant, une variable chemin peut être déclarée.
La construction d'un tableau pour si peu de variables peut semblait tiré par les cheveux, mais c'est aussi un bon exercice de structuration wink

@+

Zoroastre.

Dernière modification par zoroastre74 (30-04-2012 13:45:32)

Hors ligne

#6 30-04-2012 22:05:10

bendia
Mots des Rateurs
Lieu : 72
Distrib. : Wheezy
Noyau : 3.2.0-4-amd64
(G)UI : Gnome + XFCE + LXDE
Inscription : 20-03-2012
Messages : 1 659
Site Web

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Bonjour @zoroastre74

zoroastre74 a écrit :

Yep!

Le & simple permet de détacher la commande du shell en cours.
Le && double permet de détacher la commande et de passer à la suivante, ce n'est pas un ET logique.


Es-tu sur de ça ?

Il me semble que & passe la commande à l'arrière plan sans la détacher du shell en cours. Si on ferme le shell, la commande est interrompue. C'est plutôt nohup qui détache la commande du shell en cours.
Par ailleurs le && ne passe à la commande suivante que si sa valeur de retour est égal à 0 sans la détacher du shell en cours (puisqu'il faut attendre la valeur de retour).

Ceci dit, c'est vrai que je n'aurais pas du parler d'opérateurs logique dans cette affaire. Mea Culpa hmm

Ben


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#7 30-04-2012 22:30:35

daan
Membre
Distrib. : Wheezy
Noyau : 3.2.0-4-686-pae
(G)UI : openbox
Inscription : 03-03-2012
Messages : 44

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Bonjour,

d'abord merci a vous pour votre aide.

houla !! ca en fait des infos ! Je débute donc tous n'est pas très claire , mais grasse a vous j'ai de nouvelles pistes a ...apprendre !! lol

a zoroastre74 , bendia, smolski
cette histoire d'opérateurs logique je connais pas , je me renseigne ! Merci pour l'info.

A Thuban :
j'ai tester l'ajout du « & » a la fin des lignes , et ca marche !! tip top , merci a toi .
Par contre j'ai deux questions :
1)c'est quoi ce « & » et pourquoi l'avoir rajouté ?
2)Pourquoi ce « & » est obligatoire a la fin des ligne de tint2 et non nécessaire pour les lignes de conky ? 

Quoi qu'il en soit encore merci a vous.
Daan.

Hors ligne

#8 01-05-2012 01:58:51

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010
Messages : 778

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Yep!

Bendia a écrit :

Il me semble que & passe la commande à l'arrière plan sans la détacher du shell en cours. Si on ferme le shell, la commande est interrompue. C'est plutôt nohup qui détache la commande du shell en cours.
Par ailleurs le && ne passe à la commande suivante que si sa valeur de retour est égal à 0 sans la détacher du shell en cours (puisqu'il faut attendre la valeur de retour).


Lorsque je parle de "détacher", je ne nie pas que le processus soit lancer en tâche de fond. Le shell en cours peut être repris pour lancer d'autres commandes. D'ailleurs, un top te montrera que la commande lancée avec le & sera positionnée dans un nouveau bash.
Si tu fermes le shell en cours, la commande n'est pas interrompue.

Par contre, effectivement, le && suit son cours si la commande précedente est valide et validé. Là, j'ai effectivement dit une bétise tongue
Il n'y a pas de détachement.

@+

Zoroastre.

Hors ligne

#9 01-05-2012 07:45:53

paskal
Modo ... ma non grosso
Lieu : à 77 Mparsecs de Gallifrey
Distrib. : wheezy 7.6
Noyau : 3.2.0-4-amd64
(G)UI : LXDE, XFCE
Inscription : 14-06-2011
Messages : 6 162

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

zoroastre74 a écrit :

Si tu fermes le shell en cours, la commande n'est pas interrompue.


Même comportement chez moi.


Votre association.  smile
Le Docteur : Quand on y pense, nous sommes tous des êtres différents au fil de nos vies, et c'est bien,
il faut continuer d'avancer, tant qu'on se souvient des personnes que nous avons été.
Je n'en oublierai pas une ligne, pas un seul jour ! Je le jure. Je me souviendrai toujours de cette époque où le Docteur était moi.

Hors ligne

#10 01-05-2012 10:52:00

bendia
Mots des Rateurs
Lieu : 72
Distrib. : Wheezy
Noyau : 3.2.0-4-amd64
(G)UI : Gnome + XFCE + LXDE
Inscription : 20-03-2012
Messages : 1 659
Site Web

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Dans une console en mode graphique (peut-être est-ce là ma confusion sur shell en cours ? )

gedit &

Si je ferme la console, gedit se ferme aussi

Ben


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#11 01-05-2012 11:00:06

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010
Messages : 778

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Yep!

Ben moi si je fait :

geany &

lorsque je ferme le shell, geany court toujours...

C'est quoi ta console ??? (urxvt pour ma part...)

@+

Zoroastre.

Dernière modification par zoroastre74 (01-05-2012 11:01:34)

Hors ligne

#12 01-05-2012 11:04:41

bendia
Mots des Rateurs
Lieu : 72
Distrib. : Wheezy
Noyau : 3.2.0-4-amd64
(G)UI : Gnome + XFCE + LXDE
Inscription : 20-03-2012
Messages : 1 659
Site Web

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Salut Zoroastre

Peut être une différence de comportement des console graphique entre nos deux environnements de bureau ?

Ben

Dernière modification par bendia (01-05-2012 11:04:55)


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#13 01-05-2012 11:09:40

zoroastre74
Membre
Distrib. : Debian Wheezy
Noyau : Linux 3.2
(G)UI : Awesome wm v3.4.13 (Octopus)
Inscription : 28-08-2010
Messages : 778

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Yep!

Possible, j'ai cependant du mal à croire que bash ou dash ait un comportement différents chez toi.
Tu sembles d'ailleurs être l'exeption qui confirme la règle tongue

Ta console te rend quand même la main lorsque tu tapes "gedit &" ???

@+

Zoroastre.

Hors ligne

#14 01-05-2012 11:16:39

bendia
Mots des Rateurs
Lieu : 72
Distrib. : Wheezy
Noyau : 3.2.0-4-amd64
(G)UI : Gnome + XFCE + LXDE
Inscription : 20-03-2012
Messages : 1 659
Site Web

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Oui sans problème.

Les voies de l'informatique sont impénétrables lol

On va creuser.

Ben

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#15 01-05-2012 11:47:19

paskal
Modo ... ma non grosso
Lieu : à 77 Mparsecs de Gallifrey
Distrib. : wheezy 7.6
Noyau : 3.2.0-4-amd64
(G)UI : LXDE, XFCE
Inscription : 14-06-2011
Messages : 6 162

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

J'ai fait des essais avec LXTerminal et le terminal de Gnome. Tenez-vous bien :
- pour 'pcmanfm &' pcmanfm reste ouvert après fermeture des terminaux
- pour 'gedit &' gedit se ferme  après fermeture des terminaux
ça dépend de la commande lancée ???

Votre association.  smile
Le Docteur : Quand on y pense, nous sommes tous des êtres différents au fil de nos vies, et c'est bien,
il faut continuer d'avancer, tant qu'on se souvient des personnes que nous avons été.
Je n'en oublierai pas une ligne, pas un seul jour ! Je le jure. Je me souviendrai toujours de cette époque où le Docteur était moi.

Hors ligne

#16 01-05-2012 15:53:56

bendia
Mots des Rateurs
Lieu : 72
Distrib. : Wheezy
Noyau : 3.2.0-4-amd64
(G)UI : Gnome + XFCE + LXDE
Inscription : 20-03-2012
Messages : 1 659
Site Web

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

@paskal
Effectivement. Mais pcmanfm sans & pcmanfm reste ouvert après fermeture de lxterminal. D'ailleurs, il nous rend la main sur la console.
A mon avis, et pour répondre à Daan, certains programmes (conky, pcmanfm) se lancent avec une fonction équivalente à & (qui passe le processus en arrière plan ou le détache du shell en cours) et d'autre non (tint2). Mais c'est à confirmer par des plus calés que moi roll

@Zoroastre

Sur Crunchbang, avec terminator comme console,

geany &

se comporte comme chez toi. Sous gnome avec gnome terminal non.

Nous faudrait une bonne âme secourable là. hmm Perso, je sèche

Ben

Dernière modification par bendia (01-05-2012 17:50:49)


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#17 01-05-2012 19:20:39

daan
Membre
Distrib. : Wheezy
Noyau : 3.2.0-4-686-pae
(G)UI : openbox
Inscription : 03-03-2012
Messages : 44

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

Bonjour,

merci a vous pour ces  précisions que je lis avec attention.
Comme je suis curieux de savoir le fin mot de cette histoire je vais me permettre d'attendre encore 2-3 jours avant de passer le poste en « résolut » .


@+ Daan

Hors ligne

#18 03-05-2012 10:19:37

bendia
Mots des Rateurs
Lieu : 72
Distrib. : Wheezy
Noyau : 3.2.0-4-amd64
(G)UI : Gnome + XFCE + LXDE
Inscription : 20-03-2012
Messages : 1 659
Site Web

Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.

.alut

Après lecture de man bash, je confirme,que cmd & met cmd en arrière plan et lui affecte un numéro de job. Lorsque bash se termine, le signal d'arrêt est envoyé à tous les jobs en arrière plan. Pour eviter cela, il faut utiliser la commande disown .
J'ai fait des essais en console virtuel :

la commande sleep & lancé sur tty1 est tuée lorsque on quitte tty1.
Si on utilise disown avant de quitter, elle n'est pas tuée et se rattache au PID 1.


PS : Nouvel essai et cela ne réagit plus pareil roll J'ai du expérimenter trop tard avec les yeux plus en façe des trous hier. Donc en console virtuel, le processus se détache automatiquement de la console sans disown. Mais j'ai toujours le même comportement avec gnome-terminal ! Idem avec Xterm.

Ben

Dernière modification par bendia (03-05-2012 18:45:40)


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

Pied de page des forums