J'ai deux scripts - un pour monter des dossiers sur SSHFS - et un pour démonter.
Je voudrais lancer le script de montage lorsque mon bureau Ubuntu par défaut est lancé (après que je me suis connecté à la console graphique) - et le script de démontage lorsque je me "déconnecter ..." de la roue dentée en haut à droite de le bureau.
S'il vous plaît quelqu'un peut-il me dire comment y parvenir? Quels sont les hooks/standards les plus pratiques pour exécuter des commandes lors du lancement/de la sortie du bureau?
La solution consistait à utiliser les tâches les plus récentes. J'avais besoin de deux tâches - une déclenchée lors de l'initialisation du poste de travail pour un utilisateur; la seconde lorsque la session des utilisateurs expire. Les deux scripts suivants fonctionnent pour moi sous Ubuntu 14.04.
Dans ~/.config/upstart/desktopOpen.conf
description "Desktop Open Task"
start on desktop-start
task
script
# Commands to mount sshfs go here as Shell-script.
end script
Dans ~/.config/upstart/desktopClose.conf
description "Desktop Close Task"
start on session-end
task
script
# Commands to unmount sshfs go here as Shell-script.
end script
Mes doigts se croisent pour dire que ces événements continueront de répondre aux exigences des futures versions d'Ubuntu. J'ai pensé que cela valait la peine de publier ma solution ici - au cas où elle serait utile à d'autres.
Étant donné que vous devez exécuter un travail lorsque vous vous connectez à Unity et non pour d’autres connexions, un programme Upstart travail de session semble parfait.
Vous l'avez peut-être remarqué: les processus que vous exécutez après une connexion à l'interface graphique sont soumis à un second processus init
. Cette init
est une init Upstart appropriée et vous pouvez démarrer et arrêter des travaux de session en fonction des événements émis par celle-ci. Aucun privilège root nécessaire. Mieux encore (ou pire selon la perspective), cette solution n'est pas encore totalement prise en charge pour les systèmes sans tête. Une connexion SSH n'a pas démarré l'utilisateur init à partir d'un test rapide que je viens de faire.
Pour créer un travail de session, créez un nouveau fichier .conf
dans ~/.config/upstart
. C'est le répertoire principal par défaut pour les travaux de session Upstart ($XDG_CONFIG_HOME/upstart
), créez-le s'il n'existe pas. Voici un exemple de travail:
tee ~/.config/upstart/myjob.conf <<EOF
description "My job"
start on desktop-start
stop on desktop-end
script
firefox 'http://upstart.ubuntu.com/cookbook/#session-job'
end script
EOF
Vous pouvez le contrôler manuellement:
start myjob
# or
initctl start myjob
Les commandes service
permettent de contrôler les travaux système (ceux de /etc/init.d
ou /etc/init
). Pour contrôler les travaux de session, vous devez utiliser la commande initctl
, qui permet d’interagir avec Upstart.
Voir man upstart-events
pour plus d'événements que vous pouvez utiliser.