Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.os.unix > #8108 > unrolled thread

sleep incluant le temps de veille

Started byThomas <fantome.forums.tDeContes@free.fr.invalid>
First post2023-08-23 14:18 +0200
Last post2023-08-24 05:49 +0000
Articles 4 — 2 participants

Back to article view | Back to fr.comp.os.unix


Contents

  sleep incluant le temps de veille Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2023-08-23 14:18 +0200
    Re: sleep incluant le temps de veille Marc SCHAEFER <schaefer@alphanet.ch> - 2023-08-23 15:14 +0000
      Re: sleep incluant le temps de veille Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2023-08-24 02:07 +0200
        Re: sleep incluant le temps de veille Marc SCHAEFER <schaefer@alphanet.ch> - 2023-08-24 05:49 +0000

#8108 — sleep incluant le temps de veille

FromThomas <fantome.forums.tDeContes@free.fr.invalid>
Date2023-08-23 14:18 +0200
Subjectsleep incluant le temps de veille
Message-ID<uc4tfb$2tlhg$1@dont-email.me>
bonjour :-)


est-il possible aujourd'hui, avec les OS POSIX (ou à la rigueur les 
Linux standards), de fabriquer un sleep qui prenne en compte le temps de 
veille de l'ordi ?

Sans cet outil, pour faire la même chose, on est obligé de faire un 
sleep de 10 ms et de faire les calculs à la main dans le shell appelant.
Il me semble que le noyau a déjà un comportement similaire pour gérer 
l'ensemble des processus, c'est dommage de faire doublon ...


-- 
RAPID maintainer
http://savannah.nongnu.org/projects/rapid/

[toc] | [next] | [standalone]


#8110

FromMarc SCHAEFER <schaefer@alphanet.ch>
Date2023-08-23 15:14 +0000
Message-ID<uc57oo$tga$2@shakotay.alphanet.ch>
In reply to#8108
On Wed, 23 Aug 2023 14:18:51, Thomas <fantome.forums.tDeContes@free.fr.invalid> wrote:
> est-il possible aujourd'hui, avec les OS POSIX (ou à la rigueur les 
> Linux standards), de fabriquer un sleep qui prenne en compte le temps de 
> veille de l'ordi ?

Intéressant, je verrais une solution classique, de mémoire:

   # je veux à 17:13, donc la mise en veille n'a pas d'importance
   echo 'ta commande' | at 17:13

(toutefois, si la machine est "éteinte" au moment où l'on atteint 17:13,
il est possible que cela ne marche pas, j'ai regardé en travers `man at'
et ce n'est pas clair

   schaefer@shakotay:~$ echo blabla | at 18:15
   warning: commands will be executed using /bin/sh
   job 1 at Wed Aug 23 18:15:00 2023
   schaefer@shakotay:~$ atq
   1       Wed Aug 23 18:15:00 2023 a schaefer

ce qui précède semblerait montrer que at est capable en théorie de voir
que l'événement est passé).

> Sans cet outil, pour faire la même chose, on est obligé de faire un 
> sleep de 10 ms et de faire les calculs à la main dans le shell appelant.
> Il me semble que le noyau a déjà un comportement similaire pour gérer 
> l'ensemble des processus, c'est dommage de faire doublon ...

En cherchant rapidement, je n'ai pas trouvé de meilleur mécanisme, ni de
mécanisme centralisé.

-- 
Attention: limitez le nombre de lignes de citation à l'essentiel, sinon
je ne verrai pas votre réponse. Et si vous écrivez souvent des bobards,
je ne vous lirai plus et je recommanderai (NoCeM) de ne plus vous lire.

[toc] | [prev] | [next] | [standalone]


#8113

FromThomas <fantome.forums.tDeContes@free.fr.invalid>
Date2023-08-24 02:07 +0200
Message-ID<uc670v$3511g$2@dont-email.me>
In reply to#8110
Le 23/08/2023 à 17:14, Marc SCHAEFER a écrit :
> On Wed, 23 Aug 2023 14:18:51, Thomas <fantome.forums.tDeContes@free.fr.invalid> wrote:
>> est-il possible aujourd'hui, avec les OS POSIX (ou à la rigueur les
>> Linux standards), de fabriquer un sleep qui prenne en compte le temps de
>> veille de l'ordi ?
> 
> Intéressant, je verrais une solution classique, de mémoire:
> 
>     # je veux à 17:13, donc la mise en veille n'a pas d'importance
>     echo 'ta commande' | at 17:13

