J'exécute un serveur et le journal de ce serveur est consigné dans le terminal, pas dans un fichier. Je voudrais utiliser moins pour afficher ce journal.
node server.js | less
Quand je veux juste voir le journal, j'utilise presse Shift+F arriver à la fin du fichier et continuer à regarder les journaux. Quand je veux l'arrêter, j'utilise CTRL+C.
Malheureusement, cela arrête également le serveur. Je veux juste arrêter de regarder la fin du journal sans arrêter le serveur.
Comment faire ça?
Je ne trouve aucun moyen de quitter le mode F
dans less
; vous devrez donc utiliser une solution de contournement. Par exemple, enregistrez la sortie dans un fichier tmp, puis observez ce fichier tmp:
node server.js > tmpfile & less tmpfile
Le &
permet d'exécuter la commande node.js
en arrière-plan. Cela signifie que less tmpfile
démarrera immédiatement et suivra le fichier tmp.
Une fois dans less
, vous pouvez appuyer sur F entrer en mode suivi mais maintenant Ctrl+C ne tue pas le serveur, il n'arrêtera que la suite. Vous pouvez maintenant faire défiler à votre guise et appuyer sur F reprendre après.
Il semble que vous ne soyez normalement pas censé quitter le mode "Transférer à jamais". C'est ainsi que le manuel man less
nomme le mode que vous avez activé lorsque vous appuyez sur Shift+F.
Cependant, j'ai trouvé un petit truc sale comment revenir à la normale quand même. Cependant, il va brièvement figer la commande. Je ne sais donc pas si cela conviendrait à votre serveur, qui devrait probablement fonctionner sans interruption.
Quoi qu'il en soit, voici le truc:
Je suppose que vous avez démarré node server.js | less
déjà et que vous avez appuyé sur Shift+F pour entrer dans le mode "Transférer à jamais". less
ne réagit plus à aucune pression de touche.
Dans cet état, vous pouvez appuyer sur Ctrl+C pour tuer le processus serveur et pouvoir quitter less
en appuyant sur Q (ce qui, pour une raison quelconque, laissera la commande en tant que processus arrêté dans votre liste de tâches - vous devez exécuter fg
pour la poursuivre et la laisser se terminer complètement par la suite), mais il s’agit de et non ce que nous voulons.
Au lieu de cela, vous pouvez également appuyer sur Ctrl+Z pour arrêter ("geler") la commande et revenir à votre invite du shell. Maintenant, tapez rapidement la commande Shell fg
(" f ou g round" ) pour laisser la commande continuer à courir en avant-plan. Notez que votre processus serveur node
est également suspendu pendant cette courte période. Vous devez vous demander si cela est acceptable ou non.
Alors maintenant, less
est de nouveau au premier plan comme avant, non? Oui, mais comme par magie, il n’est plus en mode "Transférer à jamais". Vous pouvez utiliser par exemple les touches fléchées à nouveau pour faire défiler de haut en bas.
Malheureusement, less
semble avoir complètement arrêté la mise à jour de son tampon, vous pouvez uniquement faire défiler l'écran jusqu'à la ligne sur laquelle vous avez gelé la commande plus tôt. Le serveur node
est toujours en cours d’exécution et produit une sortie. Il suffit juste d’obtenir less
pour se régénérer.
Le moyen le plus simple que j'ai trouvé est simplement d'ouvrir l'écran d'aide less
'et de le refermer en appuyant sur les touches H et Q séquentiellement. Maintenant, tout semble bien fonctionner à nouveau.
Cependant, la solution la plus propre consiste probablement à suivre réponse de terdon et à rediriger la sortie vers un fichier temporaire, en utilisant less
pour surveiller le fichier.
Comme votre question le dit:
Ce serveur est connecté au terminal, pas dans un fichier.
Je suppose que vous ne voulez pas utiliser un fichier journal (temporaire), peut-être que votre journal est énorme ou pour une raison quelconque.
fifo
.Ce que j’ai pensé, c’est d’utiliser un named pipe file
également appelé fichier fifo
, ce fichier ne sera utilisé que pour canaliser moins vos journaux et rien ne sera sauvegardé dessus.
Commencez par créer un fifo file
:
mkfifo mylog
Exécutez votre serveur et redirigez les journaux vers ce fichier:
node server.js > mylog &
Utilisez less pour lire vos journaux (-f oblige less à lire ce fichier spécial):
less -f mylog
Maintenant vous pouvez utiliser shift+F à suivre, et CTRL+C pour arrêter le suivi, mais le serveur est toujours en marche, vous pouvez suivre la sortie à nouveau avec shift+F.
Plan de sauvegarde: S'il a arrêté votre serveur, il suffit de placer votre commande (node server.js > mylog &
) dans un fichier, par exemple: server.sh
, puis au lieu d'exécuter node server.js > mylog &
, exécutez: bash server.sh > mylog &
, puis exécutez le less -f mylog
.