Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 25/05/2026, à 19:18

RaphaelG

Re : Affichage du temps passé et barre de progression en bash.

J'ai amélioré ma barre de progression.
Avant je ne testais que le pid du process lancé en background.
Le bug possible est que le process se termine mais que le système réalloue le pid à un autre process. Le danger serait d'autant plus grand que la fréquence de test de la présence du pid est basse.
Maintenant je teste le pid plus le nom de la tâche qui tourne en background.
J'ai essayé de la faire avec "ps h -p $pid -o cmd" mais j'ai pas réussi. Je me suis rabattu sur "-o comm".

barredeprogression$ cat launcher-progress-bar3.sh
#!/bin/sh

period=5  # to personalize according the context

echo start

### It's here where you lauch your job ###
./long-job.sh 30 &  ### In this example, the job is totally quiet
### If the job is verbose you must redirect stdout and stderr in a log file
### to protect the progress bar.

Pid1=$! # The process id of the long job
Cmd1=`ps h -p $Pid1 -o comm`

# While the long job is running, print an '*'
while  ps h -p "$Pid1" -o pid > /dev/null
do
    cmd2=`ps h -p "$Pid1" -o comm`
    if [ "$cmd2" = "$Cmd1" ]
    then
        echo -n "*"
        sleep $period
    else break
    fi
done

# The long job is no more running
echo stop
barredeprogression$

Si la tâche lancée se met à parler, évidemment ma barre de progression s'en trouve perturbée. Mais l'OP a bien précisé dans son 1er poste que stdout et stderr sont redirigés vers /dev/null.

Hors ligne

#27 Le 25/05/2026, à 20:28

Watael

Re : Affichage du temps passé et barre de progression en bash.

J'ai essayé de la faire avec "ps h -p $pid -o cmd" mais j'ai pas réussi.

qu'est-ce qui se passe ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#28 Le 25/05/2026, à 21:11

diesel

Re : Affichage du temps passé et barre de progression en bash.

A ma connaissance, le système linux (ou unix) ne réattribue pas les numéros de pid (ou alors après avoir fait le tour de tous les numéros possibles, c'est à dire très longtemps).

Amicalement.

Jean-Marie


Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.

Hors ligne

#29 Le 25/05/2026, à 21:41

RaphaelG

Re : Affichage du temps passé et barre de progression en bash.

@Watael
J'arrive plus à reproduire ma pseudo erreur. Je devais faire une bêtise mais je ne sais pas où.
En fait dans mon script, on peut remplacer les "-o comm" par des "-o cmd", ça marche tout autant et c'est sans doute plus rigoureux.

@diesel
Tu as sans doute raison mais on ne sait jamais, fnux a peut être des jobs qui durent très, très, très longtemps.

Hors ligne

#30 Le 25/05/2026, à 21:54

Watael

Re : Affichage du temps passé et barre de progression en bash.

c'est plus complet. smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#31 Le 31/05/2026, à 03:32

fnux

Re : Affichage du temps passé et barre de progression en bash.

Bonsoir @Watael, @RapahelG et @diesel

Merci de vos messages et désolé si je ne t'y ai pas répondu aussi rapidement, mais en ce moment, j'ai pas mal de soucis de santé.

D'ailleurs, pour ne rien vous cacher, suite à une série de contrôles routiniers passés cette semaine (dopler plus angioscanner et multilples analyses sanguines) je dois passer sur le billard en urgence, soit dans une semaine mardi 9 juin pour une intervention délicate sur la carotide droite et surtout très désagréable (j'ai ai déjà eu une sur la carotide gauche en 2021), mais bon tout va bien se passer. tongue

D'ici là, j'espère pouvoir terminer mes scripts de stress avec une petite barre de progression et, nouveau problème à surmonter: y ajouter un contrôle de la température du CPU car mon outil de stress fonctionne deux fois de suite pendant 1 heure et environ 45 minutes, et vers les deux tiers de test, tous les cores du CPU fonctionnent à 100%, ce qui sur certaines machines pas assez bien refroidies arrive même à provoquer un reboot.

RaphaelG a écrit :

@Watael
J'arrive plus à reproduire ma pseudo erreur. Je devais faire une bêtise mais je ne sais pas où.
En fait dans mon script, on peut remplacer les "-o comm" par des "-o cmd", ça marche tout autant et c'est sans doute plus rigoureux.

En début de ton script, tu indiques: #!/bin/sh

Est-ce que ça ne fonctionne pas en bash (pas eu le temps d'essayer) ?

@diesel a écrit :

Tu as sans doute raison mais on ne sait jamais, fnux a peut être des jobs qui durent très, très, très longtemps.

En tout, près de 3 heures 30.

Voici le lanceur dans lequel j'aimerai afficher cette barre de progression et faire ce contôle de température :

#!/bin/bash
#
# File     : bench-dual.sh
# Title    : Starts stress1.sh then stress2.sh script files
# UpDate   : May 30, 2026
# Release  : 0.99
# Authors  : Fnux with @Watael, @RaphaelG and @diesel from the forum ubuntu.fr
# e-mail   : fnux.fl@gmail.com
# Licence  : Cc-By-Sa
#
# Note:
# -----
# To use this script, place it in the folder where you have installed the 
# stress1.sh and stress2.sh bash sripts files, then you must run it with the
# root priviledge since both stress1.sh and stress2.sh need it when using
# specific system actions.
#
# So start this script with the command [sudo] and if needed enter your password
# i.e. [sudo ./bench-dual.sh]
#
# Then, wait almost 3 and a half hours to get the complete results.
#
# Enjoy.
#
# ------------------------------------------------------------------------------
# Begining of the script execution.
# ------------------------------------------------------------------------------
clear
script_pid=$$
echo $script_pid
machine_type=`uname -m`
os_version=$(lsb_release -sc)
script_date=$(date -R)
script_month=${script_date:8:3}
script_day=${script_date:5:2}
script_year=${script_date:12:4}
Month=$script_month
minimum_temp="85"
maximum_temp="88"
case $Month in
  'Jan')
    script_month="01";;
  'Feb')
    script_month="02";;
  'Mar')
    script_month="03";;
  'Apr')
    script_month="04";;
  'May')
    script_month="05";;
  'Jun')
    script_month="06";;
  'Jul')
    script_month="07";;
  'Aug')
    script_month="08";;
  'Sep')
    script_month="09";;
  'Oct')
    script_month="10";;
  'Nov')
    script_month="11";;
  'Dec')
    script_month="12";;
  *)
    ;;
