#1 29-04-2012 22:19:50
- daan
- Membre
- Distrib. : squeeze
- Noyau : 2.6.32-5-686
- (G)UI : openbox
- Inscription : 03-03-2012
- Messages : 34
[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
fiet 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
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 &
fiAuto-hébergez votre site, mails... Parce qu'on n'est jamais mieux servi que par soi-même ☺
jabber :
Aidez debian avec apt-p2p!
Hors ligne
#3 30-04-2012 08:12:40
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. ![]()
"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
- Modérateur

- Lieu : 72
- Distrib. : Wheezy
- Noyau : 3.2.0-4-amd64
- (G)UI : Gnome + XFCE + LXDE
- Inscription : 20-03-2012
- Messages : 468
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.
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 : 748
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 &
fiLe & 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 ))
doneVous 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"
fiDevrez 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 falseDans 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 ![]()
@+
Zoroastre.
Dernière modification par zoroastre74 (30-04-2012 13:45:32)
Hors ligne
#6 30-04-2012 22:05:10
- bendia
- Modérateur

- Lieu : 72
- Distrib. : Wheezy
- Noyau : 3.2.0-4-amd64
- (G)UI : Gnome + XFCE + LXDE
- Inscription : 20-03-2012
- Messages : 468
Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.
Bonjour @zoroastre74
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 ![]()
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. : squeeze
- Noyau : 2.6.32-5-686
- (G)UI : openbox
- Inscription : 03-03-2012
- Messages : 34
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 : 748
Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.
Yep!
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 ![]()
Il n'y a pas de détachement.
@+
Zoroastre.
Hors ligne
#9 01-05-2012 07:45:53
- paskal
- Modérateur

- Distrib. : squeeze 6.0.7 + backports
- Noyau : 3.6.0-3.dmz.2-liquorix-amd64
- (G)UI : LXDE
- Inscription : 14-06-2011
- Messages : 2 377
Re : [résolu]script bash lancement de plusieurs tint2 et plusieurs conky.
Si tu fermes le shell en cours, la commande n'est pas interrompue.
Même comportement chez moi.
desktop : Asus M5A88-M EVO - Phenom II X4 955 BE - 4 Go - Radeon HD4250 > Squeeze LXDE adeskbar
laptot : Acer Aspire 5000 > Wheezy LXDE dwm
Hors ligne
#10 01-05-2012 10:52:00
- bendia
- Modérateur

- Lieu : 72
- Distrib. : Wheezy
- Noyau : 3.2.0-4-amd64
- (G)UI : Gnome + XFCE + LXDE
- Inscription : 20-03-2012
- Messages : 468
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 : 748
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
- Modérateur

- Lieu : 72
- Distrib. : Wheezy
- Noyau : 3.2.0-4-amd64
- (G)UI : Gnome + XFCE + LXDE
- Inscription : 20-03-2012
- Messages : 468
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 : 748
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 ![]()
Ta console te rend quand même la main lorsque tu tapes "gedit &" ???
@+
Zoroastre.
Hors ligne
#14 01-05-2012 11:16:39
- bendia
- Modérateur

- Lieu : 72
- Distrib. : Wheezy
- Noyau : 3.2.0-4-amd64
- (G)UI : Gnome + XFCE + LXDE
- Inscription : 20-03-2012
- Messages : 468
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 ![]()
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
- Modérateur

- Distrib. : squeeze 6.0.7 + backports
- Noyau : 3.6.0-3.dmz.2-liquorix-amd64
- (G)UI : LXDE
- Inscription : 14-06-2011
- Messages : 2 377
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 ???
desktop : Asus M5A88-M EVO - Phenom II X4 955 BE - 4 Go - Radeon HD4250 > Squeeze LXDE adeskbar
laptot : Acer Aspire 5000 > Wheezy LXDE dwm
Hors ligne
#16 01-05-2012 15:53:56
- bendia
- Modérateur

- Lieu : 72
- Distrib. : Wheezy
- Noyau : 3.2.0-4-amd64
- (G)UI : Gnome + XFCE + LXDE
- Inscription : 20-03-2012
- Messages : 468
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 ![]()
@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à.
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. : squeeze
- Noyau : 2.6.32-5-686
- (G)UI : openbox
- Inscription : 03-03-2012
- Messages : 34
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
- Modérateur

- Lieu : 72
- Distrib. : Wheezy
- Noyau : 3.2.0-4-amd64
- (G)UI : Gnome + XFCE + LXDE
- Inscription : 20-03-2012
- Messages : 468
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
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