0
votes

Version imprimée au terminal

Quelqu'un peut-il savoir s'il est possible d'imprimer deux commandes echo d'un script sur le même terminal? Le problème est que le script qui devrait imprimer sur le terminal est automatiquement exécuté par un service SystemD .

J'ai déjà découvert qu'il est possible d'ouvrir un terminal et de le laisser exécuter des commandes comme ceci:

konsole -e commande

Cependant, cela ouvrira un nouveau terminal pour chaque commande et je le souhaite que tous sont exécutés dans le même terminal.

genre Cordialement Pepsilon


2 commentaires

peut-être rediriger vers le tty . Comme echo bonjour> $ (tty) . Suggestion non testée


Mettez ce dont vous avez besoin dans un script et l'utilisation Konsole -E / chemin de chemin / à / myscript ? Ou peut-être que vous pouvez l'aligner avec konsole -e 'echo un; echo deux '? Bonne chance.


3 Réponses :


0
votes

Le problème est que le script qui devrait imprimer sur le terminal est automatiquement exécuté par un service SystemD.

... et, à cause de cela, il n'y a pas de terminal associé: généralement, les services système écrivent à des fichiers journaux et non terminaux.

Mais, vous pouvez rediriger des échos à la console (/ dev / console), qui est destiné à être le seul terminal "toujours présent". Sinon, vous pouvez rediriger vers n'importe quel terminal que vous connaissez est là - je veux dire des choses telles / dev / ttys0 ou similaires, si vous savez ce que vous faites (et votre script a la permission de le faire). Dans un environnement graphique, il peut y avoir n'importe quoi, par exemple mon système compte environ 4 terminaux de texte pouvant être visualisés en appuyant sur Ctrl-Alt-F1 / 2/3 et ainsi de suite.


0 commentaires

0
votes

mettre un côté la question sur la manière de gérer les situations lorsqu'il n'y a pas de session de terminal / x qui peut être utilisé pour capturer le journal. Ceux-ci peuvent être traités en testant la disponibilité x / terminal et en retomprant le fichier journal.

Chaque terminal est connecté à une pseudo-terminale unique (PTY), généralement / dev / pts / 0, / dev / pts / 1, ... ,. Tout ce qui est envoyé à la PTY sera affiché sur le terminal (Konsole, Gnome-Terminal, Xterm, ...).

Vous pouvez construire une solution en utilisant ce qui suit

  • Lancez le terminal avec une commande:
    • konsole -e '(tty; echo $$)> / tmp / actif_tty; tandis que vrai; dormir 600; Date ; fait '& .
    • forçant efficacement le terminal pour rester jusqu'à fermé / tué.
    • Le fichier capturera TTY nom et PID
    • peut utiliser Gnome-Terminal, Xterm, ...
    • Chaque processus qui souhaite envoyer une sortie à la borne de journalisation "actuelle" doit rediriger stdout et / ou stardr sur celui nommé dans le fichier:
      • exécuté> $ (tête -1 / tmp / actif_tty) 2> & 1 ou similaire

        La ligne PID peut être utilisée pour implémenter un chèque si le terminal PID est toujours en marche, si nécessaire.


0 commentaires

0
votes

Je propose à l'aide d'un tuyau nommé créé avec mktemp dans l'espace des fichiers temporaires. Notez que mktemp -u est légèrement dangereux.

Je m'aidais avec Comment éviter Echo Clôture FIFO Named Tipes? - Comportement drôle d'UNIX FIFOS avec ce queue -f : xxx


0 commentaires