Gibt es einen Linux-Befehl, der nichts tut, aber nie beendet wird?

Gibt es einen Linux-Befehl, der nichts tut, aber nie beendet wird?

Ich suche nach einem Linux-Befehl, der buchstäblich nichts tut, nichts ausgibt, sondern aktiv bleibt, bis ^C

while true; do; doneist keine gute Lösung, da es CPU-intensiv ist.

Antwort1

Wenn wir uns ansehenSystemaufrufe, es gibt tatsächlich einen, der genau das tut,pause(2):

pause()bewirkt, dass der aufrufende Prozess (oder Thread) pausiert, bis ein Signal übermittelt wird ...

Natürlich bräuchten wir dann nur noch ein Programm, das es verwendet. Abgesehen vom Kompilieren des untenstehenden zweizeiligen C-Programms ist Perl wahrscheinlich der einfachste Weg:

perl -MPOSIX -e pause

In C:

#include <unistd.h>
int main(void) { return pause(); }

Antwort2

GNU sleepund die sleepintegrierten Funktionen von ksh93(aber nicht mksh) akzeptieren alle Gleitkommazahlen, nicht nur ganze Zahlen. Sie können also Folgendes tun:

sleep infinity

Antwort3

Fügen Sie einfach einen sleepBefehl hinzu.

while true; do sleep 600; done

schläft zwischen den Schleifen 10 Minuten lang.

Antwort4

du kannst:

tail -f /an/existing/regular/file >/dev/null

Dies verwendet nicht stdin (wie es sonst readder Fall wäre) und wartet auf eine neue Ergänzung zu /an/existing/regular/file (funktioniert bei einigen Dateien nicht: tail -f /dev/nullwird sofort beendet. Funktioniert aber bei allen regulären Dateien. Wenn diese Datei nicht wächst, verbraucht der Befehl wenig CPU).

verwandte Informationen