Существует ли команда Linux, которая ничего не делает, но и никогда не завершается?

Существует ли команда Linux, которая ничего не делает, но и никогда не завершается?

Я ищу команду Linux, которая буквально ничего не делает, ничего не выводит, но остается активной до тех пор, пока не будет выполнено действие ^C.

while true; do; doneэто не лучшее решение, так как оно интенсивно использует процессор.

решение1

Если мы посмотрим насистемные вызовы, на самом деле есть один, который делает именно это,pause(2):

pause()заставляет вызывающий процесс (или поток) приостанавливаться до тех пор, пока не будет получен сигнал...

Конечно, тогда нам просто нужна программа, которая его использует. За исключением компиляции двухстрочной программы на языке C ниже, самый простой способ, вероятно, будет с Perl:

perl -MPOSIX -e pause

На языке С:

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

решение2

GNU sleepи sleepвстроенная функция ksh93(но не mksh) принимают любые числа с плавающей точкой, а не только целые числа, поэтому вы можете сделать это:

sleep infinity

решение3

Просто добавьте sleepкоманду.

while true; do sleep 600; done

будет спать 10 минут между циклами.

решение4

ты можешь:

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

Это не будет использовать stdin (как readэто обычно бывает) и будет ожидать нового добавления в /an/existing/regular/file (не работает с некоторыми файлами: tail -f /dev/nullнемедленно завершит работу. Но будет работать со всеми обычными файлами. Если файл не растет, команда будет потреблять мало ресурсов процессора).

Связанный контент