Como sair do modo 'tail -f' sem usar 'Ctrl + c'?

18

Quando eu faço tail -f filename , como sair do modo sem usar Ctrl+c para matar o processo?

O que eu quero é uma maneira normal de sair, como q in top .

Estou apenas curioso sobre a questão, porque sinto que matar o processo não é uma boa maneira de parar alguma coisa.

    
por Key Shang 22.08.2017 / 09:11

4 respostas

39

Como dito nos comentários, Ctrl-C não mata o processo tail , o que é feito enviando um sinal SIGTERM ou SIGKILL (o infame -9 ...); ele simplesmente envia uma SIGINT que informa tail para finalizar o modo de redirecionamento e sair.

FYI, esta é uma ferramenta melhor:

less +F filename

Em less , você pode pressionar Ctrl-C para finalizar o modo de avanço e rolar pelo arquivo, depois pressionar F para voltar ao modo de avanço novamente. / p>

Note que less +F é defendido por muitos como uma alternativa melhor para tail -f . Para diferenças e ressalvas entre as duas ferramentas, leia esta resposta: Is 'tail -f' mais eficiente que 'less + F'?

    
por 22.08.2017 / 10:41
13

What I want is a normal way to quit, like q in top.

Isso é Controle C :)

I am just curious about the question, because I feel that killing the process is not a good way to quit something.

^C ( Controle C ) envia um SIGINT para o processo, que é definido como:

The SIGINT signal is sent to a process by its controlling terminal when a user wishes to interrupt the process

Isso é exatamente o que você quer fazer aqui, é interromper tail . Não há outra maneira de realizar o que você está tentando fazer ("bem" sair da cauda) e enquanto outras respostas fornecem um meio de parar tail de outras maneiras, elas não são melhores.

Pressionar ^C tentará interromper uma tarefa no Linux - isso é perfeitamente normal, e apenas "não é bom" se esse processo estiver no meio de algo e você não o deixar terminar, e então o apenas o efeito colateral "não bom" é o que resta desse processo. Como exemplo, ^C no meio de um comando make deixa o software parcialmente compilado, mas tudo bem: uma nova execução de make limpará isso / retomará de onde parou.

    
por 22.08.2017 / 23:42
12

tail -f filename, how to quit the mode without use Ctrl c to kill the process

Você não pode fazer isso. Talvez você quisesse executar tail -f somefile | less

A Ctrl c é interpretada pelo subsistema tty (e pelo seu shell) e envia um sinal SIGINT (veja sinal (7) e pty (7) ...). Veja tty desmistificado .

    
por 22.08.2017 / 09:34
5

Isso funcionaria e responderia a sua pergunta, mas não é uma solução particularmente satisfatória.

timeout 15s tail -f /var/log/messages

Isso executará o comando por 15 segundos e depois o matará para você, sem ter que pressionar ^C

    
por 22.08.2017 / 12:38

Tags