web-dev-qa-db-fra.com

crontab xinput renvoie des résultats vides

J'ai créé un fichier /root/startup.sh (je suis sur Ubuntu avec Gnome 3.22.3 avec un accès root) avec le contenu suivant:

 #!/bin/bash 
 DISPLAY = ": 0" 
 PATH = "/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin "
 Shell ="/bin/bash "
 
 $ (/ usr/bin/xinput list>/root/Desktop/output. SMS)

et j'ai mis cette ligne dans le fichier crontab -e:

 * * * * */bin/bash /root/startup.sh

mais après une minute lorsque le fichier output.txt est créé et que je l'ouvre, il est vide et ne contient aucun contenu.
Pourquoi?

2
newpeople

Il y a tellement d'articles sur le Web, tellement de questions et de réponses sur ce sujet, mais aucun d'entre eux ne m'a notifié cette erreur stupide:

 export DISPLAY = ": 0" 
 export PATH = "/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin "
 export Shell ="/bin/bash "

Cela devrait être utilisé à la place des 3 lignes dans ma question.
J'aurais dû ajouter export avant eux.
Et il fonctionne.

1
newpeople

D'après mon expérience, vous devez également définir la variable XAUTHORITY.

export XAUTHORITY=/home/<user>/.Xauthority

Lorsque vous démarrez votre script en tant que root via cron, l'utilisateur root ne dispose probablement pas d'un fichier .Xauthority. Mais parce que vous êtes root dans la session cron, vous pouvez utiliser celle de votre utilisateur habituel.

1
user680858