j'ai déjà essayé cette commande sur mon vieux mac,
et si je me souviens bien, il y avait un énorme défaut c'est que chaque 
script appelé avec at l’était depuis root au lieu de l’être depuis le 
script qui appelle at, donc perte de toutes les variables, du répertoire 
courant, etc ... (et je ne sais même plus si en plus on était pas 
carrément root au moment de l’exécution).

> 
> (toutefois, si la machine est "éteinte" au moment où l'on atteint 17:13,
> il est possible que cela ne marche pas, j'ai regardé en travers `man at'
> et ce n'est pas clair

quand tu dis "éteinte" avec des guillemets, tu veux dire "en veille" ?

Si qqch est capable de réveiller la machine pour exécuter un processus 
"programmé", c'est intéressant à savoir :-)
mais à cette étape je n'en suis pas là. Je souhaite juste ne pas 
attendre plus longtemps à la sortie de la veille si le temps total est 
écoulé (mais pas le temps "hors veille").

> 
>> Sans cet outil, pour faire la même chose, on est obligé de faire un
>> sleep de 10 ms et de faire les calculs à la main dans le shell appelant.
>> Il me semble que le noyau a déjà un comportement similaire pour gérer
>> l'ensemble des processus, c'est dommage de faire doublon ...
> 
> En cherchant rapidement, je n'ai pas trouvé de meilleur mécanisme, ni de
> mécanisme centralisé.
> 

je lance l'idée à tout hasard.
Si rien n'est prévu dans le noyau pour donner cette possibilité, 
peut-être que ça donnera des idées aux concepteurs du noyau (si jamais 
ça remonte jusqu'à eux ...)


-- 
RAPID maintainer
http://savannah.nongnu.org/projects/rapid/

[toc] | [prev] | [next] | [standalone]


#8114

FromMarc SCHAEFER <schaefer@alphanet.ch>
Date2023-08-24 05:49 +0000
Message-ID<uc6r23$p1$2@shakotay.alphanet.ch>
In reply to#8113
On Thu, 24 Aug 2023 02:07:59, Thomas <fantome.forums.tDeContes@free.fr.invalid> wrote:
> j'ai déjà essayé cette commande sur mon vieux mac,
> et si je me souviens bien, il y avait un énorme défaut c'est que chaque 
> script appelé avec at l?était depuis root au lieu de l?être depuis le 
> script qui appelle at, donc perte de toutes les variables, du répertoire 
> courant, etc ... (et je ne sais même plus si en plus on était pas 
> carrément root au moment de l?exécution).

Alors, si tu lances sous un utilisateur normal (s'il a les droits de
lancer at, cf man at), c'est avec les droits de l'utilisateur normal
que ton script ou ta commande sera lancée.

Bien évidemment, c'est à toi de mettre au début du script l'ensemble des
paramétrisations que tu veux faire.

> quand tu dis "éteinte" avec des guillemets, tu veux dire "en veille" ?

oui, et tous les autres cas où sleep ne peut pas s'exécuter.

> Si qqch est capable de réveiller la machine pour exécuter un processus 
> "programmé", c'est intéressant à savoir :-)

oui, c'est possible aussi.

> Si rien n'est prévu dans le noyau pour donner cette possibilité, 
> peut-être que ça donnera des idées aux concepteurs du noyau (si jamais 
> ça remonte jusqu'à eux ...)

En fait, je trouve le concept d'un programme qui est tout le temps en
fonction et qui fait des sleeps très curieux.

J'aurais tendance à découper ce programme en deux services:

1) un service à exécution au démarrage de la machine

2) un service à exécution de tâches régulières

1) c'est assez facile à faire: sous un utilisateur normal avec un cron
qui le supporte, ajouter un @reboot

2) c'est cron (ou at)

Comme je ne sais pas quel grain ton programme a besoin (se réveille-t-il
toutes les 3 secondes? toutes les 3 heures? fait-il un travail de 1
seconde? de 10 minutes?), c'est difficile d'aller plus loin.

Dans des cas simples, oui, un simple sleep 1 puis calcul sur date "+%s"
de la différence en seconde peut parfaitement suffire et sera
super-portable.

-- 
Attention: limitez le nombre de lignes de citation à l'essentiel, sinon
je ne verrai pas votre réponse. Et si vous écrivez souvent des bobards,
je ne vous lirai plus et je recommanderai (NoCeM) de ne plus vous lire.

[toc] | [prev] | [standalone]


Back to top | Article view | fr.comp.os.unix


csiph-web