Question commande sleep

Hello !

J’ai une question très rapide, sachant que cette commande éteint le port usb 4 sudo ./hub-ctrl -h 0 -P 3 -p 0
en remplaçant le dernier 0 par un 1 on ralume le port 4
sudo ./hub-ctrl -h 0 -P 3 -p 0

(possible grace à hub-ctrl.c : GitHub - codazoda/hub-ctrl.c: Control USB power on a port by port basis on some USB hubs. )

Quelqu’un pourrait m’expliquer la commande ci-dessous qui combine ces commandes avec la commande sleep

while (true) do hub-ctrl -h 0 -P 3 -p 0 ; sleep 3; hub-ctrl -h 0 -P 3 -p 1; sleep 57; done

Je crois avoir compris que si on utilise sleep 10 (phrase) la commande affiche dans 10 seconde la phrase souhaitée, mais la commande du dessus m’a l’air plus complexe

Merci :slight_smile:

Hello

Voici la version « traduite » d’après tes explications pour la commande hub-ctrl

Tant que vrai <-cela va donc tourner tout le temps
Eteint le port usb
Attends 3 secondes
Allume le port USB
Attends 57s
Recommence la boucle

D’accord merci beaucoup pour ta réactivité :slight_smile:

Si j’écris :
While (true) do hub-ctrl -h 0 -P 3 -p 0

Cette commande va donc s’exécuter indéfiniment. Si elle tourne en continue pratiquement tout le temps est-ce dérangeant ou dangereux ?
Une fois lancée comment puis-je la stoper ?

Je t’en prie

Je ne sais pas comment fonctionne hub-ctrl, mais je ne vois pas l’intérêt d’exécuter cette commande en permanence.

Logiquement, tu la lance quand tu veux stopper ton port USB et tu la relance quand tu veux le faire redémarrer.

Sinon pour couper ta commande cela dépend de ton langage, c’est du quoi? du Shell? Dans ce cas là il te faudra créer un fichier executable (en .sh, avec un chmod +x tonfichier.sh). Puis pour le couper un ctrl + c dans la console.

J’utilise cette commande pour éteindre un disque dur auto alimenté à distance en stopper l’alimentation du port usb où il est connecté.

Cependant au bout d’un certain moment le disque se rallume (de façon assez aléatoire entre 30 seconde et 8 min je dirait).
Je voulais donc que la commande s’exécute continuellement et la stopper pour réactiver mon disque dur.

sa c’est bizzare ,peut tu faire un

hub-ctrl --help

sa va afficher le manuel de la commande et ces option et nous donner les indication sur les option que tu utilise

non sa fera rien tu a pas de fin a la boucle tu aura une erreur de syntaxe

les 2 on ne fait pas de boucle infini pour bloquer un procces !!!

par se que , vla la fuite mémoire que sa va t’engendrer ,
pour te doner un exemple c’est comme si tu avais un bouton poussoir(pas un interrupteur ) cher toi pour allumer une lampe est que restait apuyer desus pour la laisser allumer , c’est débile on est d’acord et sa racourci la duré de vie de l’installation et sa de fatigue le doigt, bien la c’est pareil le faite d’avoir une boucle infini consome la RAM et la resource du CPU ,c’est ce qu’on apelle une fuite mémoire , tecniquement le PI a une sécuriter et il va lui même arrêter le process qui lui bouffe trop de resource , par se qu’il va finir par planter ,c’est d’ailleur pour sa que sa doit se ralumer .

une fois que tu lance la commande sa devrait eteindre le port j’usque quand tu le ralume
la solution de @Gpapig est la bonne [quote=« Gpapig, post:4, topic:1959 »]
tu la lance quand tu veux stopper ton port USB et tu la relance quand tu veux le faire redémarrer.
[/quote]

c’est du shell oui

a condition seulement que celui si soit lier a un terminal car sinon ton ctrl + C ne sers a rien ,il faudra tuer le procces manuellement ,meme si tu pieges le signal

si tu veux un exemple concret voici un cas que j’ai corriger Ambiance feu de cheminée [Résolu] - #2 par jojo - Projets - Le Forum français de la Raspberry Pi - Raspberry Pi FR (Raspbian France)