esac
small_date=$script_year"-"$script_month"-"$script_day
if [ "$USER" != "root" ]
  then
    clear
    echo ""
    echo "Hello $USER,"
    echo ""
    echo "WARNING!"
    echo "--------"
    echo ""
    echo "This script can't be used without the root privileges, [sudo]."
    echo ""
    echo "Please restart the script with the command:" 
    echo ""
    echo "                  [sudo ./bench-dual.sh]"
    echo ""
    echo "Please retry. Goodbye."
    echo ""
    echo "--------------------------------------------------------------------------"
    exit
  else
    clear
    echo ""
    echo "Hello,"
    echo ""
    echo "This script starts stress1.sh then stress2.sh"
    echo ""
    echo " Please, launch the command:"
    echo ""
    echo "                  [sudo ./bench-dual.sh]"
    echo ""
    echo "Then, this script will run up to 3 and a half hours."
    echo ""
    read -p "Continue [y/N] (empty input = N) ? : " RESPONSE  
    case $RESPONSE in
      'N'|'n'|'')
        echo ""; echo "Ok, see you later." ; echo "Goodbye."; exit;;
      'Y'|'y')
        echo ""; echo "Ok, let's start."; echo "So please be patient."; echo ""; echo "script starting date : "; date; echo ""; echo "Please wait to see the message ''I am done. Goodbye.''"; echo "" ;;
       *)
        echo ""; echo "Ok, see you later." ; echo "Goodbye."; exit;;
    esac
fi
script_date1=$(date)
script_start=$SECONDS
#############################################################
#
# This is from where I would like to printf the progress bar.
#
#############################################################
echo ""
echo "--------------------------------------------------------------------------"
date
echo ""
################################################################################
#
# This is from where I would like to control the CPU temperature and make
# a pause if the temperature reachs the $maximum_temp defined value as long as
# the temperature is not equal to the $minimum_temp, then continue the
# execution of the main dual-bench.sh script.
#
################################################################################
echo "./stress1.sh 1&>Results-Bench1-for-$machine_type-on-$os_version-$small_date.txt"
./stress1.sh 1&> "Results-Bench1-for-$machine_type-on-$os_version-$small_date.txt"
echo ""
echo "--------------------------------------------------------------------------"
date
echo ""
echo "./stress2.sh 1&>Results-Bench2-for-$machine_type-on-$os_version-$small_date.txt"
./stress2.sh 1&> "Results-Bench2-for-$machine_type-on-$os_version-$small_date.txt"
################################################################################
#
# This is from where I would like to stop to control the temperature
#
################################################################################
###########################################################
#
# This is from where I would like to stop the progress bar.
#
###########################################################
echo ""
echo "--------------------------------------------------------------------------"
echo ""
script_date2=$(date)
script_stop=$SECONDS
script_hour=$(( (script_stop-script_start) / 3600))
script_minutes=$(( (script_stop-script_start) %3600 / 60))
script_seconds=$(( (script_stop-script_start) %3600 %60))
echo ""
echo "This script start time  : $script_date1"
echo ""
echo "This script end time    : $script_date2"
echo ""
echo "This script elapsed time: "$script_hour"h "$script_minutes"m $script_seconds""s"
echo ""
echo "I am done. Goodbye."
echo ""
if [ -f "Results-Bench1-for-$machine_type-on-$os_version-$small_date.txt" ]
    then
      chmod 777 "Results-Bench1-for-$machine_type-on-$os_version-$small_date.txt"
fi      
if [ -f "Results-Bench2-for-$machine_type-on-$os_version-$small_date.txt" ]
    then
      chmod 777 "Results-Bench2-for-$machine_type-on-$os_version-$small_date.txt"
fi
echo "--------------------------------------------------------------------------"
exit

Merci d'avance de toute aide apportée.

Bien cordialement.

Dernière modification par fnux (Le 31/05/2026, à 08:29)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately

Hors ligne

#32 Le 31/05/2026, à 03:47

Watael

Re : Affichage du temps passé et barre de progression en bash.

