Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Kann der Linux-Ruhezustand Threads verzögern?

Kann der Linux-Ruhezustand Threads verzögern?

青灯夜游
青灯夜游Original
2023-03-16 11:02:242291Durchsuche

Der Schlaf kann sich verzögern. Der Linux-Befehl „sleep“ kann verwendet werden, um die aktuelle Aktion um einen bestimmten Zeitraum zu verzögern. Die Syntax lautet standardmäßig „sleep [--help] [--version] number[smhd]“. Sekunden, aber das Suffix ist zur Angabe der Zeiteinheiten zulässig, um die Verzögerung in Sekunden, Minuten, Stunden oder Tagen anzugeben.

Kann der Linux-Ruhezustand Threads verzögern?

Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.

Schlaf kann Threads verzögern.

Einführung in den Linux-Schlafbefehl

Der Linux-Schlafbefehl kann verwendet werden, um die aktuelle Aktion für einen bestimmten Zeitraum zu verzögern.

Nutzungsberechtigungen: alle Benutzer.

Syntax

sleep [--help] [--version] number[smhd]

Parameterbeschreibung:

  • --Hilfe: Hilfsinformationen anzeigen

  • --Version: Versionsnummer anzeigen

  • Nummer: Zeitdauer, gefolgt von s, m , h Oder d

    wobei s die Sekunde, m die Minute, h die Stunde und d die Anzahl der Tage ist

1. Linux-Befehlsausführung verzögern

Standardmäßig wird der Sleep-Befehl ausgeführt warte ein paar Sekunden. Um dies zu verstehen, geben wir die aktuelle Zeit vor und nach der Verwendung des Befehls „sleep“ aus. Der folgende Befehl wartet beispielsweise 5 Sekunden nach dem Drucken der aktuellen Uhrzeit, um die Uhrzeit erneut zu drucken:

$ date '+%r'; sleep 5; date '+%r'

In diesem Beispiel müssen Sie die einzelnen Befehle durch ein Semikolon (;) trennen.

Kann der Linux-Ruhezustand Threads verzögern?

2. Geben Sie einen Befehl zum Warten auf N Minuten ein.

Im Allgemeinen können wir mit dem Schlafbefehl ein Suffix verwenden, um die Zeiteinheit anzugeben. Dies kann im Schlafbefehl mit dem folgenden Suffix ausgedrückt werden

  • s – in Sekunden Geben Sie die Zeiteinheit für die Einheit an.

  • m – Gibt die Zeiteinheit in Minuten an.

  • h – Gibt die Zeiteinheit in Stunden an.

  • d – Geben Sie die Zeiteinheit in Tagen an.

Hier verwenden wir also das Suffix „m“, um eine Minute lang zu schlafen:

$ date '+%r'; sleep 1m; date '+%r'

3. Lassen Sie den Befehl X Minuten und Sekunden lang ruhen.

Tatsächlich können Sie auch mehrere Suffixe verwenden Schlafbefehl. In diesem Fall wird die Dauer durch Addition aller Werte berechnet.

Um das zu verstehen, schlafen wir 1 Minute und 20 Sekunden lang mit dem Befehl:

$ date '+%r'; sleep 1m 20s; date '+%r'

Im obigen Beispiel wurden zwei verschiedene Suffixe verwendet. Es kann jedoch auch das gleiche Suffix verwendet werden. Sie können beispielsweise die Suffixe 2s und 3s verwenden, um 5 Sekunden lang zu schlafen. Der Befehl lautet wie folgt:

$ date '+%r'; sleep 2s 3s; date '+%r'

4. Verwenden Sie Gleitkommazahlen über den Schlafbefehl. Darüber hinaus akzeptiert der Schlafbefehl auch einen Gleitkommawert Zahl als Eingabe, so dass Sie diese Methode verwenden können, um ohne bis zu eine Sekunde zu schlafen. Sie können beispielsweise eine halbe Sekunde lang schlafen, indem Sie den Wert 0,5 Sekunden verwenden:

$ date '+%r'; sleep 0.5s; date '+%r'
In der obigen Ausgabe können Sie sehen, dass der Datumsbefehl denselben Wert für die Zeiteinheit Sekunden anzeigt.

Darüber hinaus können auch Gleitkommawerte mit anderen Suffixen verwendet werden. Sie können beispielsweise einen Wert von 0,5 m verwenden, um 30 Sekunden lang zu schlafen:

$ date '+%r'; sleep 0.5m; date '+%r'

5. Verwenden Sie den Schlafbefehl, um einen Wecker zu simulieren. In den vorherigen Beispielen haben wir hauptsächlich die Verwendung des Schlafbefehls vorgestellt die Ausführung des nächsten Befehls verzögern. Alternativ können Sie mit diesem Trick einen Wecker simulieren.

Als nächstes verwenden Sie den folgenden Befehl, um den Alarm nach 5 Sekunden einzustellen:

$ sleep 5; cvlc alarm.mp3
Der obige Befehl öffnet die Datei alarm.mp3 mit dem VLC Media Player, nachdem er 5 Sekunden gewartet hat. Wie jeder andere Linux-Befehl kann der VLC Media Player mit der Tastenkombination Strg+C gestoppt werden.

