OVH Cloud OVH Cloud

tester si X est lance

3 réponses
Avatar
Kevin Denis
[bash-linux]
bonjour,

je cherche a savoir dans un script si X est lance (pour lancer un
xterm -e blabblabla)

Tester la presence de la variable DISPLAY vous parait elle etre une
bonne idee?

Et:
if [ `env | grep DISPLAY` ]
then
blablabla
fi
une bonne maniere de le tester?

Merci
--
Kevin

3 réponses

Avatar
Aurelien Croc
Kevin Denis wrote:

[bash-linux]
bonjour,

je cherche a savoir dans un script si X est lance (pour lancer un
xterm -e blabblabla)

Tester la presence de la variable DISPLAY vous parait elle etre une
bonne idee?

Et:
if [ `env | grep DISPLAY` ]
then
blablabla
fi
une bonne maniere de le tester?

Merci
Sinon, tester directement dans la liste des processus ??

une commande du style :
if [ -n `ps aux | grep X | grep -v grep` ]

--
Aurélien
Projet AP²C - http://www.ap2c.org
Clef Publique : http://www.ap2c.org/aurelien.gpg

Avatar
Stephane Chazelas
2004-12-15, 15:26(+00), Kevin Denis:
[bash-linux]
bonjour,

je cherche a savoir dans un script si X est lance (pour lancer un
xterm -e blabblabla)

Tester la presence de la variable DISPLAY vous parait elle etre une
bonne idee?
[...]


Oui, et tu peux rajouter le test de si tu peux te connecter au
serveur X (et reporter une erreur si tu ne peux pas).

if [ -n "$DISPLAY" ]; then
if ! xdpyinfo > /dev/null 2>&1; then
printf >&2 '%s: can not connect to X servern' "${0##*/}"
exit 1
fi
do_X=true
else
do_Xúlse
fi

--
Stephane

Avatar
Stephane Chazelas
2004-12-15, 11:19(+01), Aurelien Croc:
[...]
Sinon, tester directement dans la liste des processus ??
une commande du style :
if [ -n `ps aux | grep X | grep -v grep` ]


???

D'abord, il peut y avoir plus d'un X dans le resultat de "ps
aux" (par exemple, sur mon systeme, il y a un utilisateur XYZ).

Ensuite, c'est inaproprié. Le serveur X n'a aucune raison d'etre
local. Et si on se connecte par telnet/ssh sur une machine
distante, il peut tres bien y avoir un serveur X qui tourne
(ne serait-ce que pour la baniere de login d'xdm).

(la syntaxe "ps aux" n'est pas POSIX, c'est une syntaxe BSD).

--
Stephane