j’ai tapé la commande mais il me rend « command not found »[quote=« jojo, post:6, topic:1959 »]
non sa fera rien tu a pas de fin a la boucle tu aura une erreur de syntaxe
[/quote]

effectivement erreur de syntaxe

Je m’en doutais un peu mais je demandais au cas ou :sweat_smile:

Et bien normalement oui mais ça n’est pas la cas apparemment, j’ai cru lire quelque part que ça venais peut etre du fait que mon disque dur est en 3.0 ( pas sur du tout de ce que j’avance )

Au final je pense que ça ne me sera pas utile car il faut démonter le disque avant de couper le port usb et comme il se relance de façon totalement aléatire le disque dur de remonte donc je ne peu plus couper le port usb directement…Assez embêtant.

J’ai vu aussi qu’on pouvait couper directement l’alimentation des port usb via echo "0" > /sys/bus/usb/devices/<Nom phériphérique>/power/state j’essayerai ça demain je n’ai pas beaucoup de temps pour le moment

Merci pour vos réponses :slight_smile:

ok il y a peut etre pas de manuel avec help ou c’est pas la comande

attens va pas faire n’importe quoi ,faut mieux repérer manuellement,
car ta commande sert a écrire 0(se qui pour effet de l’éteindre) dans le dossier state ,faut tu soit bien sur du périphérique avant de faire nimple car la on est des les bus et donc il faut que tu connaisse son identifiant car c’est pas le nom que tu a lui donner

une astuce : tu te rends dans le dossier /sys/bus/usb/devices/ avec ton disque disque débrancher

ensuite tu fermes celui si tu branche ton disque 2 nouveaux dossier apparaîtront c’est un de ceux la

dans mon cas avec une clé usb les dossier 2-1.1 et 2-1.1:1.0 apparaisse

et bien le bon c’est le plus long 2-1.1:1.0 (dans mon cas )

voila fait bien gaffe ! car sa peux faire trés mal en cas d’erreur

a et au faite tu aura besoin d’un « sudo » avant ta commande

et si tu fait un script qui démonte le disk et qui ensuite coupe le port dans la foulée sa marche pas ?

C’est que j’avais fait pour repérer le bon, j’avais quelque chose comme 1-3.1 et 1-3.1:XX mais je ne savais pas lequel choisir.

Quelle serait la commande pour le rallumer dans ce cas ?

Oui ça marcherai mais le disque finirai par se remonter dans les 10 min je pense, à essayer.

si le port est éteint techniqument le disque ne peux pas se remonter tape

umount tondisque && sudo ./hub-ctrl -h 0 -P 3 -p 0

pour voir si sa se ralume , tu remplace tondisque par le chemin de celui si et tu corrige si jme sui planté dans la commande avec hub-ctrl car je la connais pas

C’est ce que je ne comprend pas justement, je viens d’essayer, avant je faisait :

et ensuite

j’ai donc essayé de faire les deux en même temps comme tu me l’a indiqué [quote=« jojo, post:10, topic:1959 »]
umount tondisque && sudo ./hub-ctrl -h 0 -P 3 -p 0
[/quote]

Mais la même chose se passe: le disque se démonte, puis s’éteint au bout de quelques seconde. Chrono lancé, exactement 7 min 44 avant qu’il ne se rallume … :smirk:

Etrange

oui trés etranges sa dois venir des option [quote=« finlyk, post:11, topic:1959 »]
-h 0 -P 3 -p 0
[/quote]

faudrait savoir a quoi sa corespond mais si le --help marche pas je vais aller fouiller dans le code source vu tu a filler le github

D’accord merci beaucoup, ça ne presse pas, fais ça quand tu auras le temps.

De mon côté j’ai l’impression que le port est éteint électriquement mais lorsque que je branche mon disque dessus il se rallume. Demain j’essayerai avec une clé usb pour voir si les résultats sont les mêmes et ainsi savoir si le « dysfonctionnement » ne viendrai pas de mon disque dur.
J’essayerai ensuite: [quote=« jojo, post:8, topic:1959 »]
echo « 0 » > /sys/bus/usb/devices/<Nom phériphérique>/power/state
[/quote]

Je te tiens au courant de ce que ça donnera :slight_smile:

Ou peut etre que le pi rallume ces port tout seul !