Verwendungsbeispiele für den Sleep-Befehl

Lassen Sie das Programm zunächst 30 Sekunden lang schlafen.Aus der wörtlichen Bedeutung müssen Sie die Funktion des Sleep-Befehls erraten haben. Vereinfacht ausgedrückt bedeutet Schlaf, dem Programm eine kurze Pause zu gönnen und dann mit der Arbeit fortzufahren (Ausruhen bedeutet, besser zu arbeiten ...).

Wir lassen das Shell-Programm 30 Sekunden lang schlafen:

#睡眠30秒
[roc@roclinux ~]$ sleep 30s
 
#让date命令来监督, 看看是不是真的睡了30秒
[roc@roclinux ~]$ date;sleep 30s; date
Thu Feb 25 08:25:17 CST 2016
Thu Feb 25 08:25:47 CST 2016
Personalisierte Schlafzeit

sleep Der Befehl ist einfach, aber wir können ihn personalisieren, damit er mehr Spaß macht.

Im Allgemeinen wird der Wert nach dem Schlafbefehl zur Darstellung der Zeit verwendet. Wenn wir keine Einheit angeben, welche ist die Standardeinheit?

[roc@roclinux ~]$ date; sleep 1; date
Thu Feb 25 09:55:47 CST 2016
Thu Feb 25 09:55:48 CST 2016
In diesem Beispiel ist die Standardeinheit Sekunden, was den gleichen Effekt hat wie die Angabe der Einheit s.

Wenn es Sekunden gibt, sollten es auch Minuten und Stunden sein. Wie werden diese Einheiten im Schlaf dargestellt?

s: Stellt Sekunden dar

m: Stellt Minuten dar
  • h: Stellt Stunden dar
  • d: Stellt Tage dar
  • Was sollte beispielsweise getan werden, wenn Sie das Shell-Programm möchten? zu 1 Minute schlafen? Wolltuch?
  • [roc@roclinux ~]$ date; sleep 1m; date
    Thu Feb 25 10:00:43 CST 2016
    Thu Feb 25 10:01:43 CST 2016
  • Wenn Sie dann möchten, dass das Shell-Programm eine Stunde lang schläft, ändern Sie einfach die Einheit auf h. Was wäre, wenn das Shell-Programm 1 Minute und 40 Sekunden lang in den Ruhezustand versetzt werden soll? 1 Minute = 60 Sekunden, 1 Minute 40 Sekunden = 100 Sekunden, Sie können den Computer direkt für 100 Sekunden in den Ruhezustand versetzen.

    [roc@roclinux ~]$ date; sleep 100; date
    Thu Feb 25 10:12:28 CST 2016
    Thu Feb 25 10:14:08 CST 2016

    Eigentlich ist Schlaf rücksichtsvoller als Sie denken. Sie können es direkt so eingeben:
  • #注意: 分钟和秒之间一定要有空格哦
    [roc@roclinux ~]$ date; sleep 1m 40s; date
    Thu Feb 25 10:17:04 CST 2016
    Thu Feb 25 10:18:44 CST 2016

    这种方法简单、直接,节省了我们不少的思考时间。

    在 sleep 中最大的单位是 d(天),如果想表示更长的时间,比如周、月、年的话,那么你只能把它们转换成天来表示了。

    # 这样,  Shell程序乖乖地沉睡 "一周2小时5分4秒"
    [roc@roclinux ~]$ date; sleep 7d 2h 5m 4s; date
    Thu Feb 25 10:17:04 CST 2016
    Thu Feb 25 10:18:44 CST 2016

    毫秒级睡眠时间可不可以

    sleep 命令的默认时间单位是秒,但对于高速运行的程序来说,“秒”还是显得太长了。那 sleep 能不能实现毫秒级的睡眠呢?答案是可以的,例如,我们让 Shell 程序睡眠 3 毫秒:

    [roc@roclinux ~]$ time sleep 0.003
     
    real    0m0.004s
    user    0m0.000s
    sys 0m0.001s

    time 可以通过浮点数的方式实现毫秒级的睡眠,但这里有一点需要注意,即睡眠时间的精度。sleep 命令只能保证 10ms 级别的精度控制,对于小于 10ms 的睡眠时间是存在误差的。实际应用中,如果你对时间精度要求特别高的话,sleep 或许不是一个正确的选择,还是请考虑其他方法吧。

    sleep 的过程中 CPU 是否被占用

    默认情况下,sleep 的进程是不占用 CPU 时间的,我们可以通过实验来说明这个问题:

    [roc@roclinux ~]$ \time sleep 1
    0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2560maxresident)k
    0inputs+0outputs (0major+200minor)pagefaults 0swaps

    看到了吗?0.00user、0.00system、0%CPU 这三个输出项都表明 sleep 是不会耗费 CPU 的计算资源的。

    注意:上面使用了\time命令,它指代的是 /usr/bin/time,而不是 Shell 内置的 time 命令。/usr/bin/time 命令可以显示更多的信息,而 Shell 内置的命令做不到这一点。

    相关推荐:《Linux视频教程

Das obige ist der detaillierte Inhalt vonKann der Linux-Ruhezustand Threads verzögern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn