
Ich suche nach einem Linux-Befehl, der buchstäblich nichts tut, nichts ausgibt, sondern aktiv bleibt, bis ^C
…
while true; do; done
ist 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 sleep
und die sleep
integrierten 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 sleep
Befehl 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 read
der Fall wäre) und wartet auf eine neue Ergänzung zu /an/existing/regular/file (funktioniert bei einigen Dateien nicht: tail -f /dev/null
wird sofort beendet. Funktioniert aber bei allen regulären Dateien. Wenn diese Datei nicht wächst, verbraucht der Befehl wenig CPU).