Est-ce que ça ne fonctionne pas en bash (pas eu le temps d'essayer) ?

ps n'est pas une commande bash, elle fonctionnerait même sous csh (beurk!).

Dernière modification par Watael (Le 31/05/2026, à 03:48)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#33 Le 31/05/2026, à 08:28

fnux

Re : Affichage du temps passé et barre de progression en bash.

Bonjour Watael,

Merci de ton retrour.

Watael a écrit :

Est-ce que ça ne fonctionne pas en bash (pas eu le temps d'essayer) ?

ps n'est pas une commande bash, elle fonctionnerait même sous csh (beurk!).

Alors à quoi sert la seconde ligne du script de RapahelG "#!/bin/sh" (si ce n'est de quitter bash pour passer à sh, d'où ma question )?

Par ailleurs, je ne vois absolument pas comment intégrer son script dans le mien (le dernier que j'ai posté) car il ne me semble pas complet. Rien que la première ligne "barredeprogression$ cat launcher-progress-bar3.sh" n'est pas comprise dans mon script en bash (bench-dual.sh).

Aurais-tu une idée de comment faire ?

Merci d'avance.

Dernière modification par fnux (Le 31/05/2026, à 08:44)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately

Hors ligne

#34 Le 31/05/2026, à 10:31

RaphaelG

Re : Affichage du temps passé et barre de progression en bash.

/bin/sh est un lien symbolique vers /bin/dash (acronyme de Debian Almquist SHell) toujours installé en plus de bash dans toutes les Debian donc a fortiori dans toutes les Ubuntu.
Pourquoi utiliser dash plutôt que bash :

- Dash se veut full compatible avec le Bourne shell du vieil Unix System V. Hors c'est sur ces vieux Unixes System V que, tout petit, je me suis initié à ce monde merveilleux qu'est le shell. Nostalgie ...

- Dash se veut compatible POSIX, en tout cas plus POSIX que ne l'est bash.

- L'empreinte mémoire de dash est moindre que celle de de bash car dash fait moins de chose que bash. Pas d'historique des commandes, pas d'array, ... .

Si tu remplaces ma 1ère ligne par "#!/bin/bash", mon script fonctionnera tout autant.

Je vais réfléchir à comment intégrer mon script dans le tien.
Mais, déjà, je remarque une grande différence avec ton 1er post.
Dans ton 1er post tu redirigeais tout (stdout et stdrerr) sur /dev/null. Hors là ce n'est pas du tout ce que tu fais en #31. Certes, stress1 et stress2 sont bien redirigés vers /dev/null mais avant et après, il y plein d'echo qui vont s'afficher sur stdout.

Hors ligne

#35 Le 31/05/2026, à 12:30

fnux

Re : Affichage du temps passé et barre de progression en bash.

Bonjour RaphaelG,

Merci de ton retour et surtout de tes explications précises qui me font progressser.

RaphaelG a écrit :

/bin/sh est un lien symbolique vers /bin/dash (acronyme de Debian Almquist SHell) toujours installé en plus de bash dans toutes les Debian donc a fortiori dans toutes les Ubuntu.
Pourquoi utiliser dash plutôt que bash :

- Dash se veut full compatible avec le Bourne shell du vieil Unix System V. Hors c'est sur ces vieux Unixes System V que, tout petit, je me suis initié à ce monde merveilleux qu'est le shell. Nostalgie ...

- Dash se veut compatible POSIX, en tout cas plus POSIX que ne l'est bash.

- L'empreinte mémoire de dash est moindre que celle de de bash car dash fait moins de chose que bash. Pas d'historique des commandes, pas d'array, ... .

Si tu remplaces ma 1ère ligne par "#!/bin/bash", mon script fonctionnera tout autant.

Je vais réfléchir à comment intégrer mon script dans le tien.

Si tu en as le temps et l'occasion, merci d'y ajouter des commentaires car vu le nombre de visites de ce thread (déjà 1.371 lors de ta réponse), je pense que çà en intéresse beaucoup.

RaphaelG a écrit :

Mais, déjà, je remarque une grande différence avec ton 1er post.
Dans ton 1er post tu redirigeais tout (stdout et stdrerr) sur /dev/null. Hors là ce n'est pas du tout ce que tu fais en #31. Certes, stress1 et stress2 sont bien redirigés vers /dev/null mais avant et après, il y plein d'echo qui vont s'afficher sur stdout.

C'est exact, mais justement pendant le temps de l'exécution des scripts (ou de n'importe quel autre commande ou programme) lancés par bench-dual.sh durant lequel j'aimerais voir la barre de progression s'animer, il me semble qu'il n'y a rien qui puisse s'afficher dans la console et donc troubler l'affichage de cette barre de progression (tous les messages sauf deux qui informent uniquement du lancement des commandes sont redirigés vers le fichier Résultats....txt, dont c'est justement le propos.), et si nécessaire je peux remplacer les commandes "echo" par des "printf" (avec les bons caractères d'échappement pour placer le curseur là où il le faut) .

Les seuls autres messages s'affichant dans la console (ou dans stderr) le sont avant, puis après le souhait de l'affichage de la barre de progression.

Pour faire des tests, je te propose de créer deux petits fichiers bash (stress1.sh et stress2.sh) dont la seule fonction est de ne rien faire (sleep) pendant trois ou quatre minutes, le temps de voir la barre de progression s'afficher.

Et dans l'idéal, le temps cumulé de l'exécution des programmes (stress1.sh et stress2.sh ou autre programme) lancés par dual-bench.sh devrait être paramétrable par une variable du genre "execution_time="n" définie en entête de ce script (dans mon cas précis, environ 3 heures 30 soit 12600).

Cela rendrait alors cet exemple utilisable par à peu près n'importe qui et ce quelque soit l'environnement et les scripts, commandes ou programmes lancés juste après l'affichage de la barre de progression.

Qu'en penses-tu ?

En tous cas, très sincèrement merci de ton intérêt à ce post et de ta participation.

Bien cordialement.

Dernière modification par fnux (Le 01/06/2026, à 01:40)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately

Hors ligne

#36 Le 01/06/2026, à 02:01

RaphaelG

Re : Affichage du temps passé et barre de progression en bash.

Le timer je n'y ai pas réfléchi. Ça me semble difficile à réaliser.

Pour le contrôle de température, je ne sais pas non plus comment faire et en plus je ne suis pas sûr de comprendre ce que tu veux en faire.
Tu lances stress2.sh puis au bout d'un certain temps tu l'arrêtes pour contrôler la température.
Si c'est trop chaud, tu fais quoi ? Tu arrêtes tout ou tu laisses refroidir puis tu relances stress2.sh ?
Si la température est acceptable, relances tu stress2.sh ?

Je vais me contenter d'une barre de progression dans ton script bench-dual.sh.
Là où tu lances stress1.sh c'est à dire à la ligne 131, tu as écrit ceci ;

./stress1.sh 1&> "Results-Bench1-for-$machine_type-on-$os_version-$small_date.txt"

Tu remplaces cette ligne par ça :

period=10  # period between 2 *.
           # Here, 10 seconds but you can put what ever you want
./stress1.sh 1&> "Results-Bench1-for-$machine_type-on-$os_version-$small_date.txt" &  # The last & is the key to start stress1.sh in the background.
pid1=$!  # The process id of stress1.sh
cmd1=$(ps h -p $pid1 -o cmd)
# I check if the pid is still running with the same command name
while ps h -p "$pid1" -o pid >/dev/null
do
    cmd2=$(ps h -p "pid1" -o cmd)
    if [ "$cmd2" = "$cmd1" ]
    then
        echo -n "*"
	sleep $period
    else break  # If stress1.sh is finished, I get out of the while loop
    fi
done

Et voilà ! Tu auras une barre de progression pendant la durée de stress1.sh. Le délai entre 2 affichages du caractère '*' dépend de la valeur de la variable delay.
Il te reste à faire la même chose pour stress2.sh.
Tu auras alors 2 barres de progression. Si tu n'en veux qu'une seule, il faudra passer par un script tiers, appelons le stress1plus2.sh qui enchaînera stress1 et stress2 et ce sera stress1plus2.sh qui sera lancé en arrière plan.

Pour les simulations de stress1 et stress2 qui ne font que dormir, tu peux t'inspirer de mon script long-job.sh du post #14.

IHTH.

Hors ligne

#37 Le 02/06/2026, à 14:28

fnux

Re : Affichage du temps passé et barre de progression en bash.

Re bonjour RaphaelG,

RaphaelG a écrit :

Je vais me contenter d'une barre de progression dans ton script bench-dual.sh.
Là où tu lances stress1.sh c'est à dire à la ligne 131, tu as écrit ceci ;

./stress1.sh 1&> "Results-Bench1-for-$machine_type-on-$os_version-$small_date.txt"

Tu remplaces cette ligne par ça :

period=10  # period between 2 *.
           # Here, 10 seconds but you can put what ever you want
./stress1.sh 1&> "Results-Bench1-for-$machine_type-on-$os_version-$small_date.txt" &  # The last & is the key to start stress1.sh in the background.
pid1=$!  # The process id of stress1.sh
cmd1=$(ps h -p $pid1 -o cmd)
# I check if the pid is still running with the same command name
while ps h -p "$pid1" -o pid >/dev/null
do
    cmd2=$(ps h -p "pid1" -o cmd)
    if [ "$cmd2" = "$cmd1" ]
    then
        echo -n "*"
	sleep $period
    else break  # If stress1.sh is finished, I get out of the while loop
    fi
done

Et voilà ! Tu auras une barre de progression pendant la durée de stress1.sh. Le délai entre 2 affichages du caractère '*' dépend de la valeur de la variable delay.
Il te reste à faire la même chose pour stress2.sh.
Tu auras alors 2 barres de progression. Si tu n'en veux qu'une seule, il faudra passer par un script tiers, appelons le stress1plus2.sh qui enchaînera stress1 et stress2 et ce sera stress1plus2.sh qui sera lancé en arrière plan.
IHTH.

Oops, ça ne fonctionne pas, (sauf si j'ai mal recopié ton code).

Voici le retour console :

69807

--------------------------------------------------------------------------
Tue Jun  2 08:00:25 EDT 2026

./bench1.sh 1&>Results-Bench1-for-aarch64-on-resolute-.txt
error: process ID list syntax error

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).

--------------------------------------------------------------------------

sleep 60 to let the CPU to cool down for 1 minute.
^C
fnux@rpi-26-04-lts:~/work$ 

et voici le code du script complet :

#!/bin/bash
#
# File     : bench-dual.sh
# Title    : Starts stress1.sh then stress2.sh script files
# UpDate   : June 2, 2026
# Release  : 0.99b
# Authors  : Fnux with @Watael, @RaphaelG and @diesel from the forum ubuntu.fr
# e-mail   : fnux.fl@gmail.com
# Licence  : Cc-By-Sa
#
# Note:
# -----
# To use this script, place it in the folder where you have installed the 
# stress1.sh and stress2.sh bash scripts files, then you must run it with the
# root priviledge since both stress1.sh and stress2.sh need it when using
# specific system actions.
#
# So start this script with the command [sudo] and if needed enter your password
# i.e. [sudo ./bench-dual.sh]
#
# Then, wait almost 3 and a half hours to get the complete results.
#
# Enjoy.
#
# ------------------------------------------------------------------------------
# Begining of the script execution.
# ------------------------------------------------------------------------------
clear
script_pid=$$
echo $script_pid
machine_type=`uname -m`
os_version=$(lsb_release -sc)
script_date=$(date -R)
script_month=${script_date:8:3}
script_day=${script_date:5:2}
script_year=${script_date:12:4}
Month=$script_month
case $Month in
  'Jan')
    script_month="01";;
  'Feb')
    script_month="02";;
  'Mar')
    script_month="03";;
  'Apr')
    script_month="04";;
  'May')
    script_month="05";;
  'Jun')
    script_month="06";;
  'Jul')
    script_month="07";;
  'Aug')
    script_month="08";;
  'Sep')
    script_month="09";;
  'Oct')
    script_month="10";;
  'Nov')
    script_month="11";;
  'Dec')
    script_month="12";;
  *)
    ;;
