# Créer un processus indépendant du shell (bash)

**URL:** <https://www.debian-fr.org/t/creer-un-processus-independant-du-shell-bash/23854>\
**Category:** Trucs et Astuces\
**Created:** [Février 20, 2016, 9:12 UTC](https://www.debian-fr.org/t/creer-un-processus-independant-du-shell-bash/23854 "2016-02-20T21:12:56Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![branch](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ee7513/32.png) [@branch](https://www.debian-fr.org/u/branch)\
**Post date:** [Février 20, 2016, 9:12 UTC](https://www.debian-fr.org/t/creer-un-processus-independant-du-shell-bash/23854/1 "2016-02-20T21:12:56Z")

</div>

Nom : Créer un processus indépendant du shell.

Configuration requise : L’interprète de commandes Bash.

Description : Lorsqu’on lance un programme depuis le shell bash, par exemple “iceweasel”, et que l’on ferme le terminal, l’application lancée est fermée elle aussi. C’est normal puisque tout processus enfant est tué lorsque le processus parent dont il est issu est tué. Les messages d’erreur de l’application sont aussi affichés dans le terminal.

Procédure simple : Pour lancer iceweasel sur le forum debian-fr, d’habitude on fait :

```auto

```

Il y a deux possibilité pour lancer iceweasel depuis le shell, sans perdre le contrôle :

[code]$ nohup iceweasel [http://forum.debian-fr.org/](http://forum.debian-fr.org/) &\> /dev/null &

$ iceweasel [http://forum.debian-fr.org/](http://forum.debian-fr.org/) &\> /dev/null & disown[/code]

Procédure avancée : On va créer une fonction Bash nommée “start” qui nous permettra de lancer simplement la commande

```auto

```

à la place de la procédure précédente.

Pour cela il faut ajouter ceci à la fin du fichier /home//.bashrc :

`function start {
  nohup $@ &> /dev/null &
}`  
ou bien :

`function start {
  $@ &> /dev/null & disown
}`

Merci à MisterFreez pour avoir énormément amélioré ce truc et astuce !

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 9:12 UTC](https://www.debian-fr.org/t/creer-un-processus-independant-du-shell-bash/23854/2 "2016-02-20T21:12:57Z")

</div>

Ça ne reviendrais pas au même d’utiliser nohup ?

Sinon sous zsh on peut utiliser l’option nohup (setopt nohup dans ~/.zshrc). Après quand on essaie de se déconnecter, zsh nous avertis qu’il a un fils (« Non ! Ne me tue pas ! J’ai un enfant ! Il a besoin de moi ! ») et il faut le fermer en deux fois. Ou alors on peut le lancer avec &!

```auto

```

Ce qui supprime ce message.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 9:12 UTC](https://www.debian-fr.org/t/creer-un-processus-independant-du-shell-bash/23854/3 "2016-02-20T21:12:57Z")

</div>

A oui inutile de proposer d’installer gcc, il y a d’autres compilateurs moins lourd si c’est juste pour compiler un petit programme comme ça genre tcc. 😉

---

<div class="post-metadata">

**Author:** ![branch](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ee7513/32.png) [@branch](https://www.debian-fr.org/u/branch)\
**Post date:** [Février 20, 2016, 9:12 UTC](https://www.debian-fr.org/t/creer-un-processus-independant-du-shell-bash/23854/4 "2016-02-20T21:12:59Z")

</div>

J’ai changé le compilateur proposé, et j’ai modifié la ligne de commande pour la compilation (gcc est devenu cc).

Par contre, ce truc et astuce doit fonctionner avec les shell Bash.  
Voici mes essais avec nohup :

[code]nohup iceweasel [http://forum.debian-fr.org/](http://forum.debian-fr.org/)  
nohup: ignoring input and appending output to `nohup.out’  
ls

[/code]  
La première ligne est embêtante (parasite). De plus ça ne rend pas le contrôle au shell (la commande ls n’est pas exécutée). Et autre point négatif : la sortie est dirigée dans un fichier texte, il faudrait l’ignorer purement et simplement (c’est le cas le plus courant).

```auto

```

Là le comportement est bon. Le tuto est le même sauf que le programme C sera un peu différent.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 9:13 UTC](https://www.debian-fr.org/t/creer-un-processus-independant-du-shell-bash/23854/5 "2016-02-20T21:13:01Z")

</div>

Et avec ceci dans .bashrc du coup ?

`function start
{
  nohup $@ &> /dev/null &
}`

---

<div class="post-metadata">

**Author:** ![branch](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/b/ee7513/32.png) [@branch](https://www.debian-fr.org/u/branch)\
**Post date:** [Février 20, 2016, 9:13 UTC](https://www.debian-fr.org/t/creer-un-processus-independant-du-shell-bash/23854/6 "2016-02-20T21:13:05Z")

</div>

:smt103 quelle concision ! Ca marche très bien en plus. J’édite mon post de suite.

* * *

TODO : Je viens de tomber sur ce truc et astuces : [viewtopic.php?f=8&t=1951](http://forum.debian-fr.org/viewtopic.php?f=8&t=1951)  
Deux choses à voir : “bg” et “jobs”.  
En plus sur wikipédia ([nohup](http://en.wikipedia.org/wiki/Nohup)), ils disent qu’on peut utiliser “at” :

```auto

```
