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?
Essayez cronmaker.com, vous pouvez y créer des expressions cron et les mettre avec crontab -e
We are Borg
2
L'image change-t-elle même toutes les 5 minutes? Essayez d'utiliser un intervalle qui crée moins de charge inutile sur le serveur cible. Ou assurez-vous de ne télécharger que si le fichier est vraiment modifié.
til_b
1
Soit dit en passant, quelle est l'URL pour les arrière-plans de l'espace?
bohdan_trotsenko
Réponses:
14
L'option paresseuse
Si vous voulez la méthode simple et évitez d'avoir à trouver quelle variable d'environnement définir:
Assurez-vous que votre script inclut le shebang
Rendez-le exécutable
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"
Explication
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. cronexécute cependant votre script avec un ensemble limité de variables d'environnement.
Puisque votre script utilise sans aucun doute la gsettingscommande:
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.
Information additionnelle; alternativement
En lisant ce post , et d'après les expériences passées, je suis presque sûr que la DBUS_SESSION_BUS_ADDRESSvariable d'environnement doit être définie.
Pour ce faire, ajoutez la section suivante au début de votre script (sous le shebang):
@AleksanderMahnyov Vous êtes les bienvenus. Heureux que ça marche :)
Jacob Vlijm
2
Il est tellement préférable d'utiliser un travail cron.
Luka Ramishvili
1
@LukaRamishvili Merci pour le commentaire. Cependant: a. Et pourquoi est-ce que? une commande de sommeil ne signifie rien pour votre système. b. J'ai même inclus l'option.
Jacob Vlijm
1
Sinon, de belles recherches sur les variables de session gnome, cela aiderait beaucoup l'OP, car cela serait nécessaire dans les deux cas.
Luka Ramishvili
2
Je viens de regarder: de cpu 0.0%quelle taxe parlons-nous?
Jacob Vlijm
24
Mettez-le dans votre crontab.
Ouvrez votre crontable 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 :0par votre réel DISPLAY(peut être trouvé par echo $DISPLAYde la session interactive).
Si nécessaire, vous pouvez également ajouter la XAUTHORITYvariable d'environnement:
Je ne sais pas si cela fonctionne avec des variables d'environnement limitées de cron, mais voyons si OP mentionne que cela fonctionne :)
Jacob Vlijm
1
@AleksanderMahnyov Veuillez éditer votre question pour ajouter le script, difficile à dire sans voir le DISPLAYXAUTHORITY
contenu..peut-être un
1
@Kartagis Cron ne peut pas gérer les secondes, vous essayez également de le faire pendant des heures, ce qui est toujours syntaxiquement incorrect ..
heemayl
2
J'adore cette méthode plutôt que la "méthode paresseuse", car je connaissais Cron, mais j'avais besoin d'un peu de cours de recyclage. C'est exactement ce que j'ai fait, merci beaucoup! :)
Réponses:
L'option paresseuse
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:
Dash> Applications de démarrage> Ajouter. Ajoutez la commande:
Explication
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: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.
Information additionnelle; alternativement
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):
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.
la source
cpu 0.0%
quelle taxe parlons-nous?Mettez-le dans votre
crontab
.Ouvrez votre
cron
table en:Ajoutez maintenant:
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:Remplacez
:0
par votre réelDISPLAY
(peut être trouvé parecho $DISPLAY
de la session interactive).Si nécessaire, vous pouvez également ajouter la
XAUTHORITY
variable d'environnement:Encore une fois, vous pouvez trouver la valeur par
echo $XAUTHORITY
.la source
DISPLAY
XAUTHORITY