esac
small_date=$script_year"-"$script_month"-"$script_day
bench1_result_file="Results-Bench1-for-$machine_type-on-$os_version-$small_date_2.txt"
bench2_result_file="Results-Bench2-for-$machine_type-on-$os_version-$small_date_2.txt"

if [ "$USER" != "root" ]
  then
    clear
    echo ""
    echo "Hello $USER,"
    echo ""
    echo "WARNING!"
    echo "--------"
    echo ""
    echo "This script can't be used without the root privileges, [sudo]."
    echo ""
    echo "Please restart the script with the command:" 
    echo ""
    echo "                  [sudo ./bench-dual.sh]"
    echo ""
    echo "Please retry. Goodbye."
    echo ""
    echo "--------------------------------------------------------------------------"
    exit
    echo ""
    read -p "Continue [y/N] (empty input = N) ? : " RESPONSE  
    case $RESPONSE in
      'N'|'n'|'')
        echo ""; echo "Ok, see you later." ; echo "Goodbye."; exit;;
      'Y'|'y')
        echo ""; echo "Ok, let's start."; echo "So please be patient."; echo ""; echo "script starting date : "; date; echo ""; echo "Please wait to see the message ''I am done. Goodbye.''"; echo "" ;;
       *)
        echo ""; echo "Ok, see you later." ; echo "Goodbye."; exit;;
    esac
fi
script_date1=$(date)
script_start=$SECONDS
delay=10
echo ""
echo "--------------------------------------------------------------------------"
date
echo ""
echo "./bench1.sh 1&>$bench1_result_file"
./stress1.sh 1&> "Results-Bench1-for-$machine_type-on-$os_version-$small_date-2.txt" & # The last & is the key to start stress1.sh in the background.
pid1=$!  # The process id of stress1.sh
cmd1=$(ps h -p $pid1 -o cmd)
# I check if the pid is still running with the same command name
while ps h -p "$pid1" -o pid >/dev/null
do
    cmd2=$(ps h -p "pid1" -o cmd)
    if [ "$cmd2" = "$cmd1" ]
    then
        echo -n "*"
	sleep $delay
    else break  # If stress1.sh is finished, I get out of the while loop
    fi
