Vous n'êtes pas identifié(e).
Edit : Deuxième version avec le quel dans la théorie tout fonctionne ( avec echo a la place de redshift ) mais pas dans la pratique
Dernière modification par peuks (08-06-2011 11:07:36)
Hors ligne
@+
Zoroastre.
Hors ligne
En gros, si le processus existe, on lance un xterm vert, dans le cas contraire, un xterm rouge.
Le $? récupère la valeur de la dernière commande. (=0 si la commande s'est bien déroulée)
Les crochets entre le x sont indispensables, sinon çà ne marche pas. Equivalent d'un
@+
Zoroastre.
Dernière modification par zoroastre74 (08-06-2011 17:23:09)
Hors ligne
Plop !
Je pense avoir un léger soucis avec mon script on/off pour redshift ou autre .
Le but de script et de lancer une application et de la ferme dans le cas inverse.
Simplification possible en :
Hors ligne
Hors ligne
Si redshift apparait le quitter de suite si non le lancer ?
Oui
Cela ne crée pas une erreur de faire pgrep redshift && pkill redshift ? Je veux parler de la manière de l'écrire .
Non, dans cette ligne, pkill s'execute seulement si pgrep a retourné une valeur ( car && veut dire "et" ) sinon le shell passe donc directement à l'autre coté du || sans se plaindre.
Hors ligne
n'est jamais fausse car en bash le = sert aux chaines de caractères. Pour les chiffres, c'est -gt (greater than), -eq (equal) ...
Donc il te faudrait :
si bien sur c'est le chiffre 1 contenu dans le fichier pid.
Regarde man test pour plus d'infos
Y − 3HG − Auto-hébergé
Hors ligne
Pour revenir au début, ta condition
if [ $etat_redshift=1 ]
n'est jamais fausse car en bash le = sert aux chaines de caractères. Pour les chiffres, c'est -gt (greater than), -eq (equal) ...
Tu as mis le doigt sur quelque chose, mais ce n'est pas encore ça.
Sa condition est toujours vraie car
est considéré par le shell comme une seule chaîne, et
est toujours vrai (c'est une version implicite de
).
Une façon correcte d'écrire la condition est très proche de ce que tu as proposé :
Ça peut paraître bateau, mais mettre des guillemets doubles autour de toutes
les utilisations de variables permet de résoudre des bugs autrement
mystérieux.
Hors ligne
Bonjour,
Simplification possible en :#!/bin/sh
pgrep redshift && pkill redshift || redshift -l 48.4:7.6
Et même :
Si celà te convient, très bien, mais il existe des outils déjà pensés
pour gérer les logiciels de type "daemon", les lancer proprement
et les stopper proprement. Je t'invite à voir du côté de runit, packagé
sur debian et très bien documenté. Le simple fait de l'utiliser d'en apprendra
beaucoup sur la gestion des processus sur Unix.
En revanche, je ne peux que déconseiller l'utilisation de killall, ps aux | grep bla bla | xargs kill
et autres sucreries : ce n'est pas fiable et t'amènera à faire des bêtises.
Quelques liens utiles :
http://smarden.org/runit/
http://mywiki.wooledge.org/ProcessManagement
Hors ligne