Function et screen [Résolut]

hello

je lance un script Shell dans/etc/init.d

Seulement si le script boucle ou plante, ou un des programmes plante sa gel la suite du démarrage bref sa plainte.

donc je pense lancer le programme normalement et pour les trucs qui puissent planter par exemple l’installation de Virtualbox

ça donne :

function fonction_qui_va_planter() { while true ;do echo « bug boucle » ou binaire_qui_a_planter } function main () { screen — m fonction_qui_va_planter }

Autrement je doit passer par un second fichier :frowning:
Seulement ça ne marche pas. Il y a peux être une autre manière de faire ?

surement.

[quote=“panthere”]hello

je lance un script Shell dans/etc/init.d

Seulement si le script boucle ou plante, ou un des programmes plante sa gel la suite du démarrage bref sa plainte.
[/quote]

Jusque là je comprend.

[quote=“panthere”]
donc je pense lancer le programme normalement et pour les trucs qui puissent planter par exemple l’installation de Virtualbox

ça donne :

function fonction_qui_va_planter() { while true ;do echo « bug boucle » ou binaire_qui_a_planter } function main () { screen — m fonction_qui_va_planter }

Autrement je doit passer par un second fichier :frowning:
Seulement ça ne marche pas. Il y a peux être une autre manière de faire ?[/quote]

Tout le reste je pige que dalle.

Si je crois qu’il voudrait lancer la fonction en parammèle de telle manière à ne pas l’attendre:

Tu peux utiliser un script d’attente:

#!/bin/sh COMMAND=$2 DELAI=$1 BUTEE=`date +"%s"` BUTEE=$[$BUTEE+$DELAI] $COMMAND & PID=$! ESTLA=`ps $PID | grep $PID` while [ -n "$ESTLA" ] ; do DATE=`date +"%s"` if [ $DATE -ge $BUTEE ] ; then kill $PID fi ESTLA=`ps $PID | grep $PID` done

Par exemple:
$ limite.sh 2 "sleep 50"
limite à 2 secondes la commande sleep 50

Tu peut appeler ta fonction entre parenthèse ça lance un fork.
Sinon tu peut aussi appeler ta fonction avec un & à la fin ça le détache de processus principal.

fran.b est dans le vrai. seulement c’est pas ce que je veux faire. du moin en tout ca pas kill le programe sans que l’utilisateur puisse regarder ce qui si passe, d’ou l’interet de screen.

#!/bin/sh


fonction traitement () 
{
echo "ici le programe plante, simuler par le signial 19"
kill -s 19 le_pid_duprgrame (-s 18 pour reprendre) 
# ici on continue que si le programme c'est terminer sinon on attend.
echo " il pose peu une question que l'utilisateur peut répondre "
echo " pour que ça continue normalement "
}

fonction main () 
{
    echo " ça doit rester, soit dans un autre tty, soi dans un screen"
    echo " pour que l'utilisateur puisse voir l'erreur, et aux besoins "
    echo " répondre aux questions du programme lancé "
    echo " aptitude — y " " Evite les questions mai si on élève le — y ça gèle le tout "
traitement
    echo " ça continue, traitement n'empêche pas la suite "
}
main

Je suis pas sur que tout les *sh soient le top pour gérer des processus.

Mais tu peut regarder du coté de fg, jobs tout ça.
Ou sinon regarder du coté de ksh ou zsh.

Dans ce cas:

#!/bin/sh COMMAND=$2 DELAI=$1 BUTEE=`date +"%s"` BUTEE=$[$BUTEE+$DELAI] $COMMAND | tee /tmp/resultats 2> /tmp/erreurs & ERREUR=0 PID=$! ESTLA=`ps $PID | grep $PID` while [ -n "$ESTLA" ] ; do DATE=`date +"%s"` if [ $DATE -ge $BUTEE ] ; then ERREUR=1 ESTLA="" else ESTLA=`ps $PID | grep $PID` fi done

Hello
Finalement je passe par un fichier avec screen.

exemple:

#echo -e "\r\Etape 1" > /dev/tty1 echo "' texte a executer'" >> /monfichier.txt #echo -e "\r\Termine" > /dev/tty1 chmod +x /monfichier.txt Ensuite un lien dans /etc/rc2.d et sa roule :slightly_smiling:

sa permet de démarrer la machine et si sa plante l’utilisateur peux ce loguer et aller voir le screen :slightly_smiling:

Les messages son afficher dans le TTY1 également
voila :slightly_smiling:

Merci a tous pour les réponses :smt006