sa été codé pour ubuntu a la basse et j’ai pas asser bon niveau en C++ (sa fait lontemp j’en fait plus )
pour voir a vu d’oeil si il y a une couille

c’est bon j’ai trouver premiere indice
ligne 31 et 32 du code source

« Usage: %s [{-h HUBNUM | -b BUSNUM -d DEVNUM}] \\n »
" [-P PORT] [{-p [VALUE]|-l [VALUE]}]\n", progname);

donc:
-P c’est le port de 0 à 3 , 0 corespond au port usb n°1 et le 3 au numéro 4
-p c’est la valeur 0 c’est éteint , 1 allumer (c’est un switch )
-h c’est le Hub vu qu’il y en pas 0

je sait sa nous aide pas mdr

oui essaye avec le echo

J’ai essayé cette commande mais elle me rend un « permission denied »

Peut être faut-il que j’active les droits avec chmod sur chaque parents de /state dans le chemin d’accès ? je ne crois pas que ça soit très recommandé sachant que je ne connais que chmod 777 … il faudrai que je me renseigne sur comment marche exactement la commande chmod :slight_smile:

J’avais déjà l’explication quelque part je crois mais merci :slight_smile:

J’ai donc branché une clé usb quelconque, ensuite j’exécute [quote="]
sudo ./hub-ctrl -h 0 -P 3 -p 0
[/quote]

le port où se trouve la clé est donc désactivé et je ne peu plus accéder à la clé. Et cette fois ci, la clé ne se remonte pas, enfin le port ne se réactive pas du coup.
Par contre si je débranche la clé et la rebranche sur le même port, le port se réactive et je peut de nouveau ré accéder à ma clé USB.
Je pense donc que dans le cas de mon disque dur, le raspberry crois qu’à un moment donné je débranche le disque dur et le rebranche, alors, le port usb se ré active et le disque dur se remonte. Peut petre un problème lié à l’usb 3.0 comme je l’avais lu quelque part il me semble… ( c’est mon hypothèse pour l’instant et je ne vois pas trop comment y remédier :confused: )

Voilà tout ce que j’ai pu faire pour le moment :slight_smile:

J’en profite pour te demander autre chose :
Pour je ne sais quel raison ( sans doute tout mes test…), pour la deuxième fois mon disque se remonte en MONDISQUE1, et tout a lheure il se remonte en MONDISQUE2. J’ai donc du renommer le dossier de stockage de OwnCloud à deux reprise. Ca n’est as très dérangeant mais dans /media/pi , les dossier MONDISQUE et MONDISQUE1 sont toujours présent, certe vide car plus relié à mon disque mais je ne peu pas les supprimer, il me dis : permission denied

Une idée ?

Ca fait beaucoup d’interrogation plus vraiment en rapport avec le titre du sujet de départ, je m’en excuse.

tu ma lu qu’a moitier toi mdr

ou d’etre en root d’ailleur mais pour faire simple

sudo echo « 0 » > /sys/bus/usb/devices/<Nom phériphérique>/power/state

tu a peut etre raison la c’est vrai je séche

bien sur les permission sur linux sa te dit qu’elle que chose ptdr
on est tous passer par la mdr
étudie un peu hop hop :wink:

en vrac
https://doc.ubuntu-fr.org/permissions

bon je suis pas méchant voila la commande pour les suprimer

sudo rm -d /media/pi/MONDISQUE1 && sudo rm -d /media/pi/MONDISQUE2

rm c’est pour supprimer
-d c’est pour les répertoire vide
voila

J’avais fais un sudo -i au préalable ;)[quote=« jojo, post:16, topic:1959 »]
tu a peut etre raison la c’est vrai je séche
[/quote]

C’est pas grave je vais continuer de chercher un peu sinon c’est pas bien grave si le disque tourne en continue :slight_smile:

Je vais lire tout ça ce week-end merci !

C’était donc le -d qu’il me manquait merci !

et sa marche pas ?
et avec un sudo -s ?

Non ça met « permission denied »
Je vais essayer ça quand je serai chez moi, que fait sudo -s ?

sa te passe en root

et si t’est root ta pas de permission denied , a pars cas exceptionnel en vérouillage en lecture seul

comme le ntfs par exemple