Réponses:
Depuis la page de manuel :
Étant donné deux arguments ou plus, faites une pause pendant la durée spécifiée par la somme de leurs valeurs .
Donc:
sleep 7m 30s
bash
intégré et GNU sleep
. POSIXly, sleep
est uniquement requis pour comprendre les entiers comme des secondes
Il y a déjà deux excellentes réponses, mais je voudrais développer un peu. Copiez et collez la commande ci-dessous dans votre terminal:
$ sleep 3d 5h 7m 30.05s &
[1] 7321
Cela démarrera un deuxième processus qui dormira pendant 3 jours, 5 heures, 7 minutes et 30,05 secondes. L'ID de processus (PID) est 7321
dans mon cas.
Pour confirmer l'utilisation du PID
$ ps aux | grep sleep
rick 7321 0.0 0.0 14356 660 pts/2 S 22:40 0:00 sleep 3d 5h 7m 30.05s
root 12415 0.0 0.0 14356 700 ? S 22:41 0:00 sleep 60
rick 12500 0.0 0.0 21292 968 pts/2 R+ 22:41 0:00 grep --color=auto sleep
La première entrée est celle qui nous intéresse. La deuxième entrée concerne un programme permanent que j'ai en cours de démarrage. La troisième entrée concerne la commande grep elle-même.
Maintenant, pour voir combien de temps il reste (en secondes) pour la sleep
commande générée par PID, 7321
nous pouvons utiliser ceci: Comment déterminer le temps restant dans un «sommeil»? commander:
$ remaining_sleep_time 7321
277304.05
$ remaining_sleep_time 7321
277296.05
$ remaining_sleep_time 7321
277262.05
Le code de la commande que vous pouvez inclure dans votre ~/.bashrc
fichier:
remaining_sleep_time() { # arg: pid
ps -o etime= -o args= -p "$1" | perl -MPOSIX -lane '
%map = qw(d 86400 h 3600 m 60 s 1);
$F[0] =~ /(\d+-)?(\d+:)?(\d+):(\d+)/;
$t = -($4+60*($3+60*($2+24*$1)));
for (@F[2..$#F]) {
s/\?//g;
($n, $p) = strtod($_);
$n *= $map{substr($_, -$p)} if $p;
$t += $n
}
print $t'
}
remaining_sleep_time
doit être copié dans votre ~/.bashrc
fichier selon le lien. Vous pouvez également placer le code dans un fichier de script bash.
Le sommeil de commande compte toujours en secondes. Vous pouvez utiliser ((7x60) +30) secondes puis taper simplement:
dormir 450
sleep $((60*7))
pourrait être utilisé pendant des minutes