done
echo ""
echo "--------------------------------------------------------------------------"
echo ""
echo "sleep 60 to let the CPU to cool down for 1 minute."
sleep 60          # this is to let the CPU to cool down for 1 minute.
echo ""
echo "--------------------------------------------------------------------------"
date
echo ""
echo "./bench2.sh 1&>$bench_result_file"
./stress2.sh 1&> "Results-Bench2-for-$machine_type-on-$os_version-$small_date-2.txt" & # The last & is the key to start stress1.sh in the background.
pid1=$!  # The process id of stress2.sh
# I check if the pid is still running with the same command name
cmd1=$(ps h -p $pid1 -o cmd)
while ps h -p "$pid1" -o pid >/dev/null
do
    cmd4=$(ps h -p "pid1" -o cmd)
    if [ "$cmd2" = "$cmd1" ]
    then
        echo -n "*"
	sleep $delay
    else break  # If stress2.sh is finished, I get out of the while loop
    fi
done
echo ""
echo ""
echo "--------------------------------------------------------------------------"
echo ""
script_date2=$(date)
script_stop=$SECONDS
script_hour=$(( (script_stop-script_start) / 3600))
script_minutes=$(( (script_stop-script_start) %3600 / 60))
script_seconds=$(( (script_stop-script_start) %3600 %60))
echo ""
echo "This script start time  : $script_date1"
echo ""
echo "This script end time    : $script_date2"
echo ""
echo "This script elapsed time: "$script_hour"h "$script_minutes"m $script_seconds""s"
echo ""
echo "I am done. Goodbye."
echo ""
if [ -f "Results-Bench-Nginx-for-$machine_type-on-$os_version-$small_date.txt" ]
    then
      chmod 777 "Results-Bench-Nginx-for-$machine_type-on-$os_version-$small_date.txt"
fi      
if [ -f "Results-Bench-Apache2-for-$machine_type-on-$os_version-$small_date.txt" ]
    then
      chmod 777 "Results-Bench-Apache2-for-$machine_type-on-$os_version-$small_date.txt"
fi
echo "--------------------------------------------------------------------------"
exit

STP, peux-tu voir où est le problème et me corriger ?

Merci d'avance.

Cheers.


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately

Hors ligne

#38 Le 02/06/2026, à 15:00

Watael

Re : Affichage du temps passé et barre de progression en bash.

/chemin/absolu/stress1.sh &> "/chemin/absolu/Results-Bench1-for-$machine_type-on-$os_version-$small_date.txt" &

le premier & redirige et la stdout et la stderr vers Results...*
le second & met le processus en arrière-plan.

--
* si tu ne veux que l'un ou l'autre, ce sera ou

/chemin/absolu/stress1.sh 1>/chem/abs/Results &

pour la stdout
ou

/chemin/absolu/stress1.sh 2>/chem/abs/Results &

pour la stderr


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#39 Le 02/06/2026, à 15:46

fnux

Re : Affichage du temps passé et barre de progression en bash.

Bonjour Watael,

Merci de ton intervention, mais je ne comprends pas. hmm

error: process ID list syntax error

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).

En effet, je récupère bien ce que j'attends dans le fichier "Results-Bench1-for-$machine_type-on-$os_version-$small_date.txt" mais vu le renvoi dans la console, il me semble que l'erreur concerne l'ajout du code de RapahelG en regard de l'emploi de la commande "ps" et pas de la redirection ni de stdout, ni de stderr.

Idem pour le lancement de stress2.sh

error: process ID list syntax error

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).

Qu'en penses-tu ?

Cheers.


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately

Hors ligne

#40 Le 02/06/2026, à 16:06

Watael

Re : Affichage du temps passé et barre de progression en bash.

tu as relancé le script avec les corrections proposées ?

error: process ID list syntax error

il ya manifestement un problème avec le PID passé à ps
pour voir lequel, fais un echo de la variable qui le contient, et fait un exit immédiatement après : ce n'est pas la peine de prolonger le script.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#41 Le 02/06/2026, à 21:02

RaphaelG

Re : Affichage du temps passé et barre de progression en bash.

En #23, Watael a donné une syntaxe pour renvoyer stdout et stderr dans un fichier log. J'avais un peu tiqué car, d'habitude, je ne fais pas comme cela mais comme cela venait de Watael, je n'ai pas osé faire de remarque.
En #31, je re-tique dans ta manière de lancer stress1 mais stress2 mais je pense que tu as du suivre les conseils de Watael en #23 donc je reprends la même syntaxe dans mon #36. En fait, je n'avais pas bien regardé. En #31 (et donc en #36 et #37) tu as rajouté un 1 devant le 1er '&'. Ce qui, à mon avis ne marche pas.

Donc pour lancer stress1 (ou 2), il faut faire :

soit comme Watael te l'a déjà dit :

./stress1.sh &> "Results-Bench1-for-$machine_type-on-$os_version-$small_date-2.txt" &

soit comme moi j'ai l'habitude de procéder :

./stress1.sh > "Results-Bench1-for-$machine_type-on-$os_version-$small_date-2.txt" 2>&1 &

Je ne crois pas que les chemins relatif ou absolu ont une influence même si dans les bonnes pratiques du shell, il faut privilégier les chemins absolus.

Hors ligne

#42 Le 02/06/2026, à 21:26

Watael

Re : Affichage du temps passé et barre de progression en bash.

dans les bonnes pratiques du shell, il faut privilégier les chemins absolus

c'est exactement ce que je n'ai fait que suggérer. big_smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#43 Le 04/06/2026, à 22:21

fnux

Re : Affichage du temps passé et barre de progression en bash.

@RapahelG et @ Watael

Désolé de ne pas répondre aussi vite que je le voudrais, mais en ce moment je suis overbooké par de multiples analyses à faire avant mon hospitalisation ce lundi 8 juin.

