GNU/Linux >> Tutoriels Linux >  >> Linux

Démarrer un processus sur un autre téléscripteur ?

Après environ une heure de recherche sur Google, je ne peux pas croire personne n'a posé cette question avant…

J'ai donc un script en cours d'exécution sur TTY1. Comment puis-je faire en sorte que ce script lance un programme arbitraire sur TTY2 ?

  • J'ai trouvé tty , qui vous indique sur quel ATS vous êtes actuellement.
  • J'ai trouvé writevt , qui écrit une seule ligne de texte sur un ATS différent.
  • J'ai trouvé chvt , ce qui modifie le TTY actuellement affiché.

Je ne veux pas afficher ATS2. Je veux juste que le script principal continue à s'exécuter normalement, mais si je passe manuellement à TTY2, je peux interagir avec le deuxième programme.

Réponse acceptée :

setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'

Tant que rien d'autre n'utilise l'autre TTY (/dev/tty2 dans cet exemple), cela devrait fonctionner. Cela inclut un getty processus qui peut attendre que quelqu'un se connecte ; avoir plus d'un processus lisant son entrée à partir d'un TTY va conduire à des résultats inattendus.

setsid se charge de lancer la commande dans une nouvelle session.

Notez que command devra prendre soin de définir le stty réglages corrects, par ex. activer le "mode cuit" et onlcr de sorte que la sortie d'une nouvelle ligne ajoutera un retour chariot, etc.


Linux
  1. Comment déterminer quel processus crée un fichier ? ?

  2. Quel processus a le Pid 0 ?

  3. Comment déterminer quel processus écrit sur le disque sous Linux

  4. Impossible de démarrer le service postgresql sur CentOS 7

  5. Quel processus mange des ptys sur mon serveur Linux ?

Java ProcessBuilder :blocages de processus résultants

Comment démarrer un processus dans son propre groupe de processus ?

Comment puis-je savoir quel processus utilise swap?

Comment trouver quel processus provoque une utilisation élevée du processeur

Comment un processus peut-il apparaître comme ayant un nom différent dans la sortie ps ?

Déterminez dans quel(s) groupe(s) se trouve un processus en cours d'exécution ?