Vous n'êtes pas identifié(e).
Avez-vous une idée ?
Et au passage, sachant que je pense éventuellement partager mon truc une fois qu'il sera bien propre, quel est le meilleur répertoire pour stocker les scripts ? (ils sont actuellement dans ~/.scripts, un répertoire que j'ai créé pour mes scripts persos, donc dans mon /home, ce qui peut poser problème sur un ordinateur avec plusieurs comptes utilisateurs)
Merci d'avance pour vos réponses !
Dernière modification par Ralph W. Llama (27-03-2015 18:42:17)
Vivre libre ou mourir !
Hors ligne
Je suppose ici que le nom de la commande est bien gmusicbrower dans /proc/<pid>/cmdline, certaines commandes changent leurs noms et parfois dans les interfaces graphiques, le nom réel d'une commande ne correspond pas à celui que l'on trouve dans un menu ou sur une icône…
Dernière modification par enicar (25-03-2015 21:33:00)
Hors ligne
EDIT : présenté comme ça, mon script ne marche pas, il exécute ma commande dans tous les cas. Par contre, il marche quand je le présente de la manière suivante :
Pourquoi ?
Dernière modification par Ralph W. Llama (25-03-2015 21:55:39)
Vivre libre ou mourir !
Hors ligne
Merci !
Vivre libre ou mourir !
Hors ligne
saque eud dun (patois chtimi : fonce dedans)
Hors ligne
Le code de retour d'une expression avec un tube comme « ps -e |grep gmusicbrowser »
vaut la valeur de retour du grep. Or grep renvoie 0 si il trouve le motif
cherché, 1 si il ne le trouve pas, et 2 pour toute autre erreur. Un code de retour de zéro
veut dire vrai pour le shell. Ici, j'utilise l'option -q qui demande à grep
d'être silencieux, car ce que l'on veut savoir, c'est si il y a une correspondance ou non.
Aussi, si tu n'en as pas besoin, tu peux supprimer la branche else du if,
et faire ainsi :
Hors ligne
Hors ligne
/proc/<pid>/cmdline : la ligne de commande en entier nom de commande et arguments
/proc/<pid>/comm : uniquement le nom de la commande.
Ça doit venir du fait que les programmes peuvent modifier eux-mêmes leur propre nom, mais
que ce nom n'est pas modifié dans les deux fichiers… à vérifier
Dernière modification par enicar (26-03-2015 13:55:27)
Hors ligne
Vivre libre ou mourir !
Hors ligne
Le truc, c'est que je ne sais pas si pgrep va lister un ou deux processus.
À priori il va faire comme « ps -C gmusicbrowser ». Et donc, ça ne te conviendra pas.
On pourrait quand même le faire, mais ça complique un peu, on se retrouve à
devoir faire une substitution de commande avec $(… ), et c'est justement ce que
j'avais voulu éviter avec ma façon de faire…
Dernière modification par enicar (26-03-2015 12:30:48)
Hors ligne
Hors ligne
Effectivement, la commande ps correspond à ce que je cherche. ps -C gmusicbrowser affiche deux lignes quand gmusicbrowser est lancé, et une seule quand il n'est pas lancé, ce qui ne m'arrange pas trop
Effectivement, on se fiche pas mal du nombre de lignes affichées. En fait, il n'a pas dû essayer
ma méthode complétement. Le problème avec « ps -C gmusicbrowser », c'est qu'il affiche une
ligne d'entête même si aucun processus ne correspond. Mais ça n'a pas d'importance car on
redirige la sortie vers /dev/null et que l'on regarde juste le code de sortie, comme avec
pgrep… C'est bien car ça supprime un tube.
Dernière modification par enicar (26-03-2015 13:58:36)
Hors ligne
Vivre libre ou mourir !
Hors ligne
Hors ligne
Vivre libre ou mourir !
Hors ligne
Hors ligne
Vivre libre ou mourir !
Hors ligne
Hors ligne
Dernière modification par Ralph W. Llama (27-03-2015 15:30:00)
Vivre libre ou mourir !
Hors ligne
On me suggère /usr/share, aussi, qu'est-ce qui est le mieux ?
Dans ce cas, je les mettrai plutôt dans /usr/local/share/scripts/.
Je préfère différencier, les programmes/scripts qui proviennent du système de paquetage
du reste, en les rangeant dans un endroit différent. Ça peut éviter bien des problèmes, amha.
Hors ligne
Vivre libre ou mourir !
Hors ligne