RaphaelG a écrit :

En #23, Watael a donné une syntaxe pour renvoyer stdout et stderr dans un fichier log. J'avais un peu tiqué car, d'habitude, je ne fais pas comme cela mais comme cela venait de Watael, je n'ai pas osé faire de remarque.
En #31, je re-tique dans ta manière de lancer stress1 mais stress2 mais je pense que tu as du suivre les conseils de Watael en #23 donc je reprends la même syntaxe dans mon #36. En fait, je n'avais pas bien regardé. En #31 (et donc en #36 et #37) tu as rajouté un 1 devant le 1er '&'. Ce qui, à mon avis ne marche pas.

Donc pour lancer stress1 (ou 2), il faut faire :

soit comme Watael te l'a déjà dit :

./stress1.sh &> "Results-Bench1-for-$machine_type-on-$os_version-$small_date-2.txt" &

soit comme moi j'ai l'habitude de procéder :

./stress1.sh > "Results-Bench1-for-$machine_type-on-$os_version-$small_date-2.txt" 2>&1 &

Encore une fois, merci à vous deux pour votre aide.

Et si je mettais mes lunettes, celà m'éviterais de faire des fautes de frappe tongue

Maintenant, mon script affiche bien une barre de progression avec des "*" cool

Je vais voir comment l'améliorer un peu en affichant aussi une barre pleine de "-" à surcharger par les "*" et aussi, si possible,  un timer soit avant cette barre de progression, soit sur la ligne au dessus.

Pour le contrôle de la température, c'est un autre sujet sur lequel je travaillerai la semaine prochaine lors de mon séjour à l'hôpital.

Encore merci de votre participation particulièrement efficace et instructive.

Je mettrais [résolu] dans le titre une fois mes benchmarks terminés et le code complet publié dans ce thread.

Cheers.


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately

Hors ligne

#44 Le 07/06/2026, à 06:46

fnux

Re : Affichage du temps passé et barre de progression en bash.

@RapahelG et @ Watael
Salut,

Je suis toujours en train d'essayer d'améliorer la présentation de ma barre de progression et ça avance bien, mais je fais face à un problème que je ne comprends pas. roll

Pour la mise au point de mes essais, j'ai écrit deux petits scripts bash. hmm

Le premier (simule-stress.sh) exécute une tâche qui dure 1 minute qui sera lancée en "background" par le second script (cursor-play.sh) qui lui, lance le premier script et affiche un timer ainsi qu'une barre de progression juste paramétrée pour se remplir pendant la minute du temps d'exécution du premier script. cool

Mon problème est que si la barre de progression est correctement calibrée et se déroule exactement comme il faut grâce aux instructions "put sc" et "put rc", l'affichage du timer, lui, n'est pas mis à jour alors que je le positionne pourtant bien au bon endroit ! sad

D'ailleurs, en regardant très attentivement la console pendant l'exécution du script, on voit bien que le curseur se positionne à l'endroit où le timer devrait s'afficher... mais celui-ci ne s'affiche pas ! mad

Une idée d'où je me trompe ? big_smile

Voici ces deux petits scripts de mise au point :

#!/bin/bash
# File     : simul-stress.sh
#
script_pid=$$
echo $script_pid    # will not be displayed since started in background with console stdout redirected to a file
sleep 60 
exit

et

#!/bin/bash
# File     : cursor-play.sh
#
script_date=$(date -R)
delay1=0.86                                  # to adjust the delay, divide the estimated execution time
script_hour=${script_date:17:8}
clear
echo "Hello $USER" 
echo ""
./simul-stress.sh > simul-stress.txt 2>&1 &  # redirect stdout to the simul-stress.txt file
pid1=$!                                      # this is the pid of the ./simul-stress.sh prosess
cmd1=$(ps h -p $pid1 -o cmd)
echo ""
tput cup 2 0                                 # place the cursor on column 0 of line 2
echo -n -e ""$script_hour"  [________._________._________._________._________._________._________]"
tput cup 2 11                                # place the cursor on column 11 of line 2 to avoid erazing the timer
while ps h -p "$pid1" -o pid >/dev/null      # the loop is OK
do
  cmd2=$(ps h -p "$pid1" -o cmd)
  if [ "$cmd2" = "$cmd1" ]
    then
      echo -n -e "\033[35;47m >\b"           # display the first element of the progress bar
      tput sc                                # save the cursor position (column and line)
	sleep $delay1                        #
      tput cup 2 0                           # place the cursor on column 0 of line 2 to display the timer
      script_time=${script_date:17:8}        # re compute the hour
      echo -n -e "\033[0m$script_time"       # should display the timer on column 0 of line 2... but don't!
      tput rc                                # restore the cursor position to display the next element of 
                                             # the progress bar.
    else break  
  fi
done
echo -e "\n"
echo -e "\033[0mThe cursor-play.sh bash script has been successfully completed in 1 minute."
echo ""

Et l'exécution dans la console donne ceci :

Hello fnux

05:17:04  [---------------------------------------------------------------------->]

The cursor-play.sh bash script has been successfully completed in 1 minute.

fnux@rpi-26-04-lts:~/work/miscelaneous-tests$ 

Merci d'avance de votre aide, car une fois ce problème réglé, je pourrais l'intégrer dans mon vrai script de stress et il ne me restera plus qu'à gérer le contrôle de la température du CPU à l'aide des informations de "sensors".

Bien cordialement.

Dernière modification par fnux (Le 07/06/2026, à 07:07)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately

Hors ligne

#45 Le 07/06/2026, à 15:04

Watael

Re : Affichage du temps passé et barre de progression en bash.

je regarderai en détail ce soir.

je n'utilise pas tput, je me sers des codes d'échappement ANSI avec printf.
ça fait la même chose, sans commande externe.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#46 Le 07/06/2026, à 16:30

RaphaelG

Re : Affichage du temps passé et barre de progression en bash.

Avant tout, force et courage face à ton opération.

Pour ton script, dans la boucle while :

      script_time=${script_date:17:8}        # re compute the hour

