J'ai lutté avec ce problème pendant trois jours et j'ai essayé de nombreuses façons de le résoudre, mais sans succès. J'espère que vous pourrez m'aider ...
J'ai une application graphique. Je veux démarrer cette application automatiquement. Et quand il se ferme ou se ferme de façon inattendue, je veux rouvrir cette application.
J'ai essayé d'utiliser un script de démarrage, mais bien que les services avec upstart ne posent aucun problème, l'application graphique ne démarre pas avec le script de démarrage. Il dit ne peut pas connecter le serveur X.
Dois-je ajouter ou modifier certains paramètres pour ouvrir avec upstart ou y at-il un moyen d'ouvrir l'application GUI automatiquement quand une fermeture ou une fermeture inattendue se produit (pas seulement une fois après la connexion, je veux dire, pas avec Startup)?
Le problème que vous rencontrez est que lorsque upstart
(ou systemd
, ou les scripts de /etc/rc.d/
) sont exécutés, aucun service graphique ("le serveur X" ne s'exécute).
De plus, la disponibilité du sous-système graphique sous Unix est strictement liée au concept selon lequel un utilisateur a procédé à une connexion graphique et seul cet utilisateur a le droit. utiliser l'environnement graphique. Il est de coutume de NE PAS démarrer un sous-système graphique pour root --- et les scripts upstart sont exécutés par root.
Pour démarrer automatiquement une application graphique au démarrage du système, mon approche serait la suivante:
créer un utilisateur à cet effet. Configurez-le pour que sa session démarre automatiquement.
configurer une application de démarrage pour cet utilisateur avec le programme souhaité; choisissez "application de démarrage" dans le tableau de bord:
pour redémarrer l'application quand elle se ferme/se bloque, vous pouvez simplement l'intégrer dans un script:
#!/bin/bash
#
while true; do
/full/path/to/start_myapp.sh # NO background (&)!
# if we land here it exited
sleep 5
done
Si vous utilisez ce script, il est vraiment important que la commande start_myapp.sh
ne lance pas l'application en arrière-plan. Sinon, des stratégies plus complexes sont nécessaires pour le redémarrage automatique ...
Notez que vous pouvez également utiliser votre utilisateur normal en parallèle. choisissez simplement "changer d'utilisateur" dans le panneau (adaptez-vous à votre version d'Ubuntu) et vous aurez un autre écran de connexion graphique; vous pouvez passer en arrière avec CTRL-ALT-F7 et CTRL-ALT-F8 ...
Créer un fichier $HOME/.config/upstart/myGuiStart.conf
Contenu:
start on desktop-start
stop on desktop-end
respawn
exec firefox
ou un autre exemple avec un délai:
start on desktop-start
stop on desktop-end
respawn
script
sleep 30
firefox
end script
description de respawn:
respawn
A service or task with this stanza will be automatically started
if it should stop abnormally. All reasons for a service stopping,
except the stop(8) command itself, are considered abnormal. Tasks
may exit with a zero exit status to prevent being respawned.
Plus d'informations:
http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html
Respawn bug? -> https://askubuntu.com/a/62461/265974