Comment quitter le mode tail -f sans utiliser Ctrl + c?

Quand je fais tail -f filename , comment quitter le mode sans utiliser Ctrl+c pour tuer le process?

Ce que je veux est une façon normale de quitter, comme q en top .

Je suis simplement curieux de la question parce que je pense que tuer le process n'est pas une bonne façon de quitter quelque chose.

Comme indiqué dans les commentaires, Ctrl-C ne tue pas le process de tail , ce qui se fait en envoyant un signal SIGTERM ou SIGKILL (l'infâme -9 …); il envoie simplement un SIGINT qui indique à la tail de terminer le mode avant et de sortir.

Pour votre information, c'est un meilleur outil:

 less +F filename 

En less , vous pouvez appuyer sur Ctrl-C pour mettre fin au mode avance et faire défiler le file, puis appuyer sur F pour revenir au mode avance.

Notez que less +F est préconisé par beaucoup comme une meilleure alternative à la tail -f . Pour la différence et les mises en garde entre les deux outils, lisez cette réponse: Est-ce que `tail -f` est plus efficace que` less + F`?

tail -f nom de file, comment quitter le mode sans utiliser Ctrl c pour tuer le process

Tu ne peux pas faire ça. Peut-être que vous vouliez courir tail -f somefile | less tail -f somefile | less

Le Ctrl c est interprété par le sous-système tty (et par votre shell) et envoie un signal SIGINT (voir signal (7) et pty (7) …). Voir tty démystifié .

Ce que je veux est une façon normale de quitter, comme q en haut.

C'est le contrôle C 🙂

Je suis simplement curieux de la question parce que je pense que tuer le process n'est pas une bonne façon de quitter quelque chose.

^C ( Control C ) envoie un SIGINT au process, qui est défini comme suit:

Le signal SIGINT est envoyé à un process par son terminal de contrôle lorsqu'un user souhaite interrompre le process

C'est exactement ce que vous voulez faire ici, c'est interrompre la tail . Il n'y a pas d'autre moyen d'accomplir ce que vous essayez de faire («bien» quitter la queue) et tandis que d'autres réponses fournissent un moyen d'arrêter la tail par d'autres moyens, elles ne sont pas meilleures.

Si vous appuyez sur ^C , vous tentez d'interrompre une tâche sous Linux – c'est tout à fait normal, et ce n'est que «pas bon» si ce process se trouve au milieu de quelque chose et que vous ne le laissez pas finir. "effet secondaire est rests des choses de ce process. A titre d'exemple, ^C au milieu d'une command make laisse un logiciel partiellement compilé, mais c'est bien: une autre série de make nettoiera / reprendra là où elle se trouvait.

Cela fonctionnerait et répondrait à votre question, mais n'est pas une solution particulièrement satisfaisante.

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

Cela va exécuter la command pendant 15 secondes et ensuite le tuer pour vous, sans avoir à appuyer sur ^C