La variable $script_date est initialisée au début du script. Dans la boucle while tu ne la réinitialises pas mais tu la ré-utilises telle quelle donc $script_time ne change pas de valeur.
Essaye en ré-initialisant $script_date juste avant de l'utiliser :

      script_date=$(date -R)
      script_time=${script_date:17:8}

Pourquoi "date -R" ? Tu as "date +%H:%M:%S" qui donne le résultat escompté directement.

@Watael
Balancer de l'octal ou de l'hexa avec printf ou echo est quand même moins portable et plus dépendant de ton terminal alors que tput va regarder la description de ton terminal dans la data base Terminfo en fonction de ta variable $TERM.

Dernière modification par RaphaelG (Le 07/06/2026, à 16:32)

Hors ligne

#47 Le 07/06/2026, à 17:17

Watael

Re : Affichage du temps passé et barre de progression en bash.

wikipédia a écrit :

Les émulateurs de terminaux, qui permettent de lancer et d'éditer des programmes en local, utilisent presque tous les codes d'échappement ANSI, de même que les consoles.

"presque tous" ça ne doit pas laisser beaucoup de terminaux non compatibles. Trouve-m'en un, je le mettrai dans ma liste de programmes à ne pas utiliser, et je n'utiliserai toujours pas tput. lol

d'ailleurs, l'expression est ambiguë :
est-ce
« presque tous les émulateurs utilisent les séquences d'échappement ANSI »
ou
« les émulateurs utilisent presque la totalité des séquences d'échappement »
???
big_smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#48 Le 07/06/2026, à 18:00

MicP

Re : Affichage du temps passé et barre de progression en bash.

Bonjour fnux

Essaye avec ça :

#!/bin/bash
# https://forum.ubuntu-fr.org/viewtopic.php?id=2095548
# File     : cursor-play.sh
#

delay1=0.86                                  # to adjust the delay, divide the estimated execution time

clear
echo "Hello $USER" 
echo
./simul-stress.sh > simul-stress.txt 2>&1 &  # redirect stdout to the simul-stress.txt file
pid1=$!                                      # this is the pid of the ./simul-stress.sh prosess
cmd1=$(ps h -p $pid1 -o cmd)
echo
tput cup 2 0                                 # place the cursor on column 0 of line 2

echo -n -e "$(date +%T)  [________._________._________._________._________._________._________]"
tput cup 2 11                                # place the cursor on column 11 of line 2 to avoid erazing the timer
while ps h -p "$pid1" -o pid >/dev/null      # the loop is OK
do
  cmd2=$(ps h -p "$pid1" -o cmd)
  if [ "$cmd2" = "$cmd1" ]
    then
      echo -n -e "\033[35;47m >\b"           # display the first element of the progress bar
      tput sc                                # save the cursor position (column and line)
	sleep $delay1                        #
      tput cup 2 0                           # place the cursor on column 0 of line 2 to display the timer
      echo -n -e "\033[0m$(date +%T)"        # display the timer on column 0 of line 2
      tput rc                                # restore the cursor position to display the next element of 
                                             # the progress bar.
    else break  
  fi
done
echo
echo -e "\033[0mThe cursor-play.sh bash script has been successfully completed in 1 minute."
echo

Au début, j'ai cru que tu voulais afficher le nombre d'heures, minutes et secondes du temps écoulé puis j'ai compris que tu voulais juste afficher l'heure, minute, seconde courantes.
Mais je n'ai peut-être pas bien compris ce que tu voulais faire.

Dernière modification par MicP (Le 07/06/2026, à 18:28)

Hors ligne

#49 Le 08/06/2026, à 00:31

fnux

Re : Affichage du temps passé et barre de progression en bash.

@RaphaelG et @Watael et @MicP

Salut à vous trois.

RaphaelG a écrit :

Avant tout, force et courage face à ton opération.

Merci, mais j'y vais confiant car le connais déjà le "coupeur de mou" (en référence au film M*A*S*H que j'ai revu très récemment) lol

RaphaelG a écrit :

Pour ton script, dans la boucle while :

      script_time=${script_date:17:8}        # re compute the hour

La variable $script_date est initialisée au début du script. Dans la boucle while tu ne la réinitialises pas mais tu la ré-utilises telle quelle donc $script_time ne change pas de valeur.
Essaye en ré-initialisant $script_date juste avant de l'utiliser :

      script_date=$(date -R)
      script_time=${script_date:17:8}

Il y a des jours où je mérite des claques car comme un niaizeux que je suis, je pensais que le simple fait d'afficher la variable avec le signe $ la réinitialisait avant de l'afficher ! C'est ballot. tongue

Maintenant, effectivement le "timer" est bien réinitialisé et affiché au bon endroit.:cool:

RaphaelG a écrit :

Pourquoi "date -R" ? Tu as "date +%H:%M:%S" qui donne le résultat escompté directement.

Pourquoi "date -R"?
1) par ce que je ne connaissais pas "date +%H:%M:%S" (merci, ça me fait gagner au moins un cycle d'horloge et je n'ai même plus besoin d'initialiser une variable pour afficher le timer) et,
2) (je sais que ça va en faire râler certains car il ne faut jamais critiquer les gens de Canonical ou des autres distros), le man de date ne présente pas cette possibilité, ou alors elle est bien cachée. hmm

D'ailleurs, en règle générale, je trouve que l"immense majorité des pages man sont quasiment inutilisables pour les béotiens par leur manque cruel d'exemples d'utilisation.

La page man de date en est une parfaite illustration ou l'auteur montre même des résultats... mais sans jamais donner la syntaxe utilisée pour obtenir les résultats présentés.

C'est non seulement débile mais surtout parfaitement inutile.

Bon, il parait que ces pages sont écrites et maintenues par de soit disant bénévoles non rémunérés, ce que je ne crois absolument pas.

