J'ai un script .sh qui télécharge une photo du serveur du satellite japonais et la définit comme image de fond. Je l'ai mis dans la liste de démarrage, mais comment l'exécuter automatiquement toutes les 5 minutes, par exemple?
J'ai un script .sh qui télécharge une photo du serveur du satellite japonais et la définit comme image de fond. Je l'ai mis dans la liste de démarrage, mais comment l'exécuter automatiquement toutes les 5 minutes, par exemple?
Réponses:
Si vous voulez la méthode simple et évitez d'avoir à trouver quelle variable d'environnement définir:
Ajoutez les éléments suivants aux applications de démarrage:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Dash> Applications de démarrage> Ajouter. Ajoutez la commande:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Si vous exécutez le script à partir de votre propre environnement (par exemple à partir d'une fenêtre de terminal ou à partir d'applications de démarrage), un certain nombre de variables d'environnement seront définies. cron
exécute cependant votre script avec un ensemble limité de variables d'environnement.
Puisque votre script utilise sans aucun doute la gsettings
commande:
gsettings get org.gnome.desktop.background picture-uri <wallpaper>
pour définir le fond d'écran, la commande se cassera presque certainement lors de l'exécution cron
.
L'inconvénient de "la solution paresseuse" est purement théorique. Une commande qui dort pratiquement en continu ne signifie rien pour votre système.
En lisant ce post , et d'après les expériences passées, je suis presque sûr que la DBUS_SESSION_BUS_ADDRESS
variable d'environnement doit être définie.
Pour ce faire, ajoutez la section suivante au début de votre script (sous le shebang):
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
Ensuite, vous devriez pouvoir l'exécuter avec succès cron
.
Vous pourriez cependant très bien sauver l'agitation et choisir l'option paresseuse.
cpu 0.0%
quelle taxe parlons-nous?
Mettez-le dans votre crontab
.
Ouvrez votre cron
table en:
crontab -e
Ajoutez maintenant:
*/5 * * * * /path/to/script.sh
N'oubliez pas de rendre le script exécutable au préalable.
Comme votre script dépend de X, ce sera probablement une bonne idée d'ajouter le DISPLAY
à l'environnement du script:
*/5 * * * * DISPLAY=:0 /path/to/script.sh
Remplacez :0
par votre réel DISPLAY
(peut être trouvé par echo $DISPLAY
de la session interactive).
Si nécessaire, vous pouvez également ajouter la XAUTHORITY
variable d'environnement:
*/5 * * * * DISPLAY=:0 XAUTHORITY="~/.Xauthority" /path/to/script.sh
Encore une fois, vous pouvez trouver la valeur par echo $XAUTHORITY
.
DISPLAY
XAUTHORITY