Next: Traitement de la liste
Up: Scripts utiles et commandes.
Previous: Ecrasement en toute sécurité
Table des matières
Imaginons que nous voulions lancer le terminal rxtv
en arrière-plan. Ceci peut être réalisé ainsi:
Cependant, une fois lancé, rxtv a encore
sa sortie connectée au shell et reste un processus-fils du shell.
Or, si le shell dont dépend rxtv meurt,
il emporte ses processus-fils. Par ailleurs, rxtv
peut aussi mourir de lui-même en tentant de lire ou d'écrire dans
un terminal qui n'existe pas sans le shell-parent. Essayons donc à
présent:
{rxtv >/dev/null 2>&1 </dev/null
&} &
|
Cette technique est connue sous le nom de forking twice ou redirection d'un terminal vers dev null.
[NdT: sous UNIX, le terme forking désigne une instruction
ou une commande (parfois nommée primitive) créant un nouveau
processus à partir d'un autre sans détruire celui-ci. On pourrait
donc tenter de traduire forking twice par ``dédoublement
d'instruction(s)'']. Le shell est donc
informé en matière de processus-fils mais pas concernant le processus
résultant du forking twice. Dès lors, nous pouvons créer un
processus-démon propre avec la commande ci-dessus.
Par conséquent, il est possible de créer un démon qui redémarre au
cas où il lui arriverait de mourir. Bien qu'une telle fonctionnalité
soit plus aisée à réaliser en C (dont nous verrons un aperçu
au chapitre 23), vous pouvez atteindre
cet objectif en bash avec:
{ { while true; do rxtv; done; }
>/dev/null 2>&1 </dev/null & } &
|
Vous pouvez observer l'effet de ces astuces en lançant:
Next: Traitement de la liste
Up: Scripts utiles et commandes.
Previous: Ecrasement en toute sécurité
Table des matières
1-01-2006