Mais en tout état de cause, ce n'est pas une excuse car les "VENDORS" (Canonical et autres) sont censés vérifier ce qu'ils distribuent (à titre gracieux ou non d'ailleurs).

C'est un sujet qui mérite réflexions, voir même d'écrire un véritable recueil de toutes les commandes de toutes les pages man avec les exemples de syntaxe d'utilisation de toutes les commandes et les présentations des résultats attendus.

Pendant ma longue carrière (plus de 35 ans), j'ai écrits des dizaines de manuels d'utilisation (papier, .pdf et on line intégrés) de logiciels très différents dont certains bouquins de plus de 800 pages car justement bourrés de captures d'écran expliquant les manipulations à faire et leurs résultats attendus, et je reste médusé devant le manque total de professionnalisme de ces man pages.

Il y a sûrement là un joli petit business à créer à publier (même pour vraiment pas cher) un tel ouvrage qui servirait aussi bien aux débutants comme moi ou Madame Michu, que d'aide mémoire aux experts, non ?

Qu'en pensez-vous ?

Mais SVP, revenons à nos moutons (le script cursor-play.sh)

Si je modifie la valeur du script simul-stress.sh et la passe à 120 au lieu de 60 (soit 2 minutes)

#!/bin/bash
# File     : simul-stress.sh
sleep 120  # do nothing during the 'n' number of seconds of the command 'sleep n'
exit

je dois alors aussi modifier la valeur de delay1 du script cursor-play.sh pour afficher les éléments de la barre de progression maintenant toutes les 2 secondes et ajouter une nouvelle variable delay2 qui sera applicable à une autre boucle d'affichage du timer dont la fréquence est différente (pour afficher le timer toutes les 1 secondes) et ce en fait, quelque soit la durée nécessaire pour afficher la première boucle d'affichage de la barre de progression.
.
J'ai essayé différentes solutions dont une seconde boucle while imbriquée dans la première ou un test if fi, mais rien à faire, je n'y arrive pas.

En attendant, voici mon code modifié (plus court) qui fonctionne maintenant bien pour afficher le timer correctement mais seulement et seulement si le délai d'affichage du timer est égal à celui de l'affichage des éléments de la barre de progression .

#!/bin/bash
# File     : cursor-play2.sh
#
delay1=0.8571                                # to adjust the delay, divide the estimated execution time in seconds
                                             # by the number of elements of the progress bar (70)
                                             # should be 1.7143 for 120 seconds and 4.2857 for 5 minutes
clear
echo "Hello $USER" 
echo ""
./simul-stress.sh > simul-stress.txt 2>&1 &  # redirect stdout to the simul-stress.txt file
pid1=$!                                      # this is the pid of the ./simul-stress.sh prosess
cmd1=$(ps h -p $pid1 -o cmd)
echo ""
tput cup 2 0                                 # place the cursor on column 0 of line 2
echo -n -e " \033[0m$(date +%H:%M:%S) [________._________._________._________._________._________._________]"
tput cup 2 11                                # place the cursor on column 11 of line 2 to avoid erazing the timer
while ps h -p "$pid1" -o pid >/dev/null      # the loop is OK
do
  cmd2=$(ps h -p "$pid1" -o cmd)
  if [ "$cmd2" = "$cmd1" ]
    then
      echo -n -e "\033[35;47m >\b"           # display the first element of the progress bar
      tput sc                                # save the cursor position (column and line)
      sleep $delay1                          #
      tput cup 2 0                           # place the cursor on column 0 of line 2 to display the timer
      echo -n -e "\033[0m $(date +%H:%M:%S)" # should display the timer on column 0 of line 2... but don't!
      tput rc                                # restore the cursor position to display the next element of 
                                             # the progress bar.
    else break  
  fi
done
echo -e "\n"
echo -e "\033[0mThe cursor-play.sh bash script has been successfully completed in 1 minute."
echo ""
MicP a écrit :

Au début, j'ai cru que tu voulais afficher le nombre d'heures, minutes et secondes du temps écoulé puis j'ai compris que tu voulais juste afficher l'heure, minute, seconde courantes.
Mais je n'ai peut-être pas bien compris ce que tu voulais faire.

@ MicP, OOPS, désolé je n'avais pas vu ton message pendant que je rédigeais le mien surtout  avec une pause pour aller dîner avec ma "blonde" à qui je vais faire des vacances pendant 8 jours. lol

Merci de ton code qui est très proche du mien sauf que je ne connaissais pas non plus la commande "date +%T" (voir plus haut sur mon avis à propos des pages man dont celle de date). roll

Cà, c'est une bonne idée d'amélioration du script.

En effet. je pourrais par exemple raccourcir la barre de progression pour afficher aussi toutes les secondes le temps passé cumulé sur la même ligne mais juste après la marque de fin de cette barre de progression.

Si tu as une  proposition qui va dans ce sens, je suis preneur bien évidemment.  wink

Watael a écrit :

je n'utilise pas tput, je me sers des codes d'échappement ANSI avec printf.
ça fait la même chose, sans commande externe.

@Watael : juste pour comprendre et surtout pour apprendre, comment ferais-tu sans utiliser "tput cup" et  surtout "tput sc" et "tput rc" seulement avec printf et les codes d'échappement ANSI ?

J'ai aussi constaté sur mon PI 500+ (sous Ubuntu 26.04 LTS pour CPU ARM) que la commande "IFS" n'étais pas reconnue ! C'est dommage car j'avais trouvé un exemple de petit script qui récupérait les valeurs des positions line et column du curseur pour ne pas utiliser "tput". big_smile

A plus vous tous, demain je pars à l'hosto à partir de 15 heures, mais j’emmène mon Pi 500+ de guerre (CPU ARM Kortex A76 Quad Core @ 2.4 GHz, RAM 16 GB, SSD NVMe 256 GB pour seulement 249.00€) pour continuer à bosser là-bas à partir de mercredi matin.

Merci d'avance de vos idées pour afficher le timer toutes les secondes quelque soit la durée d'exécution prévue du job lancé en background.

Cheers.

Dernière modification par fnux (Le 08/06/2026, à 00:53)


N'engage pas un débat lors d'un dîner car celui qui n'a pas faim aura le dernier mot. - R. Whately

Hors ligne

#50 Le 08/06/2026, à 01:59

Watael

Re : Affichage du temps passé et barre de progression en bash.

IFS (Internal Field Separator) ? c'est une variable du shell. Dans quelle circonstance as-tu voulu l'utiliser ?
ou c'est autre chose ?

tput cup 0 2 :

printf '\033[0;2H'

tput sc:

printf '\0337'

tput rc:

printf '\0338'

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne