
Estou procurando um comando do Linux que não faça literalmente nada, não produza nada, mas permaneça ativo até ^C
.
while true; do; done
não é uma boa solução, porque exige muito da CPU.
Responder1
Se olharmoschamadas do sistema, na verdade existe um que faz exatamente isso,pause
(2):
pause()
faz com que o processo de chamada (ou thread) durma até que um sinal seja entregue ...
Claro, então precisaríamos apenas de um programa que o utilizasse. Além de compilar o programa C de duas linhas abaixo, a maneira mais fácil é provavelmente com Perl:
perl -MPOSIX -e pause
Em C:
#include <unistd.h>
int main(void) { return pause(); }
Responder2
GNU sleep
e o sleep
builtin de ksh93
(mas não mksh
) aceitam qualquer número de ponto flutuante, não apenas números inteiros, então você pode fazer isso:
sleep infinity
Responder3
Basta adicionar um sleep
comando.
while true; do sleep 600; done
dormirá por 10 minutos entre os loops.
Responder4
você pode:
tail -f /an/existing/regular/file >/dev/null
Isso não usará stdin (como read
faria) e ficará aguardando uma nova adição a /an/existent/regular/file (não funciona em alguns arquivos: tail -f /dev/null
será encerrado imediatamente. Mas funcionará para todos os arquivos regulares. Se esse arquivo for não crescendo, o comando consumirá pouca CPU)