web-dev-qa-db-fra.com

Empêcher une application d'être fermée à la sortie du terminal

J'ai créé un script bash qui démarre une application. Puisque je voulais que la fenêtre du terminal se ferme au démarrage de l'application, j'ai utilisé cette ligne:

firefox & 2> /dev/null; exit;

Cela fonctionne bien tant que je lance le script à partir de la ligne de commande. Cependant, si je le lance à partir d'un laucher de bureau, l'application se ferme ainsi que le terminal. Quelqu'un peut-il expliquer pourquoi? J'utilise Ubuntu 10.10.

En utilisant seulement:

    Nohup firefox

ça marche. Mais j'aimerais quand même avoir une explication sur la raison pour laquelle la version originale ne fonctionne pas avec un lanceur de bureau, si possible.

3
Lars

La solution consiste simplement à utiliser le bon formulaire dans le tuyau:

firefox > /dev/null 2>&1
exit

Cela fonctionne à la fois depuis un terminal et depuis un lanceur de bureau. Pas besoin d'utiliser Nohup.

6
Lars

Essayez la commande Nohup:

Nohup firefox & 2> /dev/null; exit;

Nohup déconnecte les travaux en cours de la session de terminal, ce qui les empêche d'être fermés à la sortie.

Toutefois, si vous souhaitez uniquement démarrer Firefox, créez simplement un raccourci vers celui-ci, sans script bash.

Explication complémentaire: essayez d’exécuter le script à partir d’un terminal, laissez la fenêtre firefox ouverte et fermez le terminal dans lequel vous avez exécuté votre script. Firefox se fermera aussi bien qu’il s’agit d’un processus enfant de la session de terminal à partir de laquelle il a été démarré.

5
Michael K

Une solution qui a fonctionné pour moi est de mettre un sommeil de 1 seconde dans le script.

Voici un exemple minimal du script que j'essayais d'exécuter via un lanceur de bureau gnome:

#!/bin/bash
echo "test"
read e

Nohup firefox & 2> /dev/null
exit

Cela fonctionne bien lorsqu’on démarre à partir d’un terminal, c’est-à-dire:

  1. il affiche "test" et après avoir appuyé sur Entrée, firefox démarre
  2. firefox reste en vie lors de la fermeture du terminal

Cependant, lors du démarrage à partir d'un programme de lancement de bureau avec:

gnome-terminal -e "script"

un terminal affiche "test" et s'éteint après avoir appuyé sur enter (firefox ne se présente jamais, je suppose qu'il est tué avec le terminal).

Cependant, les travaux suivants ont commencé avec un lanceur:

#!/bin/bash
echo "test"
read e

Nohup firefox & 2> /dev/null
sleep 1
exit

dans ce cas, Firefox démarre après avoir appuyé sur Entrée et reste actif lorsque le terminal s'éteint après l'heure de veille (ou est fermé pendant l'heure de veille).

0
dom