Aller au menu - Aller au contenu

crontab fonctionne-t-il bien?

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1 
Hors ligne Geff # Posté le 05/02/2012 à 13:05:18
Avatar

Bonjour,

Voici ce que j'écris dans mon crontab :
Code : Console
00 13 * * * gnome-open /home/user/Bureau/txt.txt

Où txt.txt est un fichier texte contenant le texte "Salut".
Et ceci ne fonctionne pas, il ne m'ouvre pas le fichier txt.txt dans Emacs ni quoi que ce soit.

Cependant, la tâche :
Code : Console
00 13 * * * touch /home/user/Bureau/txt1.txt

S'exécute parfaitement. Le fichier txt1.txt est bien créé à 13h dans le Bureau.

Ce que j'aimerais, c'est exécuter des scripts bash pour mon plaisir, à une heure et date données.

Pouvez-vous m'expliquer pourquoi cela ne fonctionne pas?

Merci
Publicité # Posté le 05/02/2012 à 13:05:18

Hors ligne El pato francès # Posté le 05/02/2012 à 16:44:46
Kouin ! (Cuac !)
Avatar

Hello,
Je pense que c'est normal, le cron ne s'exécute pas dans ton interface graphique.
A ma connaissance, le cron ne pourra pas intéragir directement avec la session utilisateur (graphique ou console).
Peut-être que Gnome à ses "tâches planifiées".

+

DWSTWOCAFE !!! (Ducks Will Save The World, Of Course And For Ever)
 
Hors ligne Geff # Posté le 05/02/2012 à 18:00:22
Avatar

MMh.. Je vois.

Bon ben je vais trouver autre chose pour exécuter mes commandes alors ^^
Merci :)
Hors ligne S4RuM4N # Posté le 06/02/2012 à 00:06:05

Études : EFREI

Hello,

Il est possible (tout est possible sous unix) de l'afficher dans ton environement graphique. Généralement, les softs déterminent le serveur Xorg avec lequel discuter via la variable d'environement DISPLAY.

Ton programme est lancé par cron, qui n'a pas ses variables d'env peuplées comme le serait un terminal standard. Essaye donc en spécifiant sa valeur :
Code : Autre
1
00 13 * * * DISPLAY=:0.0 /usr/bin/gnome-open /home/user/Bureau/txt1.txt


Si ca ne marche pas, il faudra peut etre jouer avec XAuth. Il faut aussi que la valeur de display soit correcte (généralement, c'est :0.0 tu peux le voir en lancant dans un terminal : Code : Autre
1
echo $DISPLAY


Bon courage.
Hors ligne Geff # Posté le 06/02/2012 à 08:55:33
Avatar

Bonjour,

La commande
Code : Console
00 13 * * * DISPLAY=:0.0 /usr/bin/gnome-open /home/user/Bureau/txt1.txt

Fonctionne très bien, merci S4RuM4N !

Mais quelque chose d'étrange se passe.
J'ai un double boot Mac/Ubuntu. Lorsque je modifie mon cron en y ajoutant la commande "* * * * * gnome-open chemin_du_fichier à ouvrir" sous Ubuntu, cela ne fonctionne pas, comme je l'avais dit. Mais sous Mac, cela fonctionne parfaitement. Il m'ouvre bien le fichier txt.txt qui se situe sur le Bureau avec l'éditeur TextEdit.

Pourquoi? Je ne comprends pas pourquoi cela fonctionnerait sous Mac et pas sous Ubuntu, justement, si j'avais du faire un pari, j'aurais parié sur Ubuntu plutôt que sur Mac...
C'est comme la commande "say" qui fonctionne sous Ubuntu mais ne s'exécute pas. Je suis un peu perdu !
Édité le 06/02/2012 à 08:56:47 par Geff
Hors ligne S4RuM4N # Posté le 06/02/2012 à 19:33:53

Études : EFREI

Hello,

Pour faire simple, il ne s'agit que d'un problème de définition de variables. Peut être qu'OSX le fait tout seul, mais il est également possible de le faire via un petit one-liner :
Code : Autre
1
who | grep "^$(whoami)" | awk 'BEGIN{FS=":"} {sub(/[^0-9\.]+/,"", $NF); print $NF}'




Pour aller plus en détails :

OS X a une structure relativement différente de GNU/Linux. Sur Linux, il s'agit simplement de définir des variables d'environement standards qui sont utilisées par les différents programmes. Ici, il s'agit de définir sur quel serveur X envoyer les données. Si tu as plusieurs serveurs Xorg de lancés (par exemple, plusieurs utilisateurs ayant une session ouverte en simulatané) il faudra positionner la valeur de DISPLAY a la bonne instance :
- :0.0 pour le premier serveur Xorg
- :1.0 pour le second
- :1.1 pour le second dans le 2e écran (selon la conf)...

Il s'agit de processus qui tournent en simultané, et tu peux parfaitement (selon les droits accordés) afficher la fenetre d'un programme qui appartient a "user1" sur un Xorg qui est lancé par "user2".

Sous OSX, je ne sais pas précisément comment cela fonctionne, mais vu qu'il s'agit d'un kernel hybride (une partie des fonctions graphiques tournent en espace noyau) il y a surement des spécificités...
Mais tout ce qu'OSX propose, Linux peut le faire.


A+

Retour au forum "Linux et *BSD" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx