
Я ищу команду 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
немедленно завершит работу. Но будет работать со всеми обычными файлами. Если файл не растет, команда будет потреблять мало ресурсов процессора).