Comment démarrer un processus de surveillance pour un script bash qui envoie des notifications? (Ubuntu 13.04)


2

J'ai écrit un script bash qui surveille la sortie de sensors et utilise notify-send pour m'alerter lorsque mon cahier surchauffe. Je commence le script avec watch -n 15 fullscriptname et a également ajouté cette ligne à /etc/rc.local

Cela fonctionne comme il se doit lorsque je le lance à partir du terminal et que le processus s'exécute également après le démarrage. Cependant, les notifications ne s'affichent pas. Je suppose que c'est parce que rc.local est exécuté par root.

(J'ai également essayé de l'ajouter aux applications de démarrage via Unity, mais cela ne fonctionne pas non plus).

Donc, mes questions: Y at-il un moyen de démarrer un processus en tant qu’utilisateur? Quel est le bon moyen de lancer automatiquement un tel script (quels fichiers de configuration dois-je utiliser)?


Vous pouvez utiliser su pour exécuter une commande en tant qu'utilisateur différent, mais dans votre cas d'utilisation, la réponse de terdon est la solution.
n.st

Réponses:


0

Le plus simple serait d'avoir cron commencez le. Courir crontab -e cela devrait ouvrir votre crontab dans votre éditeur par défaut, y ajouter cette ligne, la sauvegarder et la fermer:

@reboot watch -n 15 /path/to/script

Une autre option serait d'ajouter watch -n 15 /path/to/script à ton ~/.Xsession mais je ne suis pas sûr si Ubuntu le charge toujours.


hm, le processus de surveillance s'exécute maintenant avec le bon utilisateur (après avoir défini TERM = dumb cron n'envoie plus de courrier d'erreur). Mais d'une certaine manière, les notifications n'atteignent pas mon bureau. Quoi qu'il en soit, merci pour l'allusion avec crontab
ddd

@ndldd capture toutes les erreurs produites par le cron: @reboot watch -n 15 /path/to/script 2>/tmp/error. De cette façon, vous pouvez voir ce qui ne va pas.
terdon

J'ai installé postfix pour localmail et j'ai reçu un email de Cron: 'Erreur d'ouverture du terminal: inconnu.' mais je pense avoir résolu ce problème maintenant car je ne reçois plus de messages d'erreur et le processus s'exécute. Le problème est maintenant avec le script lui-même si je l'exécute manuellement en arrière-plan en ajoutant '& amp;' les notifications ne sont pas non plus affichées. edit: Je viens de trouver une solution possible: commandlinefu.com/commands/view/6167/…
ddd

Oui, j'ai enfin réussi à travailler, merci pour l'aide, j'ai ajouté SHELL = / bin / bash DISPLAY =: 0.0 XAUTHORITY = ~ / .Xauthority TERM = muet au-dessus de la ligne de crontab.
ddd
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.