test.sh: /usr/bin/notify-send "test"
Les œuvres suivantes: bash ~/Documents/test.sh
MAIS la crontab ne montre jamais la notification. Pourquoi?
*/1 * * * * bash ~/Documents/test.sh
Pour exécuter toute application associée à une interface graphique à partir de Cron, vous devez exporter quelques variables d'environnement de bureau. La solution ci-dessous est basée sur cette réponse où sont fournis plus de détails.
crontab
sous Ubuntu 16.04, 17.10, 18.04 et d’autres distributions Ubuntu avec GnomeCréez un script de démarrage qui exportera les variables d’environnement de bureau et lancera votre application. Appelons cela gui-launcher
. Son contenu devrait être ( référencés: [1] , [2] et [3]):
#!/bin/bash -e
# NAME: gui-launcher
# Check whether the user is logged-in
while [ -z "$(pgrep gnome-session -n -U $UID)" ]; do sleep 3; done
# Export the current desktop session environment variables
export $(xargs -0 -a "/proc/$(pgrep gnome-session -n -U $UID)/environ")
# Execute the input command
Nohup "$@" >/dev/null 2>&1 &
exit 0
gnome-session
dans cette partie $(pgrep gnome-session -n -U $UID)
avec le nom du processus du DE utilisé, par exemple mate-session
. Une liste de la plupart des Ubuntu DE est présentée ici . Implémentation Lubuntu du même script - ici . Le script peut être utilisé pour lancer une application graphique à partir d'une session TTY ou SSH dans la session de bureau de l'utilisateur actuel.chmod +x gui-launcher
.Puis utilisez-le dans crontab
de cette manière:
*/1 * * * * /full/path/to/gui-launcher "/full/path/to/the-targer-application"
Voici comment cela fonctionne sur Ubuntu 17.10 sur Wayland:
Voici une implémentation du même script sur SSH: Comment exécuter des fichiers de script (.sh) dans un nouveau terminal après la connexion au serveur Ubuntu 16.04 via ssh?
Ici sont présentées plus d'explications: Le travail Cron à exécuter python le script au redémarrage ne fonctionne pas .
Et encore un exemple: Ajuster la luminosité avec xrandr et le travail cron
Environnement pour cron et votre utilisateur régulier peuvent être différents.
Quand vous utilisez des scripts dans cron, il est préférable de leur donner le chemin complet.