Salut à tous,
souci super strange. J'avoue ne pas comprendre et appelle les experts du coin : ).
J'écris un script de test de performances réseau basé sur l'application dd.
En bas du document man dd on lit :
Sending a USR1 signal to a running ‘dd’ process makes it print I/O statistics to standard error and then resume copying.
$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1;kill $pid
En essayant direct sur la ligne de commande (sans les sleep 1 et kill $pid) tout fonctionne : ça permet de récupérer l’état d’avancement du dd à chaque répétition de la deuxième ligne, sans tuer le process dd. Vous pouvez essayer vous même : )
Ca me serait super utile car permet d'observer après coup (en loggant dans un fichier) les variations de vitesse en fonction du temps.
MAIS, en tentant d’écrire le tout dans un .sh (avec une boucle qui kill -USR toutes les seconde afin de récupérer l’état d’avancement du dd une fois par seconde par exemple), ça ne fonctionne plus : « kill -USR1 $pid » termine pour de vrai le processus dd...
J'avoue ne pas bien maîtriser cette histoire de kill -USR, et ne capte pas pourquoi son effet diffère selon qu'on l’exécute dans un script ou dans un shell.
Merci de votre aide, bonne journée !
Message édité par Gnaag le 09-11-2018 à 12:32:26